Suporte a cartão de interface de rede

Este tópico descreve os tipos de NICs (Placas de Interface de Rede) que um driver de miniporto NDIS pode gerenciar, bem como como os diferentes tipos de NICs afetam a maneira como um driver transfere dados de rede.

Relatar o tipo médio de uma NIC para o NDIS

Para relatar um tipo médio para uma NIC, um driver de miniporto passa um ponteiro para uma estrutura NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES no parâmetro MiniportAttributes da função NdisMSetMiniportAttributes . Um driver de miniporto chama NdisMSetMiniportAttributes de sua função MiniportInitializeEx durante a inicialização. Os drivers de miniport devem definir os atributos MiniportAttributes depois de definir os atributos de registro na estrutura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES e antes de definir outros atributos. A definição dos atributos MiniportAttributes é obrigatória. O driver define o membro MediaType da estrutura NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES para o tipo de mídia apropriado ao definir os atributos MiniportAttributes .

Quando um driver de protocolo NDIS sobreposto chama NdisOpenAdapterEx para associar a um adaptador de miniporto especificado, ele fornece uma lista de tipos médios nos quais ele pode operar. O NDIS usa as informações do driver de miniporte e do driver de protocolo para configurar uma associação. Essa associação fornece o caminho para transferir dados de rede para cima e para baixo na pilha do driver.

NICs físicas

As etapas que um driver de miniporto conclui para inicializar um adaptador de miniporte e enviar e receber dados de rede podem depender dos recursos de um dispositivo físico, da seguinte maneira.

  • NDIS-WDM NICs

    Com NICs NDIS-WDM, como NICs baseadas em USB, a maneira como o driver de miniporto gerencia a memória com DMA não importa para o NDIS e não é visível para ele.

  • NICs de DMA master barramento

    Essas NICs podem acessar diretamente a memória do host por meio de um controlador de DMA a bordo que gerencia a transferência de dados entre a rede e a memória do host sem usar a CPU do host.

    Para enviar, o driver de miniporte configura a NIC para mapear os buffers de saída. Em seguida, o driver de miniporto faz com que o dispositivo inicie sua transferência dessa memória. O controlador de DMA nic transfere os dados da memória do sistema compartilhado para a rede e interrompe a CPU quando o envio é concluído. Para receber, o controlador de DMA transfere dados de entrada para a memória do host antes de notificar o host com uma interrupção.

    Uma NIC de DMA master de barramento normalmente tem um buffer de anel de integração que o driver de miniporto mapeia para um conjunto de buffers na memória do sistema. Normalmente, a NIC pode ser programada para lidar com vários pacotes com eficiência. Um driver de miniporte que gerencia essa NIC normalmente dá suporte a envios e recebimentos de vários pacotes porque a NIC pode lidar com vários pacotes com eficiência e, assim, melhorar sua taxa de transferência de E/S.

  • NICs de DMA não mestres

    Atualmente, as NICs de DMA não mestre incluem o seguinte:

    • NICs de DMA do sistema

      Um driver de miniporto que gerencia essa NIC usa o controlador de DMA do sistema para gerenciar a transferência de dados de pacote de e para a rede. A transferência dos dados requer a cooperação da CPU do host.

NICs virtuais e miniportos

Em uma máquina virtual, os drivers de miniporto NDIS podem gerenciar recursos somente de software como um miniporto virtual ou podem gerenciar uma NIC virtual que representa recursos de hardware. A tabela a seguir explica as diferenças entre um miniporto virtual e uma NIC virtual.

Atributo Miniporto virtual NIC Virtual
Definição Um driver de miniporto NDIS que é mapeado para um dispositivo PnP enumerado por software. Uma NIC gerenciada pelo hipervisor do sistema operacional host. O hipervisor faz com que a máquina virtual pense que ela tem algum hardware, mas esse hardware realmente não existe no mundo físico.
Tem interrupções No Sim
Pode usar o DMA Não Sim
É criado ou destruído por... O sistema operacional convidado O sistema operacional host
Pode acessar fora de uma VM convidada No Sim