STORAGE_PROTOCOL_COMMAND-Struktur (winioctl.h)
Wird als Eingabepuffer verwendet, wenn über den Pass-Through-Mechanismus ein herstellerspezifischer Befehl an ein Speichergerät gesendet wird (über IOCTL_STORAGE_PROTOCOL_COMMAND).
Syntax
typedef struct _STORAGE_PROTOCOL_COMMAND {
DWORD Version;
DWORD Length;
STORAGE_PROTOCOL_TYPE ProtocolType;
DWORD Flags;
DWORD ReturnStatus;
DWORD ErrorCode;
DWORD CommandLength;
DWORD ErrorInfoLength;
DWORD DataToDeviceTransferLength;
DWORD DataFromDeviceTransferLength;
DWORD TimeOutValue;
DWORD ErrorInfoOffset;
DWORD DataToDeviceBufferOffset;
DWORD DataFromDeviceBufferOffset;
DWORD CommandSpecific;
DWORD Reserved0;
DWORD FixedProtocolReturnData;
DWORD FixedProtocolReturnData2;
DWORD Reserved1[2];
BYTE Command[ANYSIZE_ARRAY];
} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND;
Member
Version
Die Version dieser Struktur. Dies sollte auf STORAGE_PROTOCOL_STRUCTURE_VERSION festgelegt werden.
Length
Die Größe dieser Struktur. Dies sollte auf sizeof(STORAGE_PROTOCOL_COMMAND) festgelegt werden.
ProtocolType
Der Protokolltyp vom Typ STORAGE_PROTOCOL_TYPE.
Flags
Für diese Anforderung festgelegte Flags. Im Folgenden sind gültige Flags aufgeführt.
Flag | Beschreibung |
---|---|
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST | Dieses Flag gibt die Anforderung an, einen Adapter anstelle des Geräts als Ziel zu verwenden. |
ReturnStatus
Die status der Anforderung, die an das Speichergerät gestellt wurde. In Windows 10 sind folgende Werte möglich:
Statuswert | BESCHREIBUNG |
---|---|
STORAGE_PROTOCOL_STATUS_PENDING | Die Anforderung steht aus. |
STORAGE_PROTOCOL_STATUS_SUCCESS | Die Anforderung wurde erfolgreich abgeschlossen. |
STORAGE_PROTOCOL_STATUS_ERROR | Bei der Anforderung ist ein Fehler aufgetreten. |
STORAGE_PROTOCOL_STATUS_INVALID_REQUEST | Die Anforderung ist ungültig. |
STORAGE_PROTOCOL_STATUS_NO_DEVICE | Ein Gerät ist nicht für eine Anforderung verfügbar. |
STORAGE_PROTOCOL_STATUS_BUSY | Das Gerät ist damit beschäftigt, die Anforderung zu bearbeiten. |
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN | Beim Ausführen der Anforderung ist auf dem Gerät ein Datenüberlauf aufgetreten. |
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES | Das Gerät kann die Anforderung aufgrund unzureichender Ressourcen nicht abschließen. |
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED | Die Anforderung wird nicht unterstützt. |
ErrorCode
Der Fehlercode für diese Anforderung. Dies ist optional festgelegt.
CommandLength
Die Länge des Befehls. Der Aufrufer muss einen Wert ungleich 0 festlegen.
ErrorInfoLength
Die Länge des Fehlerpuffers. Dies ist optional festgelegt und kann auf 0 festgelegt werden.
DataToDeviceTransferLength
Die Größe des Puffers, der auf das Gerät übertragen werden soll. Dies wird nur mit einer WRITE-Anforderung verwendet.
DataFromDeviceTransferLength
Die Größe des Puffers, der vom Gerät übertragen werden soll. Dies wird nur mit einer READ-Anforderung verwendet.
TimeOutValue
Gibt an, wie lange auf das Gerät gewartet werden soll, bis ein Timeout auftritt. Dies wird in Sekundeneinheiten festgelegt.
ErrorInfoOffset
Der Offset des Fehlerpuffers. Dies muss mit einem Zeiger ausgerichtet sein.
DataToDeviceBufferOffset
Der Offset des Puffers, der auf das Gerät übertragen werden soll. Dies muss zeigerbündig sein und wird nur mit einer WRITE-Anforderung verwendet.
DataFromDeviceBufferOffset
Der Offset des Puffers, der vom Gerät übertragen werden soll. Dies muss zeigerbündig sein und wird nur mit einer READ-Anforderung verwendet.
CommandSpecific
Befehlsspezifische Daten, die zusammen mit dem Befehl übergeben werden. Dies hängt vom Befehl des Treibers ab und ist optional festgelegt.
Reserved0
Für die zukünftige Verwendung reserviert.
FixedProtocolReturnData
Die Rückgabedaten. Dies ist optional festgelegt. Einige Protokolle, z. B. NVMe, geben möglicherweise eine kleine Datenmenge (DWORD0 aus dem Eintrag der Abschlusswarteschlange) zurück, ohne dass eine separate Gerätedatenübertragung erforderlich ist.
FixedProtocolReturnData2
Reserved1[2]
Für die zukünftige Verwendung reserviert.
Command[ANYSIZE_ARRAY]
Der herstellerspezifische Befehl, der an das Gerät übergeben werden soll.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Unterstützte Mindestversion (Server) | Windows Server 2016 |
Kopfzeile | winioctl.h (windows.h einschließen) |