电池微型类驱动程序的 DispatchDeviceControl 例程
电源管理器通过复合电池驱动程序,将设备控制 IRP (IRP_MJ_DEVICE_CONTROL) 发送到微型类驱动程序。 电池微型类驱动程序的 DispatchDeviceControl 例程处理包含电池 IOCTL 的 IRP。
在 DispatchDeviceControl 例程中,微型类驱动程序可以调用类驱动程序的 BatteryClassIoctl 例程,以执行系统定义的设备控制任务。 BatteryClassIoctl 可处理电池的设备控制 IOCTL。
确定当前 IOCTL 是否是微型类驱动程序定义的专用 IOCTL。 如果是,请执行请求的操作,使用 IO_NO_INCREMENT 完成 IRP,然后继续执行步骤 4。
如果 IOCTL 不是专用 IOCTL,请使用 IRP 和 BatteryClassInitializeDevice 返回的类句柄调用 BatteryClassIoctl。 例如:
Status = BatteryClassIoctl (NewBattNP->ClassHandle, Irp);
类驱动程序的 BatteryClassIoctl 例程将检查 IOCTL 是否适用于指定的电池。 如果是,它将调用相应的 BatteryMiniXxx 例程来满足请求,并使用 STATUS_SUCCESS 完成 IRP。 否则,它将返回 STATUS_NOT_SUPPORTED。
如果 BatteryClassIoctl 返回 STATUS_NOT_SUPPORTED,指示这不是电池 IRP,请将 IRP 传递给下一个较低的驱动程序。
以函数的返回值形式返回状态。