Функция WdfFdoInitQueryPropertyEx (wdffdo.h)
[Применимо к KMDF и UMDF]
Метод WdfFdoInitQueryPropertyEx получает указанное свойство устройства.
Синтаксис
NTSTATUS WdfFdoInitQueryPropertyEx(
[in] PWDFDEVICE_INIT DeviceInit,
[in] PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
[in] ULONG BufferLength,
[out] PVOID PropertyBuffer,
[out] PULONG ResultLength,
[out] PDEVPROPTYPE Type
);
Параметры
[in] DeviceInit
Указатель на структуру WDFDEVICE_INIT, полученную драйвером из функции обратного вызова EvtDriverDeviceAdd.
[in] DeviceProperty
Указатель на структуру WDF_DEVICE_PROPERTY_DATA, которая идентифицирует свойство устройства, которое требуется извлечь.
[in] BufferLength
Размер буфера в байтах, на который указывает PropertyBuffer.
[out] PropertyBuffer
Указатель на выделенный вызывающим буфером, который получает запрошенные сведения. Указатель может быть NULL, если параметр BufferLength равен нулю.
[out] ResultLength
Указанное вызывающим расположением, которое, при возврате, содержит размер в байтах сведений, хранящихся в PropertyBuffer. Если возвращаемое значение функции STATUS_BUFFER_TOO_SMALL, это расположение получает требуемый размер буфера.
[out] Type
Указатель на переменную DEVPROPTYPE, содержащую значение типа свойства данных свойства, хранящихся в PropertyBuffer.
Возвращаемое значение
Если операция выполнена успешно, WdfFdoInitQueryPropertyEx возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Предоставленный буфер слишком мал, чтобы получить информацию. |
|
Указанное значение DeviceProperty недопустимо. |
Метод может возвращать другие значения NTSTATUS.
Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Замечания
Перед получением данных свойств устройства драйверы обычно вызывают метод WdfFdoInitQueryPropertyEx только для получения требуемого размера буфера. Для некоторых свойств размер данных может измениться между возвратом требуемого размера и при вызове драйвера WdfFdoInitQueryPropertyEx. Поэтому драйверы должны вызывать WdfFdoInitQueryPropertyEx внутри цикла, выполняющегося до тех пор, пока состояние возврата не STATUS_BUFFER_TOO_SMALL.
Лучше всего использовать WdfFdoInitQueryPropertyEx только в том случае, если необходимый размер буфера известен и не изменялся, так как в этом случае драйвер должен вызывать WdfFdoInitQueryPropertyEx только один раз. Если требуемый размер буфера неизвестен или изменяется, драйвер должен вызывать WdfFdoInitAllocAndQueryPropertyEx.
Драйвер может вызывать WdfFdoInitQueryPropertyEx только перед вызовом WdfDeviceCreate. Дополнительные сведения о вызове WdfDeviceCreateсм. в создании объекта устройства Framework.
После вызова WdfDeviceCreateдрайвер может получить сведения о свойстве устройства, вызвав WdfDeviceQueryPropertyEx.
Сведения о связанных методах см. в доступ к модели свойств единого устройства.
Требования
Требование | Ценность |
---|---|
целевая платформа | универсальный |
минимальная версия KMDF | 1.13 |
минимальная версия UMDF | 2.0 |
Заголовок | wdffdo.h (include Wdf.h) |
Библиотека | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |