Indicando quadros Ethernet recebidos
O driver de protocolo TCP/IP do Windows impõe um conjunto de requisitos para receber quadros Ethernet. Qualquer driver originado recebe indicações de quadros Ethernet ou modificações recebe indicações de drivers subjacentes deve dar suporte aos requisitos gerais que o TCP/IP impõe. Esses drivers incluem drivers de miniporte Ethernet, drivers intermediários MUX e drivers de filtro.
Nota Se um driver não seguir esses requisitos, os drivers sobrepostos (como o transporte TCP/IP, drivers intermediários MUX e drivers de filtro) poderão se comportar de forma imprevisível.
Os drivers que originam as indicações de recebimento da Ethernet devem dar suporte aos 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 OOB (fora de banda) 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 de NET_BUFFER_LIST . O miniporto Ethernet deve atribuir exatamente uma estrutura NET_BUFFER a uma estrutura NET_BUFFER_LIST ao indicar dados recebidos. Essa restrição se aplica somente ao caminho de recebimento do Ethernet. Ele não é aplicável aos outros tipos de mídia, como a interface lan sem fio 802.11 nativa. ou NDIS em geral.
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 de NET_BUFFER_LIST precise conter uma única estrutura de NET_BUFFER , o uso de vários MDLs permite que o driver divida os dados de pacote recebidos em buffers separados.
Por exemplo, os drivers Ethernet que dão suporte à interface de divisão de dados de cabeçalho dividem um quadro Ethernet recebido usando uma lista vinculada de vários MDLs associados a uma única estrutura de NET_BUFFER . Para obter mais informações, consulte Divisão de cabeçalho-dados.
Por motivos de simplicidade e desempenho, é altamente recomendável que os drivers que não dão suporte à divisão de dados de cabeçalho usem apenas um MDL para cada estrutura NET_BUFFER .
Nota No NDIS 6.0 para Windows Vista, cada estrutura NET_BUFFER deve conter apenas um MDL.
Os drivers não devem dividir quadros Ethernet recebidos no meio do cabeçalho IP, opções IPv4, cabeçalhos IPsec, cabeçalhos de extensão IPv6 ou cabeçalhos de protocolo de camada superior, a menos que o primeiro MDL contenha pelo menos tantos bytes quanto o NDIS especificado para o tamanho do lookahead.
Os drivers de protocolo e filtro NDIS devem dar suporte a quadros Ethernet divididos em indicações de recebimento se esses quadros divididos estiverem em conformidade com as restrições definidas no item de lista anterior. As restrições garantem que os drivers de protocolo e filtro sejam compatíveis com versões futuras do Windows.