必需的 Dispatch 例程

大多数驱动程序必须处理以下 Dispatch 例程:

  • DispatchPnP

    IRP_MJ_PNP 指示涉及 PnP 设备识别、硬件配置或资源分配的请求。 此类请求通常从 PnP 管理器或紧密耦合的更高级别的驱动程序发送到设备驱动程序。

  • DispatchPower

    IRP_MJ_POWER 指示与设备或系统的电源状态相关的请求。 此类请求由电源管理器或紧密耦合的更高级别的驱动程序发送到设备驱动程序。

  • DispatchCreate

    IRP_MJ_CREATE 指示用户模式保护子系统(可能代表应用程序或特定于子系统的驱动程序)已请求与目标设备对象关联的文件对象的句柄,或者更高级别驱动程序正在将其设备对象连接或附加到目标设备对象。

  • DispatchClose

    IRP_MJ_CLOSE 指示已关闭并释放与目标设备对象关联的文件对象的最后一个句柄。 所有 I/O 请求都已完成或取消,因此没有对文件对象指针的未完成引用。

  • DispatchRead

    IRP_MJ_READ 指示将数据从基础物理设备传输到系统的 I/O 请求。

  • DispatchWrite

    IRP_MJ_WRITE 指示将数据从系统传输到基础物理设备的 I/O 请求。

  • DispatchDeviceControl

    IRP_MJ_DEVICE_CONTROL 指示包含系统定义的特定于设备类型的 I/O 控制代码的请求,该代码指定特定于设备类型的操作。 较高级别的驱动程序将这些 IRP 传递给其基础设备驱动程序,后者通常通过访问设备来处理请求。

  • DispatchInternalDeviceControl

    IRP_MJ_INTERNAL_DEVICE_CONTROL 指示发送到设备驱动程序的请求,在大多数情况下是从紧密耦合的较高级别驱动程序发送的,通常带有专用定义的、特定于驱动程序和设备类型的或特定于设备的 I/O 控制代码,这些代码请求特定于设备类型或特定于设备的操作。

    仅需要某些类型的驱动程序来处理系统定义的内部设备 I/O 控制请求,包括某些 SCSI 驱动程序、键盘或鼠标设备驱动程序,以及与系统提供的驱动程序互操作的并行驱动程序。

  • DispatchSystemControl

    IRP_MJ_SYSTEM_CONTROL 用于指定对驱动程序的 WMI 请求。 有关 WMI 的详细信息,请参阅 Windows Management Instrumentation

驱动程序必须提供的调度例程因基础物理设备的类型和功能而异。 有关驱动程序必须处理的 IRP 主要功能代码的设备类型特定信息,请参阅 Windows 驱动程序工具包 (WDK) 中的特定于设备类型的文档。