电池微型类驱动程序的 DispatchDeviceControl 例程

电源管理器通过复合电池驱动程序,将设备控制 IRP (IRP_MJ_DEVICE_CONTROL) 发送到微型类驱动程序。 电池微型类驱动程序的 DispatchDeviceControl 例程处理包含电池 IOCTL 的 IRP。

DispatchDeviceControl 例程中,微型类驱动程序可以调用类驱动程序的 BatteryClassIoctl 例程,以执行系统定义的设备控制任务。 BatteryClassIoctl 可处理电池的设备控制 IOCTL。

DispatchDeviceControl 例程应:

  1. 确定当前 IOCTL 是否是微型类驱动程序定义的专用 IOCTL。 如果是,请执行请求的操作,使用 IO_NO_INCREMENT 完成 IRP,然后继续执行步骤 4。

  2. 如果 IOCTL 不是专用 IOCTL,请使用 IRP 和 BatteryClassInitializeDevice 返回的类句柄调用 BatteryClassIoctl。 例如:

    Status = BatteryClassIoctl (NewBattNP->ClassHandle, Irp);
    

    类驱动程序的 BatteryClassIoctl 例程将检查 IOCTL 是否适用于指定的电池。 如果是,它将调用相应的 BatteryMiniXxx 例程来满足请求,并使用 STATUS_SUCCESS 完成 IRP。 否则,它将返回 STATUS_NOT_SUPPORTED。

  3. 如果 BatteryClassIoctl 返回 STATUS_NOT_SUPPORTED,指示这不是电池 IRP,请将 IRP 传递给下一个较低的驱动程序。

  4. 以函数的返回值形式返回状态。