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) |