Share via


Um usuário conecta um dispositivo

No cenário a seguir, o nó do dispositivo inclui um driver de barramento KMDF e uma ou mais funções KMDF ou drivers de filtro que dão suporte a um dispositivo PnP.

Quando um usuário conecta o dispositivo ao barramento enquanto o sistema está em execução, o driver de barramento do dispositivo e a estrutura executam as seguintes tarefas:

Para obter mais informações sobre a sequência de energia de um motorista de ônibus KMDF, consulte Sequência de power-up para um motorista de ônibus.

Em seguida, o gerenciador PnP determina quais drivers adicionais (drivers de função e drivers de filtro) o dispositivo requer. Se esses drivers ainda não estiverem carregados, o gerenciador PnP os carregará e chamará suas rotinas de DriverEntry . Para cada função ou driver de filtro, as seguintes ações ocorrem:

  • A estrutura chama a função de retorno de chamada EvtDriverDeviceAdd de cada driver adicional para que o driver possa chamar WdfDeviceCreate para criar um objeto de dispositivo de estrutura que representa o dispositivo para o driver. Os drivers de função criam um FDO (objeto de dispositivo funcional) e os drivers de filtro criam um objeto de dispositivo de filtro (Filter DO).

  • A estrutura chama cada função e filtra a função de retorno de chamada EvtDeviceFilterRemoveResourceRequirements do driver e, em seguida, a função de retorno de chamada EvtDeviceFilterAddResourceRequirements de cada driver. Imediatamente antes de o dispositivo ser iniciado, a estrutura chama a função de retorno de chamada EvtDeviceRemoveAddedResources . Essas três funções de retorno de chamada permitem que o filtro e os drivers de função modifiquem a lista de recursos de hardware exigidos pelo dispositivo, antes que o gerenciador PnP atribua recursos ao dispositivo. Para obter mais informações, consulte Recursos de hardware para drivers de Framework-Based

  • A estrutura garante que o dispositivo tenha atingido seu estado de energia de trabalho (D0).

  • Para cada driver de função e 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 ela existir) e passa 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 a função de retorno de chamada EvtInterruptEnable do driver (se existir) para cada interrupção e, em seguida, chama a função de retorno de chamada EvtDeviceD0EntryPostInterruptsEnabled do driver (se existir), 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 (se existirem) para cada canal DMA criado.
    5. A estrutura chama a função de retorno de chamada EvtChildListScanForChildren do driver (se ela existir).
    6. A estrutura inicia 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 EvtDeviceSelfManagedIoInit do driver.

Para obter mais informações sobre a sequência de energia para a função KMDF ou drivers de filtro, a Sequência de Power-Up para um Driver de Função ou Filtro.