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