Partilhar via


Acessar informações da NET_BUFFER_LIST de descarga de TCP/IP

As versões 6.0 e posteriores do NDIS fornecem dados de descarregamento de TCP/IP fora de banda (OOB) no membro NetBufferListInfo da estrutura NET_BUFFER_LIST , que especifica uma lista vinculada de estruturas NET_BUFFER . O membro NetBufferListInfo é uma matriz de valores que contém informações comuns a todas as estruturas de NET_BUFFER na lista.

Use os seguintes identificadores com a macro NET_BUFFER_LIST_INFO para definir e obter os dados OOB de descarregamento de TCP/IP na matriz NetBufferListInfo :

TcpIpChecksumNetBufferListInfo
Especifica as informações da soma de verificação que são usadas no descarregamento de tarefas de soma de verificação do protocolo TCP/IP para um driver de miniporta. Quando você especifica TcpIpChecksumNetBufferListInfo, NET_BUFFER_LIST_INFO retorna uma estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO (não um ponteiro para a estrutura). Essa estrutura contém uma união que permite que as informações da soma de verificação sejam acessadas como um único valor PVOID ou como campos de bits.

IPsecOffloadV1NetBufferListInfo
Especifica as informações de segurança IPsec usadas para descarregar tarefas do protocolo TCP/IP para um driver de miniporta. Quando você especifica IPsecOffloadV1NetBufferListInfo, NET_BUFFER_LIST_INFO retorna uma estrutura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO .

TcpLargeSendNetBufferListInfo
Especifica as informações usadas para descarregar a segmentação de um pacote TCP grande do protocolo TCP/IP para um driver de miniporta. Quando você especifica TcpLargeSendNetBufferListInfo, NET_BUFFER_LIST_INFO retorna uma estrutura NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO (não um ponteiro para a estrutura). Essa estrutura contém uma união que permite que as informações sejam acessadas como um único valor PVOID ou como campos de bits.

Ieee8021QNetBufferListInfo
Especifica informações 802.1Q sobre um pacote. Quando você especifica Ieee8021QNetBufferListInfo, NET_BUFFER_LIST_INFO retorna o membro Value de uma estrutura NDIS_NET_BUFFER_LIST_8021Q_INFO . Essa estrutura pode especificar a prioridade 802.1p e informações de identificador de LAN virtual (VLAN). As informações de prioridade 802.1p são usadas para estabelecer a prioridade de pacotes em redes 802 de mídia compartilhada.

Se um driver de miniporta relatar suporte para o encapsulamento NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB, ele deverá inserir os dados Ieee8021QNetBufferListInfo em pacotes Ethernet de descarregamento de envio grande, versões 1 (LSOV1) e 2 (LSOV2).

TcpOffloadBytesTransferred
Especifica o número de bytes de dados que foram transferidos em uma operação de descarga, recebimento ou desconexão de chaminé TCP.

TcpReceiveNoPush
Especifica um valor booleano que representa o modo de envio de uma solicitação de recebimento de descarregamento de chaminé TCP. Se TRUE, a solicitação de recebimento encontra-se no modo não-push. Caso contrário, a solicitação de recebimento estará no modo push.

Para os tipos de descarregamento LSOV1, LSOV2, soma de verificação e IPsec, um driver de miniporta executa o descarregamento de tarefas com base no tipo de dados OOB e nos recursos de descarregamento relatados. Por exemplo, se um driver de protocolo requer serviços LSOV1 para um pacote IPv4, cada solicitação de envio que o driver de protocolo fornece inclui as informações do membro LsoV1Transmit nos dados OOB NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO . Observe que o driver de protocolo deve verificar se o driver de miniporta suporta IPv4, com o tipo de encapsulamento especificado, antes de fazer a solicitação de envio.

A estrutura NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO contém o tamanho máximo do segmento (MSS). O membro TcpHeaderOffset especifica o local do cabeçalho TCP para que o driver de miniporta não precise analisar cabeçalhos IP, opções de IP ou cabeçalhos de extensão IP.

Um driver de miniporta NDIS 6.0 e posterior que suporta LSOV2 e LSOV1 deve verificar o membro Tipo de NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO para determinar se a stack de drivers está a utilizar LSOV2 ou LSOV1 e deve executar o descarregamento apropriado.

Para LSOv1, antes que um driver de miniporta conclua o envio de um pacote TCP grande que ele segmentou em pacotes menores usando LSO, o driver grava o número de bytes de carga TCP que enviou nos pacotes segmentados no membro TcpPayload do NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO.

Se um driver de miniporta especificar o sinalizador NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q nas suas funcionalidades, o driver poderá descarregar tarefas para estruturas NET_BUFFER_LIST que contenham o cabeçalho VLAN nos dados do buffer. No caso de dados recebidos, esse sinalizador indica que o driver de miniporta executará o cálculo da soma de verificação de recebimento e colocará o cabeçalho VLAN no pacote Ethernet.

Se um driver de miniporta especificar o sinalizador NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB nas suas capacidades, o driver pode executar o descarregamento em estruturas NET_BUFFER_LIST que contêm o cabeçalho VLAN nos dados OOB Ieee8021QnetBufferListInfo. No caso de descarregamento da soma de verificação de receção, o miniport insere o cabeçalho VLAN nos dados OOB Ieee8021QnetBufferListInfo.