struktur STORAGE_PROTOCOL_COMMAND (winioctl.h)

Struktur ini digunakan sebagai buffer input saat menggunakan mekanisme pass-through untuk mengeluarkan perintah khusus vendor ke perangkat penyimpanan (melalui IOCTL_STORAGE_PROTOCOL_COMMAND).

Sintaks

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;

Anggota

Version

Versi struktur ini. Ini harus diatur ke STORAGE_PROTOCOL_STRUCTURE_VERSION.

Length

Ukuran struktur ini. Ini harus diatur ke sizeof(STORAGE_PROTOCOL_COMMAND).

ProtocolType

Jenis protokol, jenis STORAGE_PROTOCOL_TYPE.

Flags

Bendera diatur untuk permintaan ini. Berikut ini adalah bendera yang valid.

Bendera Deskripsi
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST Bendera ini menunjukkan permintaan untuk menargetkan adaptor alih-alih perangkat.

ReturnStatus

Status permintaan yang dibuat ke perangkat penyimpanan. Dalam Windows 10, nilai yang mungkin meliputi:

Nilai status Deskripsi
STORAGE_PROTOCOL_STATUS_PENDING Permintaan tertunda.
STORAGE_PROTOCOL_STATUS_SUCCESS Permintaan berhasil diselesaikan.
STORAGE_PROTOCOL_STATUS_ERROR Permintaan mengalami kesalahan.
STORAGE_PROTOCOL_STATUS_INVALID_REQUEST Permintaan tidak valid.
STORAGE_PROTOCOL_STATUS_NO_DEVICE Perangkat tidak tersedia untuk mengajukan permintaan.
STORAGE_PROTOCOL_STATUS_BUSY Perangkat sibuk bertindak berdasarkan permintaan.
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN Perangkat mengalami overrun data saat bertindak berdasarkan permintaan.
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES Perangkat tidak dapat menyelesaikan permintaan karena sumber daya yang tidak mencukup.
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED Permintaan tidak didukung.

ErrorCode

Kode kesalahan untuk permintaan ini. Ini secara opsional diatur.

CommandLength

Panjang perintah. Nilai bukan nol harus ditetapkan oleh pemanggil.

ErrorInfoLength

Panjang buffer kesalahan. Ini secara opsional diatur dan dapat diatur ke 0.

DataToDeviceTransferLength

Ukuran buffer yang akan ditransfer ke perangkat. Ini hanya digunakan dengan permintaan WRITE.

DataFromDeviceTransferLength

Ukuran buffer ini akan ditransfer dari perangkat. Ini hanya digunakan dengan permintaan READ.

TimeOutValue

Berapa lama menunggu perangkat hingga waktu habis. Ini diatur dalam satuan detik.

ErrorInfoOffset

Offset buffer kesalahan. Ini harus selaras dengan penunjuk.

DataToDeviceBufferOffset

Offset buffer yang akan ditransfer ke perangkat. Ini harus selaras dengan pointer dan hanya digunakan dengan permintaan WRITE.

DataFromDeviceBufferOffset

Offset buffer yang akan ditransfer dari perangkat. Ini harus selaras dengan pointer dan hanya digunakan dengan permintaan READ.

CommandSpecific

Data khusus perintah diteruskan bersama dengan perintah . Ini tergantung pada perintah dari driver, dan secara opsional diatur.

Reserved0

Disiapkan untuk penggunaan masa mendatang.

FixedProtocolReturnData

Data yang dikembalikan. Ini secara opsional diatur. Beberapa protokol seperti NVMe, dapat mengembalikan sejumlah kecil data (DWORD0 dari entri antrean penyelesaian) tanpa perlu transfer data perangkat terpisah.

FixedProtocolReturnData2

Reserved1[2]

Disiapkan untuk penggunaan masa mendatang.

Command[ANYSIZE_ARRAY]

Perintah khusus vendor yang akan diteruskan ke perangkat.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10
Server minimum yang didukung Server Windows 2016
Header winioctl.h (termasuk Windows.h)

Lihat juga

IOCTL_STORAGE_PROTOCOL_COMMAND