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


Функция WdfDeviceQueryPropertyEx (wdfdevice.h)

[Применимо к KMDF и UMDF]

Метод WdfDeviceQueryPropertyEx получает указанное свойство устройства.

Синтаксис

NTSTATUS WdfDeviceQueryPropertyEx(
  [in]  WDFDEVICE                 Device,
  [in]  PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
  [in]  ULONG                     BufferLength,
  [out] PVOID                     PropertyBuffer,
  [out] PULONG                    RequiredSize,
  [out] PDEVPROPTYPE              Type
);

Параметры

[in] Device

Дескриптор объекта устройства платформы.

[in] DeviceProperty

Указатель на структуру WDF_DEVICE_PROPERTY_DATA, которая идентифицирует свойство устройства, которое требуется извлечь.

[in] BufferLength

Размер буфера в байтах, на который указывает PropertyBuffer.

[out] PropertyBuffer

Указатель на выделенный вызывающим буфером, который получает запрошенные сведения. Указатель может быть NULL, если параметр BufferLength равен нулю.

[out] RequiredSize

Указанное вызывающим расположением, которое, при возврате, содержит размер в байтах сведений, хранящихся в PropertyBuffer. Если возвращаемое значение функции STATUS_BUFFER_TOO_SMALL, это расположение получает требуемый размер буфера.

[out] Type

Указатель на переменную DEVPROPTYPE. Если метод выполнен успешно, при возврате этот параметр содержит значение типа свойства данных свойства, хранящихся в PropertyBuffer.

Возвращаемое значение

Если операция выполнена успешно, WdfDeviceQueryPropertyEx возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:

Возвращаемый код Описание
STATUS_BUFFER_TOO_SMALL
Предоставленный буфер слишком мал, чтобы получить информацию.
STATUS_INVALID_PARAMETER
Указанное значение DeviceProperty недопустимо.
 

Метод может возвращать другие значения NTSTATUS.

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Вы можете использовать WdfDeviceQueryPropertyEx для получения любого свойства, предоставляемого с помощью модели унифицированных свойств, в то время как метод WdfDeviceQueryProperty позволяет запрашивать подмножество модели унифицированных свойств.

Перед получением данных свойств устройства драйверы обычно вызывают метод WdfDeviceQueryPropertyEx только для получения требуемого размера буфера. Для некоторых свойств размер данных может измениться между возвратом требуемого размера и при вызове драйвера WdfDeviceQueryPropertyEx. Таким образом, драйверы должны вызывать WdfDeviceQueryPropertyEx внутри цикла, выполняющегося до тех пор, пока состояние возврата не STATUS_BUFFER_TOO_SMALL.

Лучше всего использовать WdfDeviceQueryPropertyEx только в том случае, если необходимый размер буфера известен и не изменялся, так как в этом случае драйвер должен вызывать WdfDeviceQueryPropertyEx только один раз. Если требуемый размер буфера неизвестен или изменяется, драйвер должен вызвать WdfDeviceAllocAndQueryPropertyEx.

Сведения о связанных методах см. в доступ к модели свойств единого устройства.

Требования

Требование Ценность
целевая платформа Всеобщий
минимальная версия KMDF 1.13
минимальная версия UMDF 2.0
заголовка wdfdevice.h (include Wdf.h)
библиотеки Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL APC_LEVEL

См. также

WdfDeviceQueryInterfaceProperty

WdfDeviceQueryProperty