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)

另请参阅

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX