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。 否则,此方法可能会返回以下值之一:
返回代码 | 说明 |
---|---|
|
IoTarget、InterfaceType 或 Interface 参数为 NULL。 |
|
框架无法分配发送到另一个驱动程序的请求。 |
此方法还可能返回其他 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) |