共用方式為


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新增至此結構 旗標 成員。

如果已設定STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID旗標,則會從 SCSI 頁面83 數據建立 deviceguid。 如果未設定此旗標,這表示它是從序號建立或隨機產生的。

STORAGE_DEVICE_NUMBER_EX 結構中的值保證會維持不變,直到系統重新啟動為止。 它們不保證會在開機時持續運作。 裝置 GUID 在重新啟動時維持不變。 隨機 GUID 不會保存,而且重新啟動後不會相同。

要求

要求 價值
標頭 ntddstor.h (include Ntddstor.h)

另請參閱

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX