Compartilhar via


Função NdisMTerminateOffloadComplete (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 NdisMTerminateOffloadComplete para concluir uma operação de descarregamento que foi iniciada por uma chamada anterior para o função MiniportTerminateOffload do destino de descarregamento.

Sintaxe

void NdisMTerminateOffloadComplete(
  [in] IN NDIS_HANDLE                       NdisMiniportHandle,
  [in] IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
);

Parâmetros

[in] NdisMiniportHandle

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

[in] OffloadBlockList

Um ponteiro para um NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estrutura. O destino de descarregamento obteve esse ponteiro como um parâmetro de entrada para seu função MiniportTerminateOffload.

Valor de retorno

Nenhum

Observações

Antes de chamar a função NdisMTerminateOffloadComplete, o destino de descarregamento deve gravar qualquer um dos seguintes valores NDIS_STATUS no membro status de cada estrutura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST na árvore de estado:

  • NDIS_STATUS_SUCCESS

    O destino de descarregamento encerrou com êxito o descarregamento do objeto de estado referenciado pela estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Se a estrutura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST for seguida por uma estrutura de estado delegada (_OFFLOAD_STATE_DELEGATED XXX), o destino de descarregamento escreveu com êxito os valores de variável delegadas para esse objeto de estado na estrutura de estado delegada.

  • NDIS_STATUS_FAILURE

    A operação de encerramento não foi bem-sucedida. Essa falha é causada por uma falha catastrófica que resultou na perda do objeto de estado que deveria ser encerrado. Nesse caso, o hardware de destino de descarregamento pode não estar respondendo. A pilha de host pode ter que anular a conexão.

Antes de chamar a função NdisMTerminateOffloadComplete, o destino de descarregamento também deve: Se houver dados de envio pendentes em uma conexão TCP que está sendo encerrada, o destino de descarregamento empacota esses dados em buffers líquidos e passa os dados empacotados para a pilha de host em uma lista vinculada de estruturas de NET_BUFFER_LIST. Nesse caso, o destino de descarregamento especifica um valor deNULL não para o membro NetBufferListChain da estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST para essa conexão. (A estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST está na lista vinculada apontada pelo ponteiro OffloadBlockList.) O membro NetBufferListChain aponta para a lista vinculada de estruturas de NET_BUFFER_LIST com as quais os dados de envio estão associados.

Ao passar dados de envio pendentes para a pilha de host, o destino de descarregamento também deve especificar valores NULLnão para as seguintes variáveis TCP delegadas para a conexão que está sendo encerrada:

  • SndUna
  • SndNxt
  • SndMax
Para obter mais informações sobre como passar dados de envio pendentes, consulte tratamento de dados de envio pendentes durante e após uma operação de descarregamento.

Se não houver dados de envio pendentes em uma conexão TCP que esteja sendo encerrada, o destino de descarregamento deverá especificar um valor de NULL para o membro NetBufferListChain.

Pode haver dados de recebimento pendentes em uma conexão TCP que está sendo carregada. Esses são os dados que o destino de descarregamento recebeu da transmissão, processado e reconhecido. Para obter mais informações sobre como processar esses dados, consulte manipulação de dados de recebimento em buffer durante uma operação de descarregamento de término.

O destino de descarregamento libera todos os recursos, como memória, associados aos objetos de estado encerrados.

Requisitos

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

Consulte também

miniportTerminateOffload

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

NdisMRegisterMiniportDriver

TCP_OFFLOAD_STATE_DELEGATED