Dispatch 例程的功能

特定调度例程所需的功能会有所不同,具体取决于它处理的 I/O 函数代码、单个驱动程序在驱动程序链中的位置以及基础物理设备的类型。

大多数调度例程 (IRP) 处理传入的 I/O 请求数据包,如下所示:

  1. 检查 IRP 中驱动程序的 I/O 堆栈位置,以确定要执行的操作,并检查参数(如果有)的有效性。

    驱动程序是否必须检查其 I/O 堆栈位置来确定要执行的操作和检查参数取决于给定IRP_MJ_XXX,以及该驱动程序是否为驱动程序处理的每个IRP_MJ_XXX 设置单独的 Dispatch 例程。

  2. 满足请求并完成 IRP(如果可能);否则,请将其传递,以供较低级别的驱动程序或其他设备驱动程序例程进一步处理。

    驱动程序是否必须传递 IRP 进行进一步处理取决于参数的有效性(如果有),以及 IRP_MJ_XXX 以及分层驱动程序链中驱动程序的级别(如果有)。

有关 IRP 的详细信息,请参阅 处理 IRP