在框架外部处理 WDM IRP

[仅适用于 KMDF]

当 I/O 管理器将 I/O 请求数据包 (IRP) 传送到基于框架的驱动程序时,框架会截获 IRP,然后执行以下操作之一:

  • 处理 IRP。 例如,框架处理包含 IRP_MJ_PNPIRP_MJ_POWER 主要 I/O 函数代码的 IRP。 处理这些 IRP 时,框架可能通过调用驱动程序的事件回调函数来与驱动程序通信。

  • 为 IRP 创建一个框架请求对象,并将请求对象传递到驱动程序的 I/O 队列之一,以便驱动程序可以接收它(通常在请求处理程序中)并对其进行处理。 框架以这种方式处理读取、写入和设备 I/O 控制请求。

  • 如果驱动程序是筛选器驱动程序) ,请将 IRP 传递给下一个较低的驱动程序 (;如果驱动程序不是筛选器驱动程序) ,则以状态值STATUS_INVALID_DEVICE_REQUEST (完成 IRP,因为 IRP 包含框架不支持的 I/O 函数代码。

有时,驱动程序必须处理框架不支持的 I/O 函数代码。

在极少数情况下,驱动程序可能需要在框架处理 IRP 之前对其进行预处理,或者驱动程序可能需要在框架和较低级别的驱动程序处理完 IRP 之后对其进行后处理。

作为预处理的一部分,驱动程序可能需要将 IRP 转发到特定的 I/O 队列。

以下主题介绍这些情况: