структура STORAGE_DEVICE_NUMBER_EX (ntddstor.h)

Структура STORAGE_DEVICE_NUMBER_EX используется в сочетании с запросом IOCTL_STORAGE_GET_DEVICE_NUMBER_EX для получения типа устройства FILE_DEVICE_XXXX , номера устройства, 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_XXXX , указывающих тип устройства (например, 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 к члену флагов этой структуры.

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

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

Требования

   
Заголовок ntddstor.h (include Ntddstor.h)

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

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX