Compartir a través de


El administrador de PnP redistribuye los recursos del sistema

Si un usuario agrega un dispositivo a un sistema y el dispositivo requiere recursos del sistema que el administrador de PnP ya ha asignado a otro dispositivo, el administrador de PnP intenta reasignar recursos.

Durante este proceso, el administrador de PnP detiene los dispositivos y los quita de sus estados de trabajo (D0). A continuación, entrega nuevas listas de recursos a los dispositivos para que puedan reiniciarse con los nuevos recursos.

Al redistribuir recursos, el administrador de PnP no modificará la asignación de recursos de un dispositivo si uno de los controladores del dispositivo tiene:

secuencia de Power-Down

Para cada función y controlador de filtro que admite el dispositivo que se detiene, el marco hace lo siguiente, en secuencia, un controlador cada vez, empezando por el controlador que es más alto en la pila de controladores:

  1. Si el controlador usa E/S autoadministrado, el marco llama a la función de devolución de llamada EvtDeviceSelfManagedIoSuspend del controlador.

  2. El marco detiene todas las colas de E/S administradas por energía del dispositivo.

  3. Si el hardware y el controlador admiten DMA, el marco llama a las funciones de devolución de llamada EvtDmaEnablerSelfManagedIoStop, EvtDmaEnablerFlush y EvtDmaEnablerDisable del controlador para cada canal DMA que se creó.

  4. Llama a las funciones de devolución de llamada EvtDeviceD0ExitPreInterruptsDisabled y EvtInterruptDisable del controlador (si existen) para que el controlador pueda deshabilitar las interrupciones del dispositivo.

  5. El marco llama a la función de devolución de llamada EvtDeviceD0Exit del controlador (si existe).

  6. El marco llama a la función de devolución de llamada EvtDeviceReleaseHardware del controlador (si existe) pasando la lista de recursos de hardware que el administrador de PnP ha asignado al dispositivo.

El controlador de autobús es el controlador más bajo de la pila y se llama last. Cuando el marco llama a la función de devolución de llamada EvtDeviceD0Exit del controlador de bus, pasa un identificador al objeto de dispositivo de marco que representa el PDO del dispositivo y un valor TargetState de WdfPowerDeviceD3Final. El controlador de bus puede controlar cuándo el marco llama a su función de devolución de llamada EvtDeviceReleaseHardware llamando a WdfDeviceInitSetReleaseHardwareOrderOnFailure.

secuencia de Power-Up

El primer conductor llamado es el conductor del autobús. Cuando el marco llama a la función de devolución de llamada EvtDeviceD0Entry del controlador de bus, la función de devolución de llamada restaura el dispositivo (un dispositivo secundario del bus) a su estado de funcionamiento (D0).

Para cada función y controlador de filtro que admita el dispositivo, el marco hace lo siguiente, en secuencia, un controlador cada vez, empezando por el controlador 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), pasando 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 las funciones de devolución de llamada EvtInterruptEnable y EvtDeviceD0EntryPostInterruptsEnabled del controlador (si existen) 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 del controlador 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 reinicia todas las colas de E/S administradas por energía del dispositivo.

  7. Si el controlador usa E/S autoadministrado, el marco llama a la función de devolución de llamada EvtDeviceSelfManagedIoRestart del controlador.