Partilhar via


Iniciar uma Pilha de Controladores

Quando o sistema deteta um dispositivo de rede, o sistema inicia um stack de drivers NDIS para o dispositivo. O dispositivo pode ser um dispositivo virtual ou um dispositivo físico. Em ambos os casos, uma operação de início de pilha de driver prossegue da seguinte maneira:

  1. O sistema carrega e inicializa os drivers se eles ainda não estiverem carregados.

    Ele não carrega os drivers em qualquer ordem específica.

  2. O sistema chama a função DriverEntry de cada motorista.

    Depois que DriverEntry retorna:

    • O adaptador miniport para o dispositivo está no estado suspenso.
    • Os módulos de filtro estão no estado Destacado.
    • A ligação de protocolo está no estado Unbound.
  3. O sistema solicita que o NDIS inicie o adaptador de miniporta.

    Para inicializar o adaptador de miniporta, o NDIS chama a função MiniportInitializeEx do driver de miniporta. Se MiniportInitializeEx for bem-sucedido, o adaptador de miniporta entrará no estado Pausado.

  4. O NDIS anexa os módulos de filtro, começando com o módulo mais próximo do controlador de miniporta e continuando até atingir o topo da pilha de controladores.

    Para solicitar que o driver anexe um módulo de filtro à pilha de drivers, o NDIS chama a função FilterAttach de um driver de filtro. Se cada operação de anexação for bem-sucedida, o módulo de filtro entrará no estado Pausado.

  5. Depois que todos os drivers subjacentes estiverem no estado Pausado, o NDIS chama a função ProtocolBindAdapterEx do driver de protocolo.

    Em seguida, a ligação do driver de protocolo entra no estado de abertura. O driver de protocolo chama a função NdisOpenAdapterEx para abrir a ligação com o adaptador de miniporta.

  6. O NDIS aloca os recursos necessários para a ligação e chama a função ProtocolOpenAdapterCompleteEx do driver de protocolo.

    A ligação entra no estado Pausado.

  7. Para concluir a operação de ligação, o driver de protocolo chama a função NdisCompleteBindAdapterEx .

  8. O NDIS reinicia a pilha de controladores. Para obter mais informações sobre como reiniciar a pilha de controladores, consulte Reiniciar uma Pilha de Controladores.