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 miniporta 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 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 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. As NET_BUFFER_LIST e as estruturas associadas são bloqueadas para que permaneçam residentes na memória física. No entanto, eles não são mapeados para a memória do sistema.

Retornar valor

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 NdisTcpOffloadForwardComplete .

Comentários

A pilha de host encaminha um ou mais segmentos TCP recebidos, mas não confirmados 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 no qual 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á nenhum 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 encerramento 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 estrutura de NET_BUFFER. A pilha de host associa apenas uma estrutura NET_BUFFER e, portanto, um segmento TCP encaminhado a cada estrutura NET_BUFFER_LIST na lista vinculada.

A pilha de host aloca o NET_BUFFER_LIST e as estruturas 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 NdisTcpOffloadForwardComplete . Embora ele possua esses recursos, o destino de descarregamento é livre para enfileira-los para processamento.

Requisitos

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

Confira também

MiniportInitializeEx

NET_BUFFER_LIST

NdisMSetMiniportAttributes

NdisTcpOffloadForwardComplete