Drivers de miniporta
Um driver de miniporta NDIS tem duas funções básicas:
Gerenciar um cartão de adaptador de rede (NIC), incluindo o envio e recebimento de dados por meio da NIC.
Estabelecer interface com drivers de nível superior, como drivers de filtro, drivers intermediários e drivers de protocolo.
Um driver de miniporta se comunica com suas NICs e com drivers de nível superior por meio da biblioteca NDIS. A biblioteca NDIS exporta um conjunto completo de funções (NdisMXxx e outras funções NdisXxx ) que encapsulam todas as funções do sistema operacional que um driver de miniporta deve chamar. O driver de miniporta, por sua vez, deve exportar um conjunto de pontos de entrada (funções MiniportXxx ) que o NDIS chama para seus próprios fins ou em nome de drivers de nível superior, para acessar o driver de miniporta.
Observação
Para obter mais informações sobre a pilha de driver NDIS e um diagrama mostrando a relação entre todos os quatro tipos de driver NDIS, consulte Pilha de driver NDIS.
As seguintes operações de envio e recebimento ilustram a interação de drivers de miniporta com o NDIS e com drivers de nível superior:
Quando um driver de transporte tem um pacote para transmitir, ele chama uma função NdisXxx exportada pela biblioteca NDIS. Em seguida, o NDIS passa o pacote para o driver de miniporta chamando a função MiniportXxx apropriada exportada pelo driver de miniporta. Em seguida, o driver de miniporta encaminha o pacote para a NIC para transmissão chamando as funções NdisXxx apropriadas.
Quando uma NIC recebe um pacote endereçado a si mesma, ela pode postar uma interrupção de hardware que é tratada pelo NDIS ou pelo driver de miniporta da NIC. O NDIS notifica o driver de miniporta da NIC chamando a função MiniportXxx apropriada. O driver de miniporta configura a transferência de dados da NIC e, em seguida, indica a presença do pacote recebido para drivers de nível superior associados chamando a função NdisXxx apropriada.
Drivers de miniporta sem conexão e orientados a conexão
O NDIS dá suporte a drivers de miniporta para ambientes sem conexão e ambientes orientados a conexão.
Os drivers de miniporta sem conexão controlam NICs para mídia de rede sem conexão, como Ethernet. Os drivers de miniporta sem conexão são divididos em drivers desserializados e serializados:
Observação: todos os drivers NDIS 6.0 e posteriores são desserializados.
Os drivers desserializados serializam a operação de suas próprias funções MiniportXxx e que enfileiram internamente todos os pacotes de envio de entrada. Isso resulta em um desempenho full-duplex significativamente melhor, desde que as seções críticas do driver (código que apenas um único thread por vez pode executar) sejam mantidas pequenas.
Os drivers serializados dependem do NDIS para serializar chamadas para suas funções MiniportXxx e gerenciar suas filas de envio.
Os drivers de miniporta orientados a conexão controlam NICs para mídia de rede orientada a conexão, como ISDN. Os drivers de miniporta orientados à conexão são sempre desserializados, eles sempre serializam a operação de suas próprias funções MiniportXxx e enfileiram internamente todos os pacotes de envio de entrada.
Um driver de miniporta NDIS pode ter uma borda inferior não NDIS (consulte a figura a seguir).
Por meio de sua borda inferior não NDIS, um driver de miniporta usa a interface de classe para um barramento, como o USB (Barramento Serial Universal) para controlar um dispositivo no barramento. O driver de miniporta se comunica com o dispositivo enviando IRPs (pacotes de solicitação de E/S) para o barramento ou diretamente para dispositivos remotos anexados ao barramento. Em sua borda superior, o driver de miniporta expõe uma interface de driver de miniporta NDIS padrão, que habilita que o driver de miniporta se comunique com drivers NDIS subjacentes.