Compartilhar via


W_TCP_OFFLOAD_FORWARD_HANDLER função de retorno de chamada (ndischimney.h)

[O recurso de descarregamento de chaminé TCP foi preterido e não deve ser usado.]

O NDIS chama a função MiniportTcpOffloadForward para encaminhar segmentos TCP recebidos não reconhecidos para um destino de descarregamento.

Sintaxe

W_TCP_OFFLOAD_FORWARD_HANDLER WTcpOffloadForwardHandler;

NDIS_STATUS WTcpOffloadForwardHandler(
  [in] IN NDIS_HANDLE MiniportAdapterContext,
  [in] IN PVOID MiniportOffloadContext,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Parâmetros

[in] MiniportAdapterContext

O identificador para uma área de contexto alocada de destino de descarregamento na qual o destino de descarregamento mantém informações de estado sobre essa instância do adaptador. O driver de miniporto forneceu esse identificador para o NDIS quando ele chamou NdisMSetMiniportAttributes de sua função MiniportInitializeEx.

[in] MiniportOffloadContext

Um ponteiro para um local de memória que contém um valor PVOID. Esse valor PVOID faz referência ao contexto de descarregamento de miniporto que contém o objeto de estado para a conexão TCP para a qual os segmentos TCP estão sendo encaminhados. O destino de descarregamento forneceu esse valor PVOID quando ele descarregou o objeto de estado de conexão TCP.

[in] NetBufferList

Um ponteiro para uma estrutura NET_BUFFER_LIST. Essa estrutura pode ser uma estrutura autônoma ou a primeira estrutura em uma lista vinculada de estruturas de NET_BUFFER_LIST. Cada estrutura NET_BUFFER_LIST na lista descreve uma estrutura NET_BUFFER. Cada estrutura NET_BUFFER é mapeada para uma cadeia de MDLs (listas de descritores de memória). Os MDLs associados a uma estrutura NET_BUFFER contêm um e apenas um segmento TCP que está sendo encaminhado para o destino de descarregamento. O primeiro byte do primeiro MDL é o primeiro byte do cabeçalho TCP. Os NET_BUFFER_LIST e as estruturas associadas são bloqueados para que permaneçam residentes na memória física. No entanto, eles não são mapeados na memória do sistema.

Valor de retorno

NDIS_STATUS_PENDING é o único valor retornado permitido. Um destino de descarregamento sempre conclui uma solicitação de encaminhamento de forma assíncrona chamando o função de NdisTcpOffloadForwardComplete.

Observações

A pilha de host encaminha um ou mais segmentos TCP recebidos, mas não reconhecidos nas seguintes situações:

  • A pilha de host recebeu os segmentos em uma conexão TCP que estava sendo descarregada para o destino de descarregamento. Como a conexão não foi totalmente descarregada, o destino de descarregamento não pôde processar os segmentos TCP naquele momento.
  • A pilha de host está em um sistema multihomed que recebeu os segmentos em um adaptador de rede diferente daquele em que a conexão TCP é descarregada.
  • O destino de descarregamento indicou anteriormente pacotes recebidos que tinham opções de IP definidas e/ou que eram fragmentos que precisavam de remontagem. Depois de processar as opções de IP e/ou remontar os pacotes com êxito, a pilha de host encaminha os segmentos TCP para o destino de descarregamento.
A pilha de host nunca tenta encaminhar segmentos TCP para uma conexão TCP quando:
  • Essa conexão está sendo descarregada. A pilha de host sempre aguarda a conclusão do descarregamento da conexão antes de encaminhar os pacotes para essa conexão. A pilha de host encaminha segmentos TCP assim que possível após a conclusão do descarregamento da conexão. No entanto, não há um limite de tempo para encaminhar esses segmentos.
  • O descarregamento dessa conexão está sendo encerrado. Nesse caso, a pilha de host armazena os dados em buffer até que o término do descarregamento seja concluído e processe os segmentos.
A pilha de host encaminha segmentos TCP, não datagramas ip, para um destino de descarregamento. Portanto, o único cabeçalho que a pilha de host fornece para cada segmento é o cabeçalho TCP, incluindo todas as opções TCP presentes. Essas são todas as informações de cabeçalho que o destino de descarregamento precisa para processar o segmento recebido.

Ao encaminhar segmentos TCP, a pilha de host transfere um segmento TCP por NET_BUFFER estrutura. A pilha de host associa apenas um NET_BUFFER estrutura e, portanto, um segmento TCP encaminhado a cada estrutura NET_BUFFER_LIST na lista vinculada.

A pilha de host aloca as estruturas NET_BUFFER_LIST e associadas que o NDIS passa para a função miniportTcpOffloadForward. O destino de descarregamento possui esses recursos até que ele os passe para o função de NdisTcpOffloadForwardComplete. Embora ele possua esses recursos, o destino de descarregamento é livre para enfileira-los para processamento.

Requisitos

Requisito Valor
da Plataforma de Destino Windows
cabeçalho ndischimney.h (inclua Ndischimney.h)
IRQL Qualquer nível

Consulte também

MiniportInitializeEx

NET_BUFFER_LIST

NdisMSetMiniportAttributes

NdisTcpOffloadForwardComplete