Dispatch 例程的功能
特定调度例程所需的功能会有所不同,具体取决于它处理的 I/O 函数代码、单个驱动程序在驱动程序链中的位置以及基础物理设备的类型。
大多数调度例程 (IRP) 处理传入的 I/O 请求数据包,如下所示:
检查 IRP 中驱动程序的 I/O 堆栈位置,以确定要执行的操作,并检查参数(如果有)的有效性。
驱动程序是否必须检查其 I/O 堆栈位置来确定要执行的操作和检查参数取决于给定IRP_MJ_XXX,以及该驱动程序是否为驱动程序处理的每个IRP_MJ_XXX 设置单独的 Dispatch 例程。
满足请求并完成 IRP(如果可能);否则,请将其传递,以供较低级别的驱动程序或其他设备驱动程序例程进一步处理。
驱动程序是否必须传递 IRP 进行进一步处理取决于参数的有效性(如果有),以及 IRP_MJ_XXX 以及分层驱动程序链中驱动程序的级别(如果有)。
有关 IRP 的详细信息,请参阅 处理 IRP。