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