STORAGE_DEVICE_DESCRIPTOR結構 (ntddstor.h)
STORAGE_DEVICE_DESCRIPTOR 結構會與 IOCTL_STORAGE_QUERY_PROPERTY 要求搭配使用,以擷取裝置的儲存裝置描述元數據。
typedef struct _STORAGE_DEVICE_DESCRIPTOR {
ULONG Version;
ULONG Size;
UCHAR DeviceType;
UCHAR DeviceTypeModifier;
BOOLEAN RemovableMedia;
BOOLEAN CommandQueueing;
ULONG VendorIdOffset;
ULONG ProductIdOffset;
ULONG ProductRevisionOffset;
ULONG SerialNumberOffset;
STORAGE_BUS_TYPE BusType;
ULONG RawPropertiesLength;
UCHAR RawDeviceProperties[1];
} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
Version
表示 STORAGE_DEVICE_DESCRIPTOR 結構的大小。 當成員加入結構時,這個成員的值將會變更。
Size
以位元組為單位指定描述項的總大小,包括附加至 結構的標識符字串。
DeviceType
指定小型電腦系統介面 (SCSI) 規格所定義的裝置類型。
DeviceTypeModifier
指定裝置類型修飾詞,如果有的話,如 SCSI 規格所定義。 如果沒有任何裝置類型修飾詞存在,則此成員為零。
RemovableMedia
指出當 TRUE 裝置的媒體(如果有的話)是可移動的。 如果裝置沒有媒體,則應該忽略此成員。 當 FALSE 裝置的媒體不是可移動的。
CommandQueueing
指出當 TRUE 裝置支援多個未處理的命令(SCSI 標記佇列或對等命令)。 當 FALSE時,裝置不支援 SCSI 標記的佇列或對等專案。 STORPORT 驅動程式負責同步處理命令。
VendorIdOffset
指定從 結構開頭到包含裝置廠商標識碼的 NULL終止 ASCII 字串的位元移。 如果裝置沒有廠商標識碼,則此成員為零。
ProductIdOffset
指定結構開頭到包含裝置產品標識碼之 NULL終止 ASCII 字串的位元組位移。 如果裝置沒有產品標識碼,則此成員為零。
ProductRevisionOffset
指定結構開頭到包含裝置產品修訂字串的 NULL終止 ASCII 字串的位元移。 如果裝置沒有產品修訂字串,則此成員為零。
SerialNumberOffset
指定結構開頭到包含裝置序號之 NULL終止 ASCII 字串的位元組位移。 如果裝置沒有序號,則此成員為零。
BusType
指定類型為 STORAGE_BUS_TYPE 的列舉值,指出裝置所連接的總線類型。 這應該用來解譯這個結構結尾的原始裝置屬性(如果有的話)。
RawPropertiesLength
指出已附加至這個描述元之總線特定數據的位元組數目。
RawDeviceProperties[1]
包含長度為一的陣列,做為總線特定屬性數據第一個字節的位置持有者。
應用程式和儲存類別驅動程式會發出具有 I/O 控制程式代碼的裝置控制要求,IOCTL_STORAGE_QUERY_PROPERTY 擷取此結構,其中包含目標裝置的相關信息。 結構只能從 FDO 擷取;嘗試從配接器擷取裝置屬性會造成錯誤。
應用程式或驅動程式可以藉由將擷取的 STORAGE_DEVICE_DESCRIPTOR 結構轉換成 STORAGE_DESCRIPTOR_HEADER來判斷所需的緩衝區大小,該結構只包含 Version 和 Size。
要求 | 價值 |
---|---|
標頭 | ntddstor.h (include Ntddstor.h) |