IOCTL_STORAGE_QUERY_PROPERTY IOCTL (ntddstor.h)
Драйвер может использовать IOCTL_STORAGE_QUERY_PROPERTY для возврата свойств устройства хранилища или адаптера. Запрос указывает тип полученной информации, например данные запроса для устройства или возможностей и ограничений адаптера. IOCTL_STORAGE_QUERY_PROPERTY также можно использовать для определения того, поддерживает ли драйвер порта определенное свойство или какие поля дескриптора свойств можно изменить с последующим запросом на изменение свойства.
Основной код
Входной буфер
Parameters.DeviceIoControl.InputBufferLength указывает размер буфера параметров в Irp->AssociatedIrp.SystemBuffer, который должен быть >= размер(STORAGE_PROPERTY_QUERY).
Irp->AssociatedIrp.SystemBuffer содержит STORAGE_PROPERTY_QUERY данные, указывающие, следует ли запрашивать устройство или адаптер, тип запроса и любые дополнительные параметры, необходимые для запроса, например код страницы для определенной страницы SCSI. Свойства устройства должны извлекаться только с устройства; Попытка получить свойства устройства из адаптера приведет к ошибке.
Parameters.DeviceIoControl.OutputBufferLength указывает количество байтов, которые можно записать в Irp->AssociatedIrp.SystemBuffer. OutputBufferLength может быть нулевым, чтобы определить, существует ли свойство без получения своих данных.
Длина входного буфера
Parameters.DeviceIoControl.InputBufferLength указывает размер буфера параметров в Irp->AssociatedIrp.SystemBuffer, который должен быть >= размер(STORAGE_PROPERTY_QUERY).
Выходной буфер
Драйвер возвращает данные запроса к буферу в Irp->AssociatedIrp.SystemBuffer. Различные объемы данных, относящихся к шине, могут быть добавлены в структуру.
Длина выходного буфера
Приведите структуру, возвращенную в STORAGE_DESCRIPTOR_HEADER, и проверьте его размер, чтобы определить количество байтов, необходимых структуре.
Блок состояния
В поле Information задано количество возвращаемых байтов. Поле состояния имеет значение STATUS_SUCCESS или, возможно, STATUS_INVALID_DEVICE_REQUEST, STATUS_INVALID_PARAMETER или STATUS_NOT_SUPPORTED.
Требования
Требование | Ценность |
---|---|
заголовка | ntddstor.h (include Ntddstor.h) |