O Gerenciador PnP redistribui recursos do sistema

Se um usuário adicionar um dispositivo a um sistema e se o dispositivo exigir recursos do sistema que o gerenciador PnP já atribuiu a outro dispositivo, o gerenciador PnP tentará reatribuir recursos.

Durante esse processo, o gerenciador de PnP interrompe os dispositivos e os tira dos estados de trabalho (D0). Em seguida, ele fornece novas listas de recursos para os dispositivos para que eles possam reiniciar, usando os novos recursos.

Ao redistribuir recursos, o gerenciador de PnP não alterará a atribuição de recursos de um dispositivo se um dos drivers do dispositivo tiver:

Sequência de Power-Down

Para cada função e driver de filtro que dá suporte ao dispositivo que está sendo interrompido, a estrutura faz o seguinte, em sequência, um driver por vez, começando com o driver mais alto na pilha de driver:

  1. Se o driver estiver usando E/S autogerenciada, a estrutura chamará a função de retorno de chamada EvtDeviceSelfManagedIoSuspend do driver.

  2. A estrutura interrompe todas as filas de E/S gerenciadas por energia do dispositivo.

  3. Se o hardware e o driver derem suporte ao DMA, a estrutura chamará as funções de retorno de chamada EvtDmaEnablerSelfManagedIoStop, EvtDmaEnablerFlush e EvtDmaEnablerDisable do driver para cada canal DMA criado.

  4. Chama as funções de retorno de chamada EvtDeviceD0ExitPreInterruptsDisabled e EvtInterruptDisable do driver (se existirem) para que o driver possa desabilitar interrupções de dispositivo.

  5. A estrutura chama a função de retorno de chamada EvtDeviceD0Exit do driver (se existir).

  6. A estrutura chama a função de retorno de chamada EvtDeviceReleaseHardware do driver (se existir) passando a lista de recursos de hardware que o gerenciador PnP atribuiu ao dispositivo.

O motorista do ônibus é o motorista mais baixo da pilha e é chamado de último. Quando a estrutura chama a função de retorno de chamada EvtDeviceD0Exit do driver de barramento, ela passa um identificador para o objeto de dispositivo de estrutura que representa o PDO do dispositivo e um valor TargetState de WdfPowerDeviceD3Final. O driver de barramento pode controlar quando a estrutura chama sua função de retorno de chamada EvtDeviceReleaseHardware chamando WdfDeviceInitSetReleaseHardwareOrderOnFailure.

Sequência de Power-Up

O primeiro motorista chamado é o motorista do ônibus. Quando a estrutura chama a função de retorno de chamada EvtDeviceD0Entry do driver de barramento, a função de retorno de chamada restaura o dispositivo (um dispositivo filho do barramento) para seu estado de trabalho (D0).

Para cada função e driver de filtro que dá suporte ao dispositivo, a estrutura faz o seguinte, em sequência, um driver por vez, começando com o driver mais baixo na pilha de driver:

  1. A estrutura chama a função de retorno de chamada EvtDevicePrepareHardware do driver (se existir), passando a lista de recursos de hardware que o gerenciador PnP atribuiu ao dispositivo.

  2. A estrutura chama a função de retorno de chamada EvtDeviceD0Entry do driver (se ela existir).

  3. A estrutura chama as funções de retorno de chamada EvtInterruptEnable e EvtDeviceD0EntryPostInterruptsEnabled do driver (se existirem) para que o driver possa habilitar interrupções de dispositivo.

  4. Se o hardware e o driver derem suporte ao DMA, a estrutura chamará as funções de retorno de chamada EvtDmaEnablerFill, EvtDmaEnablerEnable e EvtDmaEnablerSelfManagedIoStart do driver para cada canal DMA criado.

  5. A estrutura chama a função de retorno de chamada EvtChildListScanForChildren do driver (se existir).

  6. A estrutura reinicia todas as filas de E/S gerenciadas por energia do dispositivo.

  7. Se o driver estiver usando E/S autogerenciada, a estrutura chamará a função de retorno de chamada EvtDeviceSelfManagedIoRestart do driver.