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

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

Um destino de descarregamento chama a função NdisTcpOffloadReceiveComplete para retornar solicitações de recebimento postadas (buffers de recebimento) para a pilha de host. O destino de descarregamento recebeu anteriormente as solicitações de recebimento em uma ou mais chamadas para sua Função MiniportTcpOffloadReceive .

Sintaxe

NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;

void NdisTcpOffloadReceiveComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Parâmetros

[in] NdisMiniportHandle

O identificador que o destino de descarregamento obteve em uma chamada anterior para o Função NdisMRegisterMiniportDriver .

[in] NetBufferList

Um ponteiro para uma estrutura NET_BUFFER_LIST . Essa estrutura pode ser autônoma ou a primeira estrutura em uma lista vinculada de estruturas de NET_BUFFER_LIST. O destino de descarregamento obteve essas estruturas em uma ou mais chamadas para sua Função MiniportTcpOffloadReceive .

Retornar valor

Nenhum

Comentários

Um destino de descarregamento deve usar e retornar solicitações de recebimento apóspostas na ordem em que as solicitações foram postadas no Função MiniportTcpOffloadReceive do destino de descarregamento. Ou seja, o destino de descarregamento deve usar e retornar solicitações de recebimento absurdas na ordem FIFO (primeiro a entrar e sair).

Um destino de descarregamento deve serializar chamadas para a função NdisTcpOffloadReceiveComplete e para o Função NdisTcpOffloadReceiveHandler por conexão.

A função MiniportTcpOffloadReceive de um destino de descarregamento pode ser chamada no contexto da chamada de um destino de descarregamento para a função NdisTcpOffloadReceiveComplete . Nesse caso, um destino de descarregamento não deve chamar a função NdisTcpOffloadReceiveComplete novamente até que a chamada anterior para NdisTcpOffloadReceiveComplete tenha retornado.

Para melhorar o desempenho do sistema, um destino de descarregamento pode criar uma lista vinculada que contém as estruturas NET_BUFFER_LIST de várias chamadas para suas Função MiniportTcpOffloadReceive . O destino de descarregamento pode passar essa lista vinculada em uma única chamada para a função NdisTcpOffloadReceiveComplete . Observe que um destino de descarregamento pode distribuir as solicitações de recebimento que foram postadas em uma única chamada para o A função MiniportTcpOffloadReceive em mais de uma chamada de conclusão, desde que o destino de descarregamento conclua as solicitações de recebimento na mesma ordem em que foram postadas na função MiniportTcpOffloadReceive .

Antes de chamar a função NdisTcpOffloadReceiveComplete , o destino de descarregamento faz o seguinte para cada estrutura NET_BUFFER_LIST que passa para a função:

  • Grava um dos seguintes valores status no membro Status:
    NDIS_STATUS_SUCCESS
    O destino de descarregamento recebeu todos os dados associados às estruturas NET_BUFFER_LIST referenciadas pelo parâmetro NetBufferList . O destino de descarregamento também avançou as variáveis RcvNxt e RcvWnd no estado delegado TCP para a conexão TCP. O destino de descarregamento pode ou não ter gerado uma confirmação para os dados recebidos, dependendo se o destino de descarregamento está esperando para enviar uma confirmação atrasada.
    NDIS_STATUS_REQUEST_ABORTED
    Ocorreu um erro enquanto o destino de descarregamento processava os dados recebidos. Se o destino de descarregamento estiver fornecendo alguns dados válidos com as estruturas de NET_BUFFER_LIST apontadas pelo parâmetro NetBufferList , o destino de descarregamento especificará o número de bytes de dados válidos chamando a macro NET_BUFFER_LIST_INFO . O destino de descarregamento pode ou não ter reconhecido parte dos dados recebidos.
    NDIS_STATUS_UPLOAD_IN_PROGRESS
    A conexão na qual o buffer foi postado está sendo carregada.
    NDIS_STATUS_INVALID_STATE
    A solicitação de recebimento foi postada depois que o destino de descarregamento indicou uma desconexão chamando NdisTcpOffloadEventHandler.
  • Especifica o número de bytes de dados retornados chamando a macro NET_BUFFER_LIST_INFO com uma id de TcpOffloadBytesTransferred.
  • Chama o Função NdisAdvanceNetBufferDataStart . O parâmetro NetBufferList deve apontar para a estrutura NET_BUFFER associada à estrutura NET_BUFFER_LIST. O parâmetro DataOffsetDelta deve especificar o número de bytes de dados que o destino de descarregamento colocou nas MDLs (listas de descritores de memória) associadas à estrutura NET_BUFFER. O parâmetro FreeMdl deve ser NULL.

Requisitos

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

Confira também

MiniportTcpOffloadReceive

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver