处理框架不支持的 IRP

[仅适用于 KMDF]

框架不支持具有以下主要 IRP 代码的 I/O 请求:

如果框架收到包含其中一个 I/O 函数代码的 IRP,则框架不会处理 IRP。 如果驱动程序是筛选器驱动程序,框架会将 IRP 传递给驱动程序堆栈中下一个较低的驱动程序。 如果驱动程序不是筛选器驱动程序,框架会调用 IoCompleteRequest 以完成状态值为 STATUS_INVALID_DEVICE_REQUEST 的 IRP。

如果驱动程序必须处理包含其中任何 I/O 函数代码的 IRP,则驱动程序必须调用 WdfDeviceInitAssignWdmIrpPreprocessCallback ,以便为 I/O 函数代码注册 EvtDeviceWdmIrpPreprocess 事件回调函数。

当驱动程序收到包含驱动程序为其注册 EvtDeviceWdmIrpPreprocess 回调函数的 I/O 函数代码的 IRP 时,框架会将 IRP 传递给回调函数。 然后,回调函数必须遵循 处理 IRP 的 WDM 规则来处理 IRP。 驱动程序必须调用 IoCompleteRequest 来完成 IRP,或者必须调用 IoCallDriver 才能将 IRP 传递给下一个较低的驱动程序。

有关处理框架不支持的 IRP 的 EvtDeviceWdmIrpPreprocess 回调 函数的示例,请参阅 串行 示例驱动程序。