Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
Chamou WdfDeviceSetSpecialFileSupport e um ficheiro especial está aberto no dispositivo.
Chamado WdfDeviceSetStaticStopRemove.
Fornecida uma função de retorno de chamada EvtDeviceQueryStop e a função de retorno de chamada vetou a reatribuição.
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:
Se o driver estiver usando E/S autogerenciada, a estrutura chamará a função de retorno de chamada EvtDeviceSelfManagedIoSuspend do driver.
A estrutura interrompe todas as filas de E/S geridas pelo gerenciamento de energia do dispositivo.
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.
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.
A estrutura chama a função de retorno de chamada do driver EvtDeviceD0Exit (se existir).
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:
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.
A estrutura chama a função de retorno de chamada EvtDeviceD0Entry do driver (se existir).
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.
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.
A estrutura chama a função de 'callback' EvtChildListScanForChildren do driver (se existir).
A estrutura reinicia todas as filas de E/S geridas pela energia do dispositivo.
Se o driver estiver usando E/S autogerenciada, a estrutura chamará a função de retorno de chamada EvtDeviceSelfManagedIoRestart do driver.