Compartilhar via


Enviando quadros Ethernet

O transporte TCP/IP do Windows dá suporte a um conjunto de requisitos para enviar quadros Ethernet. Qualquer driver (por exemplo, um driver intermediário do MUX ou driver de filtro) que origina solicitações de envio ou modifica as solicitações de envio de drivers sobrepostos deve dar suporte aos requisitos que o transporte TCP/IP implementa.

Nota Se qualquer driver em uma pilha de driver não seguir esses requisitos, os drivers de miniporto subjacentes, os drivers intermediários do MUX e os drivers de filtro poderão se comportar de forma imprevisível.

Para solicitações de envio de Ethernet, os drivers devem dar suporte a estes requisitos:

  • Se um driver originar uma solicitação de envio, o driver deverá alocar uma estrutura NET_BUFFER_LIST para os quadros Ethernet. O membro NetBufferListInfo em cada estrutura NET_BUFFER_LIST deve incluir os dados OOB (fora de banda) necessários para o uso específico. Os dados OOB se aplicam a todas as estruturas de NET_BUFFER associadas a uma estrutura NET_BUFFER_LIST.

  • Se um driver originar uma solicitação de envio, o driver deverá alocar uma ou mais estruturas NET_BUFFER para os quadros Ethernet e vincular essas estruturas à estrutura NET_BUFFER_LIST. Cada estrutura NET_BUFFER vinculada a uma estrutura NET_BUFFER_LIST descreve um único quadro Ethernet. O driver pode encadear várias estruturas NET_BUFFER_LIST em uma solicitação de envio.

  • Todas as estruturas NET_BUFFER associadas a uma estrutura NET_BUFFER_LIST devem ter o mesmo tipo de quadro Ethernet e a versão do protocolo IP (IPv4 ou IPv6).

  • Todas as estruturas NET_BUFFER associadas a uma estrutura NET_BUFFER_LIST devem ter os mesmos endereços MAC de origem e destino.

  • Se um driver estiver enviando quadros TCP ou UDP, todas as estruturas de NET_BUFFER associadas a uma estrutura NET_BUFFER_LIST deverão ser associadas à mesma conexão TCP ou UDP. Nota Sujeito aos requisitos a seguir, os quadros Ethernet transmitidos podem ser divididos. Ou seja, várias MDLs (listas de descritores de memória) podem ser associadas a uma estrutura NET_BUFFER em uma solicitação de envio.

  • Não divida o cabeçalho MAC do quadro Ethernet de transmissão em vários MDLs. Trate o sinalizador VLAN (Virtual LAN) (ou Priority), se presente, como parte do cabeçalho MAC. Portanto, esse sinalizador deve estar no mesmo MDL que o restante do cabeçalho MAC.

  • Se um driver alterar os links na cadeia MDL em uma estrutura NET_BUFFER ou a cadeia de NET_BUFFER em uma estrutura NET_BUFFER_LIST, o driver deverá restaurar os links para a configuração original antes de retornar a propriedade do NET_BUFFER_LIST para um driver de sobreposição. No entanto, os drivers não são necessários para restaurar os vínculos entre estruturas de NET_BUFFER_LIST.