大多数驱动程序必须处理以下 Dispatch 例程:
-
IRP_MJ_PNP 指示涉及 PnP 设备识别、硬件配置或资源分配的请求。 此类请求通常从 PnP 管理器或紧密耦合的更高级别驱动程序发送到设备驱动程序。
-
IRP_MJ_POWER 指示与设备或系统电源状态相关的请求。 此类请求由电源管理器或紧密耦合的更高级别的驱动程序发送到设备驱动程序。
-
IRP_MJ_CREATE 指示要么一个用户模式下受保护的子系统,可能代表应用程序或特定子系统的驱动程序,请求与目标设备对象关联的文件对象的句柄,要么一个较高级驱动程序正在连接或附加其设备对象至目标设备对象。
-
IRP_MJ_CLOSE 指示已关闭并释放与目标设备对象关联的文件对象的最后一个句柄。 所有 I/O 请求都已完成或取消,因此没有对文件对象指针的未完成引用。
-
IRP_MJ_READ 指示将数据从基础物理设备传输到系统的 I/O 请求。
-
IRP_MJ_WRITE 指示将数据从系统传输到基础物理设备的 I/O 请求。
-
IRP_MJ_DEVICE_CONTROL 指示一个请求,其中包含系统定义的、特定于设备类型的 I/O 控制代码,用于指定设备类型的操作。 高级驱动程序将这些 IRP 传递到其基础设备驱动程序,这些驱动程序通常通过访问设备来处理请求。
-
IRP_MJ_INTERNAL_DEVICE_CONTROL 指示发送到设备驱动程序的请求,在大多数情况下,该请求来自紧密耦合的高层驱动程序,并通常使用专用定义的、特定于驱动程序和设备类型的 I/O 控制代码,来请求特定于设备类型或设备的操作。
只有某些类型的驱动程序才能处理系统定义的内部设备 I/O 控制请求,包括某些 SCSI 驱动程序、键盘或鼠标设备驱动程序,以及与系统提供的驱动程序互作的并行驱动程序。
-
IRP_MJ_SYSTEM_CONTROL 用于指定对驱动程序的 WMI 请求。 有关 WMI 的详细信息,请参阅 Windows Management Instrumentation。
驱动程序必须提供的调度例程因基础物理设备的类型和功能而异。 有关驱动程序必须处理的 IRP 主要函数代码的设备类型特定信息,请参阅 Windows 驱动程序工具包(WDK)中的设备类型特定文档。