Freigeben über


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)

Siehe auch