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。 否则,存储驱动程序将合并设备的供应商 ID、产品 ID 和序列号来创建 GUID。
如果存储驱动程序检测到两个设备具有相同的硬件信息(这表示设备出现问题),驱动程序将为这两台设备之一生成随机 GUID。 使用随机 GUID 处理设备的IOCTL_STORAGE_GET_DEVICE_NUMBER_EX时,驱动程序会将STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT添加到此结构的 标志 成员。
如果存储设备未提供任何标识信息,驱动程序将生成随机 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 (包括 Ntddstor.h) |