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


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

Общий размер этой структуры, включая дополнительные данные. В настоящее время этот параметр всегда будет иметь значение размер(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, устройство было создано на основе данных SCSI page83. Если этот флаг не задан, это означает, что он был создан из серийного номера или был случайно создан.

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

Требования

Требование Ценность
заголовка ntddstor.h (include Ntddstor.h)

См. также

IOCTL_STORAGE_GET_DEVICE_NUMBER_EX