Поделиться через


структура 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

Указывает номер этого устройства. Это значение равно 0xFFFFFFFF (-1) для дисков, представляющих физические пути к диску MPIO.

DeviceGuid

Глобальный уникальный идентификационный номер для этого устройства. Идентификатор GUID {0} указывает, что не удалось создать GUID. Guid основан на информации об оборудовании, которая не изменяется при обновлении встроенного ПО; например, серийный номер можно использовать для формирования GUID, но не редакции встроенного ПО.

PartitionNumber

Указывает номер секции устройства, возвращаемого в этом элементе, если устройство может быть секционировано. В противном случае возвращается значение -1.

Комментарии

Запрос IOCTL_STORAGE_GET_DEVICE_NUMBER_EX обычно отправляется отказоустойчивым драйвером диска.

Как правило, если устройство предоставляет глобальный уникальный идентификатор, драйвер хранилища будет использовать этот идентификатор для формирования GUID. В противном случае драйвер хранилища объединит идентификатор поставщика устройства, идентификатор продукта и серийный номер для создания GUID.

Если драйвер хранилища обнаруживает два устройства с одинаковыми сведениями об оборудовании (что свидетельствует о проблеме с устройством), драйвер создает случайный GUID для одного из двух устройств. При обработке IOCTL_STORAGE_GET_DEVICE_NUMBER_EX для устройства со случайным GUID драйвер добавляет STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT в элемент Flags этой структуры.

Если запоминающее устройство не предоставляет никаких идентифицирующие сведения, драйвер создаст случайный GUID и добавит STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID к элементу Flags этой структуры.

Если установлен флаг STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID, deviceguid был создан на основе данных SCSI page83. Если этот флаг не задан, это означает, что он был создан из серийного номера или был создан случайным образом.

Значения в структуре STORAGE_DEVICE_NUMBER_EX гарантированно останутся неизменными до перезагрузки системы. Они не гарантируют, что они будут постоянными в сапогах. Идентификатор GUID устройства остается неизменным при перезагрузках. Случайный GUID не сохраняется и не будет совпадать после перезагрузки.

Требования

Требование Значение
Заголовок ntddstor.h (включая Ntddstor.h)

См. также раздел

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX