Функция 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. К дополнительным возвращаемым значениям относятся:
Возвращаемый код | Описание |
---|---|
|
Предоставленный буфер слишком мал, чтобы получить информацию. |
|
Указанное значение 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 |