Partilhar via


O PnP Manager 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 gerente PnP tentará reatribuir recursos.

Durante esse processo, o gestor PnP interrompe os dispositivos e retira-os dos seus estados funcionais (D0). Em seguida, ele entrega novas listas de recursos para os dispositivos para que eles possam reiniciar, usando os novos recursos.

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

Sequência de Desligamento

Para cada função e driver de filtro que suportam o dispositivo a ser interrompido, a estrutura de trabalho faz o seguinte, em sequência, um driver de cada vez, começando pelo driver mais acima na pilha de drivers:

  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 geridas pelo gerenciamento de energia do dispositivo.

  3. Se o hardware e o driver suportam DMA, o framework chama 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 desativar as interrupções do dispositivo.

  5. A estrutura chama a função de retorno de chamada do driver EvtDeviceD0Exit (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 gerente PnP atribuiu ao dispositivo.

O motorista de autocarro é o condutor mais abaixo na pilha e é chamado por último. Quando o framework chama a função de retorno de chamada EvtDeviceD0Exit do driver de barramento, ele passa um identificador para o objeto de dispositivo do framework que representa o PDO do dispositivo e um valor TargetState de WdfPowerDeviceD3Final. O driver de barramento pode controlar quando o framework chama a sua função de retorno de chamada EvtDeviceReleaseHardware chamando WdfDeviceInitSetReleaseHardwareOrderOnFailure.

Sequência de Ativação

O primeiro motorista chamado é o motorista do ônibus. Quando o framework 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) ao seu estado operacional (D0).

Para cada função e driver de filtro que suporta o dispositivo, o framework faz o seguinte, em sequência, um driver de cada vez, começando com o driver mais baixo na pilha de drivers:

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

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

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

  4. Se o hardware e o driver suportarem 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 'callback' EvtChildListScanForChildren do driver (se existir).

  6. A estrutura reinicia todas as filas de E/S geridas pela 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.