WdfFdoQueryForInterface 函数 (wdffdo.h)
[仅适用于 KMDF]
WdfFdoQueryForInterface 方法获取对另一个驱动程序的 GUID 标识接口的访问权限。
语法
NTSTATUS WdfFdoQueryForInterface(
[in] WDFDEVICE Fdo,
[in] LPCGUID InterfaceType,
[out] PINTERFACE Interface,
[in] USHORT Size,
[in] USHORT Version,
[in, optional] PVOID InterfaceSpecificData
);
参数
[in] Fdo
框架设备对象的句柄。
[in] InterfaceType
指向标识接口的 GUID 的指针。
[out] Interface
指向接收所请求接口的驱动程序分配结构的指针。 此结构由导出请求的接口的驱动程序定义,必须以 INTERFACE 结构开头。
[in] Size
表示所请求接口的驱动程序分配结构的大小(以字节为单位)。
[in] Version
请求的接口的版本号。 此值的格式由导出请求的接口的驱动程序定义。
[in, optional] InterfaceSpecificData
其他特定于接口的信息。 此参数是可选的,可以 NULL。
返回值
如果作成功,该方法将返回STATUS_SUCCESS。 其他返回值包括:
返回代码 | 说明 |
---|---|
|
设备对象无效,或者如果 Device、InterfaceType或 Interface 参数 NULL。 |
|
框架无法分配要发送到另一个驱动程序的请求。 |
此方法还可以返回其他 NTSTATUS 值。
如果驱动程序提供无效的对象句柄,则会发生系统 bug 检查。
注解
驱动程序可以调用 WdfFdoQueryForInterface 以获取对驱动程序定义的接口的访问权限,该接口由驱动程序所在的驱动程序堆栈中的驱动程序创建。 若要访问由位于不同驱动程序堆栈中的驱动程序创建的驱动程序定义接口,驱动程序必须调用 WdfIoTargetQueryForInterface。
基于框架的驱动程序通过调用 WdfDeviceAddQueryInterface来定义接口。
有关 WdfFdoQueryForInterface的详细信息,请参阅 使用 Driver-Defined 接口。
例子
下面的代码示例来自 烤箱 示例函数驱动程序。 此示例获取对烤箱示例总线驱动程序定义的接口的访问权限。
status = WdfFdoQueryForInterface(
Device,
&GUID_TOASTER_INTERFACE_STANDARD,
(PINTERFACE) &fdoData->BusInterface, // Object context space
sizeof(TOASTER_INTERFACE_STANDARD),
1,
NULL
);
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
最低 KMDF 版本 | 1.0 |
标头 | wdffdo.h (包括 Wdf.h) |
图书馆 | Wdf01000.sys(请参阅框架库版本控制。 |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | DriverCreate(kmdf),KmdfIrql(kmdf),KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf) |