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