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 de término 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 para o qual o destino de descarregamento foi obtido 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 .

Retornar valor

Nenhum

Comentários

Antes de chamar a função NdisMTerminateOffloadComplete , o destino de descarregamento deve gravar um dos seguintes valores NDIS_STATUS no membro Status de cada estrutura 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 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST for seguida por uma estrutura de estado delegado (XXX_OFFLOAD_STATE_DELEGATED), o destino de descarregamento escreveu com êxito os valores de variável delegados para esse objeto de estado na estrutura de estado delegado.

  • 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 não NULL 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 não NULL 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 Manipulando 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 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, processados e confirmados. Para obter mais informações sobre como processar esses dados, consulte Manipulando 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
Plataforma de Destino Universal
Cabeçalho ndischimney.h (inclua Ndischimney.h)
IRQL Qualquer nível

Confira também

MiniportTerminateOffload

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

NdisMRegisterMiniportDriver

TCP_OFFLOAD_STATE_DELEGATED