Compartilhar via


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:

  1. 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.

  2. 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.

  3. Se BatteryClassIoctl retornar STATUS_NOT_SUPPORTED, indicando que esse não é um IRP de bateria, passe o IRP para o driver mais baixo.

  4. Retornar o status como o valor retornado da função.