STORAGE_PROTOCOL_COMMAND Struktur (ntddstor.h)
Diese Struktur wird mit dem IOCTL_STORAGE_PROTOCOL_COMMAND Pass-Through-Mechanismus verwendet, der einen anbieterspezifischen Protokollbefehl auf 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;
Angehörige
Version
Die Version dieser Struktur. Legen Sie dies auf STORAGE_PROTOCOL_STRUCTURE_VERSIONfest.
Length
Die Größe dieser Struktur. Legen Sie dies auf sizeof(STORAGE_PROTOCOL_COMMAND) fest.
ProtocolType
Der Protokolltyp.
Flags
Für diese Anforderung festgelegte Kennzeichnungen. Es folgen gültige Flags.
Flagge | Beschreibung |
---|---|
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST | Dieses Kennzeichen gibt die Anforderung an, anstelle des Geräts einen Adapter als Ziel zu verwenden. |
ReturnStatus
Der Status der Anforderung, die an das Speichergerät gestellt wurde. Mögliche Werte, die zurückgegeben werden können, sind in Windows 10:
Statuswert | Beschreibung |
---|---|
STORAGE_PROTOCOL_STATUS_PENDING | Die Anforderung steht aus. |
STORAGE_PROTOCOL_STATUS_SUCCESS | Die Anforderung wurde erfolgreich abgeschlossen. |
STORAGE_PROTOCOL_STATUS_ERROR | Fehler bei der Anforderung. |
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 ausgelastet, wenn die Anforderung ausgeführt wird. |
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN | Das Gerät hat beim Handeln auf der Anforderung einen Datenüberlauf festgestellt. |
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 Byte. Der Aufrufer muss dies auf einen Wert ungleich Null festlegen.
ErrorInfoLength
Die Länge des ErrorCode- Puffers in Byte. 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 die Anzeigedauer abgeht. Dies wird in Sekundeneinheiten festgelegt.
ErrorInfoOffset
Der Offset des ErrorCode- Puffers. Dies muss zeigerbündig ausgerichtet sein.
DataToDeviceBufferOffset
Der Offset des Puffers, der auf das Gerät übertragen werden soll. Dies muss zeigerbündig ausgerichtet 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 ausgerichtet sein und wird nur mit einer READ-Anforderung verwendet.
CommandSpecific
Zusätzliche befehlsspezifische Daten, die zusammen mit Commandübergeben werden. Dies hängt vom Befehl vom Treiber ab und ist optional festgelegt.
Reserved0
Reserviert für die zukünftige Verwendung.
FixedProtocolReturnData
Die Rückgabedaten. Dies ist optional festgelegt. Einige Protokolle wie NVMe können eine kleine Datenmenge (DWORD0 aus dem Eintrag in der Abschlusswarteschlange) zurückgeben, ohne dass eine separate Gerätedatenübertragung erforderlich ist.
FixedProtocolReturnData2
Die Rückgabedaten2. Dies ist optional festgelegt. Einige Protokolle wie NVMe können eine kleine Menge (DWORD1 aus dem Eintrag in der Abschlusswarteschlange) zurückgeben, ohne dass separate Gerätedaten übertragen werden müssen.
Reserved1[2]
Reserviert für die zukünftige Verwendung.
Command[ANYSIZE_ARRAY]
Der herstellerspezifische Befehl, der an das Gerät übergeben werden soll.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10 |
mindestens unterstützte Server- | Windows Server 2016 |
Header- | ntddstor.h (include Ntddstor.h) |