Rotina DispatchDeviceControl do driver de miniclasse de bateria
O power manager envia IRPs de controle de dispositivo (IRP_MJ_DEVICE_CONTROL) para drivers de miniclasse por meio do driver de bateria composto. A rotina DispatchDeviceControl do driver de miniclasse de bateria lida com IRPs que contêm IOCTLs de bateria.
Na rotina DispatchDeviceControl , o driver de miniclasse pode chamar a rotina BatteryClassIoctl do driver de classe para executar tarefas de controle de dispositivo definidas pelo sistema. BatteryClassIoctl manipula o controle de dispositivo IOCTLs para baterias.
A rotina DispatchDeviceControl deve:
Determine se o IOCTL atual é um IOCTL privado definido pelo driver de miniclasse. Nesse caso, execute a operação solicitada, conclua o IRP com IO_NO_INCREMENT e prossiga para a etapa 4.
Se o IOCTL não for um IOCTL privado, chame BatteryClassIoctl com o IRP e o identificador de classe retornado por BatteryClassInitializeDevice. Por exemplo:
Status = BatteryClassIoctl (NewBattNP->ClassHandle, Irp);
A rotina BatteryClassIoctl do driver de classe verifica se o IOCTL se destina à bateria especificada. Nesse caso, ele chama a rotina BatteryMiniXxx correspondente para atender à solicitação e conclui o IRP com STATUS_SUCCESS. Caso contrário, retornará STATUS_NOT_SUPPORTED.
Se BatteryClassIoctl retornar STATUS_NOT_SUPPORTED, indicando que esse não é um IRP de bateria, passe o IRP para o driver mais baixo.
Retornar o status como o valor retornado da função.