WdfFdoInitSetFilter 函数 (wdffdo.h)

[适用于 KMDF 和 UMDF]

WdfFdoInitSetFilter 方法将调用驱动程序标识为指定设备的上层或较低级别的 筛选器驱动程序

语法

void WdfFdoInitSetFilter(
  [in] PWDFDEVICE_INIT DeviceInit
);

参数

[in] DeviceInit

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

返回值

没有

注解

筛选器驱动程序通常处理一些 I/O 请求,但它们只是将大多数请求传递到驱动程序堆栈中的下一个驱动程序。 如果框架收到某个驱动程序设备的请求,并且驱动程序尚未创建 I/O 队列来接收与请求类型匹配的请求,则框架处理请求的方式取决于驱动程序是否已调用 WdfFdoInitSetFilter

  • 如果驱动程序调用 WdfFdoInitSetFilter,驱动程序框架会将请求转发到下一个驱动程序。
  • 如果驱动程序未调用 WdfFdoInitSetFilter,则框架将完成状态值为STATUS_INVALID_DEVICE_REQUEST的请求。
如果驱动程序调用 WdfFdoInitSetFilter,则它不应调用 WdfDeviceInitSetIoTypeWdfDeviceInitSetPowerInrushWdfDeviceInitSetPowerPageable,因为框架会忽略这些调用提供的信息。 相反,框架从驱动程序的 设备堆栈中的下一个较低设备对象获取此信息

驱动程序必须在调用 WdfDeviceCreate之前调用 WdfFdoInitSetFilter。 有关调用 WdfDeviceCreate的详细信息,请参阅 创建框架设备对象。 此外,驱动程序必须在从 EvtDriverDeviceAdd 回调函数返回之前调用 WdfFdoInitSetFilter

有关 WdfFdoInitSetFilter的详细信息,请参阅 在筛选器驱动程序中创建设备对象,创建 I/O 队列转发 I/O 请求

例子

下面的代码示例将调用驱动程序标识为指定设备的筛选器驱动程序。

WdfFdoInitSetFilter(DeviceInit);

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdffdo.h (包括 Wdf.h)
图书馆 Wdf01000.sys(KMDF):WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI 符合性规则 DeviceInitAPI(kmdf)DriverCreate(kmdf)DrvAckIoStop(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf)

另请参阅

WDFDEVICE_INIT