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                 Reserved1[3];
  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, z. B. NVMe, geben möglicherweise eine kleine Menge an Daten (DWORD0 aus dem Eintrag in die Vervollständigungswarteschlange) zurück, ohne dass eine separate Gerätedatenübertragung erforderlich ist.

Reserved1[3]

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)

Weitere Informationen

IOCTL_STORAGE_PROTOCOL_COMMAND