WdfIoTargetQueryForInterface 函数 (wdfiotarget.h)

[仅适用于 KMDF]

WdfIoTargetQueryForInterface 方法获取对远程 I/O 目标的 GUID 标识的驱动程序定义的接口的访问权限。

语法

NTSTATUS WdfIoTargetQueryForInterface(
  [in]           WDFIOTARGET IoTarget,
  [in]           LPCGUID     InterfaceType,
  [out]          PINTERFACE  Interface,
  [in]           USHORT      Size,
  [in]           USHORT      Version,
  [in, optional] PVOID       InterfaceSpecificData
);

参数

[in] IoTarget

远程 I/O 目标对象的句柄,该对象是从上一次调用 WdfIoTargetCreate 获取的

[in] InterfaceType

指向标识接口的 GUID 的指针。

[out] Interface

指向驱动程序分配的结构的指针,该结构接收请求的接口。 此结构由导出请求的接口的驱动程序定义,并且必须以 INTERFACE 结构开头。

[in] Size

Interface 指向的驱动程序分配结构的大小(以字节为单位)。

[in] Version

所请求接口的版本号。 导出请求的接口的驱动程序定义此值的格式。

[in, optional] InterfaceSpecificData

其他特定于接口的信息。 此参数是可选的,可以为 NULL

返回值

如果操作成功,WdfIoTargetQueryForInterface 将返回STATUS_SUCCESS。 否则,此方法可能会返回以下值之一:

返回代码 说明
STATUS_INVALID_PARAMETER
IoTargetInterfaceTypeInterface 参数为 NULL
STATUS_INSUFFICIENT_RESOURCES
框架无法分配发送到另一个驱动程序的请求。
 

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

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

注解

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

基于框架的驱动程序通过调用 WdfDeviceAddQueryInterface 来定义接口。 有关驱动程序定义的接口的详细信息,请参阅 使用 Driver-Defined 接口

示例

下面的代码示例尝试获取对指定远程 I/O 目标的接口的访问权限。 GUID_RAWPDO_INTERFACE_STANDARD是标识接口的 GUID。

NTSTATUS status;
RAWPDO_INTERFACE_STANDARD busInterface;

status = WdfIoTargetQueryForInterface(
                                      IoTarget,
                                      &GUID_RAWPDO_INTERFACE_STANDARD,
                                      (PINTERFACE) &busInterface,
                                      sizeof(RAWPDO_INTERFACE_STANDARD),
                                      1,
                                      NULL
                                      );
if (!NT_SUCCESS (status)){
    return status;
}

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
标头 wdfiotarget.h (包括 Wdf.h)
Library Wdf01000.sys (请参阅框架库版本控制.)
IRQL PASSIVE_LEVEL
DDI 符合性规则 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另请参阅

接口

WdfDeviceAddQueryInterface

WdfFdoQueryForInterface

WdfIoTargetCreate