Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структура 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) |