Partilhar via


Indicando quadros Ethernet recebidos

O driver de protocolo TCP/IP do Windows impõe um conjunto de requisitos para receber quadros Ethernet. Qualquer driver que inicia a recepção de indicações de quadros Ethernet ou que modifica as indicações de receção de drivers subjacentes deve suportar os requisitos gerais que o TCP/IP impõe. Esses controladores incluem controladores de miniporta Ethernet, controladores intermediários MUX e controladores de filtro.

Observação Se um driver não cumprir esses requisitos, os drivers subjacentes (como o de transporte TCP/IP, os drivers intermediários MUX e os drivers de filtro) poderão comportar-se de forma imprevisível.

Os drivers que originam indicações de recebimento Ethernet devem suportar os seguintes requisitos:

  • O driver deve alocar uma estrutura NET_BUFFER_LIST para o quadro Ethernet recebido. Cada estrutura NET_BUFFER_LIST deve incluir os dados fora de banda (OOB) definidos no membro NetBufferListInfo do NET_BUFFER_LIST necessário para o uso específico.

  • O driver deve alocar uma estrutura NET_BUFFER para o quadro e vinculá-la a uma estrutura NET_BUFFER_LIST. A miniporta Ethernet deve atribuir exatamente uma estrutura NET_BUFFER a uma estrutura NET_BUFFER_LIST ao indicar os dados recebidos. Esta restrição aplica-se apenas ao caminho de receção Ethernet. Não é aplicável a outros tipos de mídia, como a interface de LAN sem fio nativa 802.11. ou, de modo geral, NDIS.

  • A partir do NDIS 6.1, em determinados cenários, uma estrutura NET_BUFFER pode ser associada a várias listas de descritores de memória (MDLs) para o quadro Ethernet recebido. Embora uma estrutura NET_BUFFER_LIST deva conter uma única estrutura NET_BUFFER, o uso de várias MDLs permite que o driver divida os dados de pacotes recebidos em buffers separados.

    Por exemplo, os drivers Ethernet que suportam a interface de divisão cabeçalho-dados dividem um quadro Ethernet recebido usando uma lista encadeada de múltiplos MDLs associados a uma única estrutura NET_BUFFER. Para obter mais informações, consulte Header-Data Split.

    Por motivos de simplicidade e desempenho, é altamente recomendável que os drivers que não suportam divisão de dados de cabeçalho usem apenas um MDL para cada estrutura NET_BUFFER.

    Observação No NDIS 6.0 para Windows Vista, cada estrutura NET_BUFFER deve conter apenas um MDL.

  • Os controladores não devem dividir os quadros Ethernet recebidos no meio do cabeçalho IP, das opções IPv4, dos cabeçalhos IPsec, dos cabeçalhos de extensão IPv6 ou dos cabeçalhos de protocolos de camadas superiores, a menos que o primeiro MDL contenha pelo menos tantos bytes quanto o especificado pelo NDIS para o tamanho de visualização antecipada.

Os drivers de protocolos e de filtros NDIS devem suportar quadros Ethernet divididos ao receber indicações, desde que esses quadros divididos cumpram as restrições definidas no item da lista anterior. As restrições garantem que os drivers de protocolo e filtro sejam compatíveis com versões futuras do Windows.