Partilhar via


Suporte para placa de interface de rede

Este tópico descreve os tipos de placas de interface de rede (NICs) que um driver de miniporta 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 placa de rede ao NDIS

Para reportar um tipo médio para uma NIC, um driver de miniporta passa um ponteiro para uma estrutura de NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES no parâmetro MiniportAttributes da função NdisMSetMiniportAttributes. Um driver de miniporta chama NdisMSetMiniportAttributes da sua função MiniportInitializeEx durante a inicialização. Os drivers de miniporta devem definir os atributos MiniportAttributes após definir os atributos de registo na estrutura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES e antes de definir quaisquer 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 se vincular a um adaptador de miniport especificado, ele fornece uma lista de tipos de meio nos quais ele pode operar. O NDIS usa as informações do driver de miniporta e do driver de protocolo para configurar uma ligação. Essa associação fornece o caminho para transferir dados de rede para cima e para baixo na pilha de drivers.

NICs físicas

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

  • NDIS-WDM Placas de Rede

    Com NICs NDIS-WDM, como as NICs baseadas em USB, a maneira como o miniport driver gere a memória com DMA não importa para o NDIS e não é perceptível para ele.

  • Bus-master DMA NICs

    Essas NICs podem acessar diretamente a memória do host por meio de um controlador DMA integrado 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 controlador de miniporta configura a NIC para mapear os buffers de saída. O driver da miniporta, em seguida, faz com que o dispositivo inicie sua transferência a partir dessa memória. O controlador DMA da NIC transfere os dados da memória compartilhada do sistema para a rede e interrompe a CPU quando o envio é concluído. Para receber, o controlador DMA transfere os dados de entrada para a memória do host antes de notificar o host com uma interrupção.

    Uma NIC de DMA do tipo mestre de barramento normalmente tem um buffer de anel integrado que o driver de miniporta mapeia para um conjunto de buffers na memória do sistema. Normalmente, a NIC pode ser programada para lidar eficientemente com vários pacotes. Um driver de miniporta que gerencia essa NIC normalmente suporta envios e recebimentos de vários pacotes porque a NIC pode lidar eficientemente com vários pacotes e, assim, melhorar sua taxa de transferência de E/S.

  • NICs DMA não busmaster

    Atualmente, as NICs DMA que não são de busmaster são os seguintes:

    • NICs do sistema DMA

      Um driver de miniporta que gere tal NIC usa o controlador DMA do sistema para gerir 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 miniportas

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

Atributo Miniporto virtual Virtual NIC
Definição Um driver de miniporta NDIS que mapeia para um dispositivo PnP enumerado por software. Uma NIC gerenciada pelo hipervisor do sistema operacional host. O hipervisor faz a máquina virtual pensar que tem algum hardware, mas esse hardware realmente não existe no mundo físico.
Possui interrupções Não Sim
Pode usar DMA Não Sim
É criado ou destruído por... O SO convidado O sistema operacional anfitrião
Pode alcançar fora de uma máquina virtual visitante Não Sim