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。 其他返回值包括:

返回代码 说明
STATUS_INVALID_PARAMETER
如果 DeviceInterfaceTypeInterface 参数为 NULL,则设备对象无效。
STATUS_INSUFFICIENT_RESOURCES
框架无法分配要发送到另一个驱动程序的请求。
 

该方法还可能返回其他 NTSTATUS 值

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

注解

驱动程序可以调用 WdfFdoQueryForInterface 来获取对驱动程序定义接口的访问权限,该接口是由驱动程序在驱动程序所在的同一驱动程序堆栈中创建的。 若要访问由位于不同驱动程序堆栈中的驱动程序创建的驱动程序定义的接口,驱动程序必须调用 WdfIoTargetQueryForInterface

基于框架的驱动程序通过调用 WdfDeviceAddQueryInterface 来定义接口。

有关 WdfFdoQueryForInterface 的详细信息,请参阅 使用 Driver-Defined 接口

示例

下面的代码示例来自 Toaster 示例函数驱动程序。 此示例获取对烤箱示例总线驱动程序定义的接口的访问权限。

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)
Library Wdf01000.sys (请参阅框架库 Versioning.)
IRQL PASSIVE_LEVEL
DDI 符合性规则 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另请参阅

WdfIoTargetQueryForInterface