Partilhar via


Configuração de informações do NET_BUFFER_LIST

Um provedor de divisão de dados de cabeçalho deve definir os sinalizadores de divisão de dados de cabeçalho no NblFlags membro das estruturas de NET_BUFFER_LIST para receber indicações. Para frames divididos, uma NIC também deve fornecer o endereço físico da parte de dados do frame recebido no membro DataPhysicalAddress de cada estrutura NET_BUFFER.

Observação Um driver de miniporta pode definir o membro DataPhysicalAddress da estrutura NET_BUFFER, mesmo que o NET_BUFFER não esteja associado a um quadro dividido. Nesse caso, DataPhysicalAddress contém o endereço físico do cabeçalho MDL.

O fornecedor de divisão de cabeçalho e dados combina os sinalizadores no membro NblFlags com uma operação OR bit a bit.

O provedor de divisão de dados de cabeçalho pode definir os seguintes sinalizadores, mesmo que não divida um quadro:

NDIS_NBL_FLAGS_IS_IPV4
Todos os quadros no NET_BUFFER_LIST são quadros IPv4. Se esse sinalizador estiver definido, o sinalizador NDIS_NBL_FLAGS_IS_IPV6 não deverá ser definido.

NDIS_NBL_FLAGS_IS_IPV6
Todos os quadros no NET_BUFFER_LIST são quadros IPv6. Se esse sinalizador estiver definido, o sinalizador NDIS_NBL_FLAGS_IS_IPV4 não deverá ser definido.

NDIS_NBL_FLAGS_IS_TCP
Todos os quadros no NET_BUFFER_LIST são quadros TCP. Se este sinalizador estiver ativado, NDIS_NBL_FLAGS_IS_UDP não deve ser ativado. E NDIS_NBL_FLAGS_IS_IPV4 ou NDIS_NBL_FLAGS_IS_IPV6 devem estar definidos.

NDIS_NBL_FLAGS_IS_UDP
Todos os quadros no NET_BUFFER_LIST são quadros UDP. Se esse sinalizador estiver definido, NDIS_NBL_FLAGS_IS_TCP não deve ser definido. E NDIS_NBL_FLAGS_IS_IPV4 ou NDIS_NBL_FLAGS_IS_IPV6 devem estar definidos.

Qualquer driver NDIS pode definir os sinalizadores anteriores para depuração, teste ou outros fins. Se um driver defina estes sinalizadores, os valores devem descrever com precisão o conteúdo do frame recebido. Recomenda-se a definição desses sinalizadores.

O provedor de divisão de dados de cabeçalho pode definir os seguintes sinalizadores de divisão de dados de cabeçalho:

NDIS_NBL_FLAGS_HD_SPLIT
O cabeçalho e os dados são divididos em todos os quadros Ethernet associados à estrutura NET_BUFFER_LIST.

NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER
Todos os quadros na estrutura NET_BUFFER_LIST são divididos no início do cabeçalho do protocolo de camada superior. Se este sinalizador estiver ativado, ou NDIS_NBL_FLAGS_IS_IPV4 ou NDIS_NBL_FLAGS_IS_IPV6 deve ser ativado. Além disso, NDIS_NBL_FLAGS_IS_TCP ou NDIS_NBL_FLAGS_IS_UDP podem ser definidos. E o NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD não deve estar configurado.

NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD
Todos os quadros em uma estrutura de NET_BUFFER_LIST são divididos no início da carga útil TCP ou no início da carga útil UDP. Se este sinalizador estiver ativado, ou NDIS_NBL_FLAGS_IS_IPV4 ou NDIS_NBL_FLAGS_IS_IPV6 deve ser ativado. Devem ser definidos NDIS_NBL_FLAGS_IS_TCP ou NDIS_NBL_FLAGS_IS_UDP. Além disso, NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER não deve ser ativado.

Se o provedor de divisão de dados de cabeçalho não dividir um quadro, o quadro deve ser identificado com os seguintes sinalizadores desmarcados em NblFlags:

  • NDIS_NBL_FLAGS_HD_SPLIT

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD