Compartir a través de


Un usuario conecta un dispositivo

En el escenario siguiente, el nodo de dispositivo incluye un controlador de bus KMDF y uno o varios controladores de filtro o función KMDF que admiten un dispositivo PnP.

Cuando un usuario conecta el dispositivo al bus mientras se ejecuta el sistema, el controlador de bus del dispositivo y el marco realizan las siguientes tareas:

Para obtener más información sobre la secuencia de encendido de un controlador de bus KMDF, consulte Secuencia de encendido para un controlador de bus.

A continuación, el administrador de PnP determina qué controladores adicionales (controladores de función y controladores de filtro) requiere el dispositivo. Si estos controladores aún no están cargados, el administrador de PnP los carga y llama a sus rutinas DriverEntry . Para cada función o controlador de filtro, se producen las siguientes acciones:

  • El marco llama a la función de devolución de llamada EvtDriverDeviceAdd de cada controlador adicional para que el controlador pueda llamar a WdfDeviceCreate para crear un objeto de dispositivo de marco que represente el dispositivo para el controlador. Los controladores de funciones crean un objeto de dispositivo funcional (FDO) y los controladores de filtro crean un objeto de dispositivo de filtro (Filter DO).

  • El marco llama a cada función y filtra la función de devolución de llamada EvtDeviceFilterRemoveResourceRequirements de cada controlador y, a continuación, la función de devolución de llamada EvtDeviceFilterAddResourceRequirements de cada controlador. Inmediatamente antes de iniciar el dispositivo, el marco llama a la función de devolución de llamada EvtDeviceRemoveAddedResources . Estas tres funciones de devolución de llamada permiten que los controladores de filtro y función modifiquen la lista de recursos de hardware que requiere el dispositivo, antes de que el administrador de PnP asigne recursos al dispositivo. Para obtener más información, consulte Recursos de hardware para controladores de Framework-Based.

  • El marco garantiza que el dispositivo ha alcanzado su estado de alimentación en funcionamiento (D0).

  • Para cada función y controlador de filtro que admita el dispositivo, el marco hace lo siguiente, en secuencia, un controlador a la vez, empezando por el controlador que es más bajo en la pila de controladores:

    1. El marco llama a la función de devolución de llamada EvtDevicePrepareHardware del controlador (si existe) y pasa la lista de recursos de hardware que el administrador de PnP ha asignado al dispositivo.
    2. El marco llama a la función de devolución de llamada EvtDeviceD0Entry del controlador (si existe).
    3. El marco llama a la función de devolución de llamada EvtInterruptEnable del controlador (si existe) para cada interrupción y, a continuación, llama a la función de devolución de llamada EvtDeviceD0EntryPostInterruptsEnabled del controlador (si existe), para que el controlador pueda habilitar interrupciones del dispositivo.
    4. Si el hardware y el controlador admiten DMA, el marco llama a las funciones de devolución de llamada EvtDmaEnablerFill, EvtDmaEnablerEnable y EvtDmaEnablerSelfManagedIoStart de controlador (si existen) para cada canal DMA que se creó.
    5. El marco llama a la función de devolución de llamada EvtChildListScanForChildren del controlador (si existe).
    6. El marco inicia todas las colas de E/S administradas por energía del dispositivo.
    7. Si el controlador usa E/S autoadministrada, el marco llama a la función de devolución de llamada EvtDeviceSelfManagedIoInit del controlador.

Para obtener más información sobre la secuencia de encendido para controladores de filtro o función KMDF, Secuencia de encendido para una función o controlador de filtro.