STORAGE_DEVICE_NUMBER_EX 結構 (ntddstor.h)
STORAGE_DEVICE_NUMBER_EX 結構會與 IOCTL_STORAGE_GET_DEVICE_NUMBER_EX 要求搭配使用,以擷取FILE_DEVICE_XXX 裝置類型、裝置號碼、裝置 GUID,以及可分割的裝置,在驅動程序啟動時指派給裝置的數據分割編號。
語法
typedef struct _STORAGE_DEVICE_NUMBER_EX {
ULONG Version;
ULONG Size;
ULONG Flags;
DEVICE_TYPE DeviceType;
ULONG DeviceNumber;
GUID DeviceGuid;
ULONG PartitionNumber;
} STORAGE_DEVICE_NUMBER_EX, *PSTORAGE_DEVICE_NUMBER_EX;
成員
Version
這個結構的版本。 將會設定為 sizeof (STORAGE_DEVICE_NUMBER_EX) 。
Size
此結構的大小總計,包括任何其他數據。 目前,這一律會設定為 sizeof (STORAGE_DEVICE_NUMBER_EX) 。
Flags
可以是STORAGE_DEVICE_FLAGS_XXX旗標的組合,可提供此結構成員的詳細資訊。 如需詳細資訊 ,請參閱 。
DeviceType
指定其中一個系統定義的FILE_DEVICE_XXX 常數,指出裝置類型 (,例如FILE_DEVICE_DISK) 或新类型装置的厂商定义值。 只有磁碟裝置才支援此 IOCTL。 如需詳細資訊,請參閱 指定裝置類型。
DeviceNumber
指出此裝置的數目。 此值會設定為代表 MPIO 磁碟實體路徑的磁碟0xFFFFFFFF (-1) 。
DeviceGuid
此裝置的全域唯一標識碼。 的 {0} GUID 表示無法產生 GUID。 GUID 是以未隨著韌體更新變更的硬體資訊為基礎;例如,序號可用來形成 GUID,但無法形成韌體修訂。
PartitionNumber
指出此成員中傳回裝置的分割區編號,如果裝置可以分割。 否則會傳回 -1。
備註
IOCTL_STORAGE_GET_DEVICE_NUMBER_EX要求通常是由容錯磁碟驅動程序發出。
一般而言,如果裝置公開全域唯一標識符,記憶體驅動程式將會使用該標識符來形成 GUID。 否則,記憶體驅動程式會結合裝置的廠商標識碼、產品標識碼和序號,以建立 GUID。
如果記憶體驅動程式偵測到兩個具有相同硬體資訊的裝置 (,這表示裝置) 發生問題,驅動程式將會為這兩個裝置的其中一個產生隨機 GUID。 使用隨機 GUID 處理裝置的IOCTL_STORAGE_GET_DEVICE_NUMBER_EX時,驅動程式會將STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT新增至此結構的 Flags 成員。
如果存儲設備未提供任何識別資訊,驅動程式會產生隨機 GUID,並將STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID新增至此結構的 Flags 成員。
如果已設定STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID旗標,則會從 SCSI 頁面83 數據建立 deviceguid。 如果未設定此旗標,這表示它是從序號建立,或是隨機產生。
STORAGE_DEVICE_NUMBER_EX 結構中的值保證會維持不變,直到系統重新啟動為止。 它們不保證在開機時持續存在。 裝置 GUID 在重新啟動時維持不變。 隨機 GUID 不會保存,而且在重新啟動之後不會相同。
規格需求
需求 | 值 |
---|---|
標頭 | ntddstor.h (包含 Ntddstor.h) |