struktur STORAGE_PROTOCOL_COMMAND (ntddstor.h)
Struktur ini digunakan dengan mekanisme pass-through IOCTL_STORAGE_PROTOCOL_COMMAND yang mengeluarkan perintah protokol khusus vendor ke perangkat penyimpanan.
Sintaks
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;
Anggota
Version
Versi struktur ini. Atur ini menjadi STORAGE_PROTOCOL_STRUCTURE_VERSION.
Length
Ukuran struktur ini. Atur ini ke sizeof(STORAGE_PROTOCOL_COMMAND).
ProtocolType
Jenis protokol.
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 dapat dikembalikan 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 protokol khusus bus untuk kembali untuk permintaan ini. Ini secara opsional diatur.
CommandLength
Panjang perintah, dalam byte. Penelepon harus mengatur ini ke nilai bukan nol.
ErrorInfoLength
Panjang buffer ErrorCode , dalam byte. Ini secara opsional diatur dan dapat diatur ke 0.
DataToDeviceTransferLength
Ukuran buffer yang akan ditransfer ke perangkat.
DataFromDeviceTransferLength
Ukuran buffer ini akan ditransfer dari perangkat.
TimeOutValue
Menentukan berapa lama menunggu perangkat hingga waktu habis. Ini diatur dalam satuan detik.
ErrorInfoOffset
Offset buffer ErrorCode . 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 tambahan yang diteruskan bersama dengan Command. 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
Data yang dikembalikan2. Ini secara opsional diatur. Beberapa protokol seperti NVMe, dapat mengembalikan data dalam jumlah kecil (DWORD1 dari entri antrean penyelesaian) tanpa perlu transfer data perangkat terpisah.
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 | ntddstor.h (termasuk Ntddstor.h) |