Compatibilidad con PnP y administración de energía en controladores de función
Los controladores de función controlan el funcionamiento de un dispositivo y, por tanto, acceden al hardware del dispositivo. Estos controladores deben admitir las operaciones de administración de energía y PnP y normalmente registrar varias funciones de devolución de llamada de eventos cuando crean objetos de dispositivo.
Normalmente, la función evtDriverDeviceAdd de un controlador de función llama a la función de devolución de llamada de evento WdfDeviceInitSetPnpPowerEventCallbacks para registrar las siguientes funciones de devolución de llamada:
EvtDevicePrepareHardware, que entrega los recursos asignados por el sistema del dispositivo al controlador. El controlador puede realizar operaciones, como asignar la memoria relativa al bus del dispositivo en el espacio de direcciones virtuales del procesador, lo que hace que el hardware sea accesible para el controlador.
EvtDeviceD0Entry, que realiza operaciones, como cargar firmware, que son necesarias cada vez que el dispositivo del controlador entra en su estado de trabajo (D0).
EvtDeviceD0Exit, que realiza operaciones necesarias cada vez que el dispositivo del controlador deja su estado de trabajo (D0) y entra en un estado de baja potencia.
EvtDeviceReleaseHardware, que libera los recursos del sistema asignados a EvtDevicePrepareHardware .
Al igual que todas las funciones de devolución de llamada definidas por el marco, las de la lista anterior son opcionales. Sólo tienes que suministrarlos si tu conductor los necesita.
Los controladores de función pueden llamar a WdfDeviceSetPnpCapabilities y WdfDeviceSetPowerCapabilities para informar de las funcionalidades de administración de energía y PnP de un dispositivo al sistema operativo.
Normalmente, usará las colas de E/S administradas por energía del marco para la mayoría de las solicitudes de E/S. Si una cola de E/S está administrada por energía, el marco entrega solicitudes al controlador solo si su dispositivo está en estado de funcionamiento (D0). Para obtener más información sobre las colas de E/S administradas por energía, consulte Administración de energía para colas de E/S.
Normalmente, el controlador de función del dispositivo es el propietario de la directiva de energía para la pila de controladores. El propietario de la directiva de energía determina el estado de energía del dispositivo adecuado para un dispositivo y envía solicitudes a la pila de controladores del dispositivo cada vez que el estado de alimentación del dispositivo debe cambiar. En el caso de los controladores basados en marcos, el marco controla esta responsabilidad, por lo que no es necesario proporcionar código en el controlador para solicitar cambios en el estado de alimentación de un dispositivo.
El propietario de la directiva de energía tiene dos responsabilidades adicionales: controla la capacidad de un dispositivo para entrar en un estado de baja potencia cuando está inactivo y el sistema permanece en su estado de funcionamiento (S0) y controla la capacidad del dispositivo para generar una señal de reactivación cuando detecta un evento externo a partir de un estado de baja potencia. Si el dispositivo tiene funcionalidades inactivas o de reactivación, el controlador de funciones puede proporcionar funciones de devolución de llamada adicionales. Para obtener más información sobre las responsabilidades del propietario de la directiva de energía, consulte Propiedad de power Policy.