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新增至此結構 旗標 成員。
如果已設定STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID旗標,則會從 SCSI 頁面83 數據建立 deviceguid。 如果未設定此旗標,這表示它是從序號建立或隨機產生的。
STORAGE_DEVICE_NUMBER_EX 結構中的值保證會維持不變,直到系統重新啟動為止。 它們不保證會在開機時持續運作。 裝置 GUID 在重新啟動時維持不變。 隨機 GUID 不會保存,而且重新啟動後不會相同。
要求
要求 | 價值 |
---|---|
標頭 | ntddstor.h (include Ntddstor.h) |