структура STORAGE_DEVICE_DESCRIPTOR (ntddstor.h)
Структура STORAGE_DEVICE_DESCRIPTOR используется вместе с запросом IOCTL_STORAGE_QUERY_PROPERTY для получения данных дескриптора устройства хранилища для устройства.
Синтаксис
typedef struct _STORAGE_DEVICE_DESCRIPTOR {
ULONG Version;
ULONG Size;
UCHAR DeviceType;
UCHAR DeviceTypeModifier;
BOOLEAN RemovableMedia;
BOOLEAN CommandQueueing;
ULONG VendorIdOffset;
ULONG ProductIdOffset;
ULONG ProductRevisionOffset;
ULONG SerialNumberOffset;
STORAGE_BUS_TYPE BusType;
ULONG RawPropertiesLength;
UCHAR RawDeviceProperties[1];
} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
Члены
Version
Указывает размер структуры STORAGE_DEVICE_DESCRIPTOR. Значение этого элемента изменится по мере добавления элементов в структуру.
Size
Указывает общий размер дескриптора в байтах, включая строки идентификаторов, которые добавляются в структуру.
DeviceType
Указывает тип устройства, определенный спецификацией SCSI.
DeviceTypeModifier
Указывает модификатор типа устройства, если он есть, как определено спецификацией SCSI. Если модификатор типа устройства не существует, этот элемент равен нулю.
RemovableMedia
Указывает, когда TRUE, что носитель устройства (при наличии) является съемным. Если устройство не имеет носителя, этот элемент следует игнорировать. Если FALSE носитель устройства не является съемным.
CommandQueueing
Указывает, когда TRUE, что устройство поддерживает несколько невыполненных команд (SCSI, помеченные в очереди или эквивалентные). Если FALSE, устройство не поддерживает очередь с тегами SCSI или эквивалентно. Драйвер STORPORT отвечает за синхронизацию команд.
VendorIdOffset
Указывает смещение байтов от начала структуры к строке ASCII, которая содержит идентификатор поставщика устройства, NULL. Если у устройства нет идентификатора поставщика, этот элемент равен нулю.
ProductIdOffset
Указывает смещение байтов от начала структуры к строке ASCII, которая содержит идентификатор продукта устройства, NULL. Если у устройства нет идентификатора продукта, этот элемент равен нулю.
ProductRevisionOffset
Указывает смещение байтов от начала структуры до строки NULL-terminated ASCII, которая содержит строку редакции продукта устройства. Если у устройства нет строки редакции продукта, этот элемент равен нулю.
SerialNumberOffset
Указывает смещение байтов от начала структуры к строке ASCII с NULL-завершенной строкой ASCII, содержащей серийный номер устройства. Если у устройства нет серийного номера, этот элемент равен нулю.
BusType
Указывает значение перечислителя типа STORAGE_BUS_TYPE, указывающее тип шины, к которой подключено устройство. Это следует использовать для интерпретации необработанных свойств устройства в конце этой структуры (если таковые есть).
RawPropertiesLength
Указывает количество байтов данных, которые были добавлены к этому дескриптору.
RawDeviceProperties[1]
Содержит массив длины, который служит владельцем места для первого байта данных конкретного свойства шины.
Замечания
Приложения и драйверы классов хранилища выдают запрос на управление устройствами с кодом управления ввода-вывода IOCTL_STORAGE_QUERY_PROPERTY для получения этой структуры, содержащей сведения о целевом устройстве. Структура может быть получена только из FDO; При попытке получить свойства устройства из адаптера возникает ошибка.
Приложение или драйвер может определить требуемый размер буфера путем приведения полученной структуры STORAGE_DEVICE_DESCRIPTOR к STORAGE_DESCRIPTOR_HEADER, которая содержит только версии и размер.
Требования
Требование | Ценность |
---|---|
заголовка | ntddstor.h (include Ntddstor.h) |