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

指向驱动程序从其 EvtDriverDeviceAdd 回调函数获取的WDFDEVICE_INIT结构的指针。

[in] DeviceProperty

指向 WDF_DEVICE_PROPERTY_DATA 结构的指针,该结构标识要检索的设备属性。

[in] BufferLength

PropertyBuffer 指向的缓冲区的大小(以字节为单位)。

[out] PropertyBuffer

调用方提供的指针,指向调用方分配的缓冲区,该缓冲区接收请求的信息。 如果 BufferLength 参数为零,则指针可以为 NULL

[out] ResultLength

调用方提供的位置,返回时包含方法存储在 PropertyBuffer 中的信息的大小(以字节为单位)。 如果函数的返回值为 STATUS_BUFFER_TOO_SMALL,则此位置接收所需的缓冲区大小。

[out] Type

指向 DEVPROPTYPE 变量的指针,返回时,该变量包含 存储在 PropertyBuffer 中的属性数据的属性值。

返回值

如果操作成功, WdfFdoInitQueryPropertyEx 将返回STATUS_SUCCESS。 其他返回值包括:

返回代码 说明
STATUS_BUFFER_TOO_SMALL
提供的缓冲区太小,无法接收信息。
STATUS_INVALID_PARAMETER
指定的 DeviceProperty 值无效。
 

方法可能会返回其他 NTSTATUS 值

如果驱动程序提供无效的对象句柄,则会发生 bug 检查。

注解

在接收设备属性数据之前,驱动程序通常调用 WdfFdoInitQueryPropertyEx 方法来获取所需的缓冲区大小。 对于某些属性,数据大小可以在返回所需大小和驱动程序再次调用 WdfFdoInitQueryPropertyEx 之间更改。 因此,驱动程序应在一个循环中调用 WdfFdoInitQueryPropertyEx ,该循环将执行,直到返回状态不STATUS_BUFFER_TOO_SMALL。

最好仅当所需的缓冲区大小已知且未更改时才使用 WdfFdoInitQueryPropertyEx ,因为在这种情况下,驱动程序只需调用 WdfFdoInitQueryPropertyEx 一次。 如果所需的缓冲区大小未知或变化,驱动程序应调用 WdfFdoInitAllocAndQueryPropertyEx

驱动程序只能在调用 WdfDeviceCreate 之前调用 WdfFdoInitQueryPropertyEx。 有关调用 WdfDeviceCreate 的详细信息,请参阅 创建框架设备对象

调用 WdfDeviceCreate 后,驱动程序可以通过调用 WdfDeviceQueryPropertyEx 获取设备属性信息。

有关相关方法的信息,请参阅 访问统一设备属性模型

要求

要求
目标平台 通用
最低 KMDF 版本 1.13
最低 UMDF 版本 2.0
标头 wdffdo.h (包括 Wdf.h)
Library Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL

另请参阅

WdfFdoInitQueryProperty