STORAGE_PROTOCOL_COMMAND-Struktur (ntddstor.h)
Diese Struktur wird mit dem IOCTL_STORAGE_PROTOCOL_COMMAND Passthroughmechanismus verwendet, der einen anbieterspezifischen Protokollbefehl für ein Speichergerät ausgibt.
Syntax
typedef struct _STORAGE_PROTOCOL_COMMAND {
ULONG Version;
ULONG Length;
STORAGE_PROTOCOL_TYPE ProtocolType;
ULONG Flags;
ULONG ReturnStatus;
ULONG ErrorCode;
ULONG CommandLength;
ULONG ErrorInfoLength;
ULONG DataToDeviceTransferLength;
ULONG DataFromDeviceTransferLength;
ULONG TimeOutValue;
ULONG ErrorInfoOffset;
ULONG DataToDeviceBufferOffset;
ULONG DataFromDeviceBufferOffset;
ULONG CommandSpecific;
ULONG Reserved0;
ULONG FixedProtocolReturnData;
ULONG FixedProtocolReturnData2;
ULONG Reserved1[2];
UCHAR Command[ANYSIZE_ARRAY];
} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND;
Member
Version
Die Version dieser Struktur. Legen Sie dies auf STORAGE_PROTOCOL_STRUCTURE_VERSION fest.
Length
Die Größe dieser Struktur. Legen Sie dies auf sizeof(STORAGE_PROTOCOL_COMMAND) fest.
ProtocolType
Der Protokolltyp.
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
Der status der Anforderung, die an das Speichergerät gestellt wird. In Windows 10 können folgende Werte zurückgegeben werden:
Statuswert | BESCHREIBUNG |
---|---|
STORAGE_PROTOCOL_STATUS_PENDING | Die Anforderung ist ausstehend. |
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 verfügbar, um eine Anforderung zu stellen. |
STORAGE_PROTOCOL_STATUS_BUSY | Das Gerät ist damit beschäftigt, auf die Anforderung zu reagieren. |
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN | Das Gerät ist beim Ausführen der Anforderung auf einen Datenüberlauf gestoßen. |
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 busspezifische Protokollfehlercode, der für diese Anforderung zurückgegeben werden soll. Dies ist optional festgelegt.
CommandLength
Die Länge des Befehls in Bytes. Der Aufrufer muss diesen Wert auf einen Wert ungleich 0 festlegen.
ErrorInfoLength
Die Länge des ErrorCode-Puffers in Bytes. Dies ist optional festgelegt und kann auf 0 festgelegt werden.
DataToDeviceTransferLength
Die Größe des Puffers, der auf das Gerät übertragen werden soll.
DataFromDeviceTransferLength
Die Größe des Puffers, der vom Gerät übertragen werden soll.
TimeOutValue
Gibt an, wie lange auf das Gerät gewartet werden soll, bis das Zeitlimit unterbrochen wird. Dies wird in Sekundeneinheiten festgelegt.
ErrorInfoOffset
Der Offset des ErrorCode-Puffers . Dies muss auf 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 auf Zeiger ausgerichtet sein und wird nur mit einer READ-Anforderung verwendet.
CommandSpecific
Zusätzliche befehlsspezifische Daten, die mit Command übergeben werden. Dies hängt vom Befehl des Treibers ab und ist optional festgelegt.
Reserved0
Für die zukünftige Verwendung reserviert.
FixedProtocolReturnData
Die zurückgegebenen Daten. Dies ist optional festgelegt. Einige Protokolle wie NVMe können eine kleine Menge an Daten (DWORD0 aus dem Eintrag in die Vervollständigungswarteschlange) zurückgeben, ohne dass eine separate Gerätedatenübertragung erforderlich ist.
FixedProtocolReturnData2
Gibt daten2 zurück. Dies ist optional festgelegt. Einige Protokolle wie NVMe geben möglicherweise eine kleine Menge Daten (DWORD1 aus dem Eintrag in die Vervollständigungswarteschlange) zurück, ohne dass eine separate Gerätedatenübertragung erforderlich ist.
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 | ntddstor.h (include Ntddstor.h) |