Compartilhar via


NDIS_TCP_OFFLOAD_SEND_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 NdisTcpOffloadSendComplete para concluir uma ou mais solicitações de envio feitas para a função MiniportTcpOffloadSend do destino de descarregamento.

Sintaxe

NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;

void NdisTcpOffloadSendComplete(
  [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 uma estrutura 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 MiniportTcpOffloadSend .

Retornar valor

Nenhum

Comentários

Para melhorar o desempenho do sistema, um destino de descarregamento pode criar uma lista vinculada que contém estruturas NET_BUFFER_LIST de várias chamadas para a função MiniportTcpOffloadSend . Em seguida, o driver pode passar essa lista vinculada em uma única chamada para a função NdisTcpOffloadSendComplete .

Antes de concluir uma ou mais solicitações de envio, o destino de descarregamento deve fazer o seguinte para cada estrutura NET_BUFFER_LIST que passa para a função NdisTcpOffloadSendComplete :

  • Escreva um valor status no membro Status:
    • NDIS_STATUS_SUCCESS indica que todos os dados associados ao NET_BUFFER_LIST foram enviados com êxito pelo destino de descarregamento e que o destino de descarregamento recebeu do host remoto uma confirmação para todos os dados transmitidos. Observe que isso difere da função de envio sem descarregamento, MiniportSendNetBufferLists, que não monitora confirmações.
    • Um valor status diferente de NDIS_STATUS_SUCCESS, por exemplo, um valor status de NDIS_STATUS_REQUEST_ABORTED ou NDIS_STATUS_UPLOAD_IN_PROGRESS, indica que os dados de envio não foram reconhecidos com êxito. O destino de descarregamento pode ou não ter enviado os dados. O destino de descarregamento deve falhar na operação de envio de todas as estruturas de NET_BUFFER_LIST subsequentes na lista vinculada sem enviar mais dados associados a essas estruturas. O destino de descarregamento grava um valor status de NDIS_STATUS_UPLOAD_IN_PROGRESS quando o descarregamento da conexão TCP na qual os dados devem ser enviados está sendo encerrado. Nesse caso, o host empilha filas e processa os dados TCP. O destino de descarregamento grava um valor status de NDIS_STATUS_REQUEST_ABORTED se tiver recebido um segmento RST na conexão TCP na qual os dados devem ser enviados. Nesse caso, a pilha de host não processa os dados TCP.
    • O destino de descarregamento deve concluir um envio parcial para, no máximo, uma estrutura NET_BUFFER_LIST na lista vinculada. O destino de descarregamento grava um valor status diferente de NDIS_STATUS_SUCCESS, por exemplo, um valor status de NDIS_STATUS_ABORTED ou NDIS_STATUS_UPLOAD_IN_PROGRESS, em uma estrutura NET_BUFFER_LIST.
    • Se um driver intermediário não puder alocar memória para propagar a operação de envio para um destino de descarregamento subjacente, ele gravará um valor status de NDIS_STATUS_REQUEST_UPLOAD na primeira estrutura NET_BUFFER_LIST na lista vinculada e NDIS_STATUS_UPLOAD_REQUESTED a todas as estruturas de NET_BUFFER_LIST subsequentes na lista vinculada. O driver intermediário não deve propagar as estruturas de NET_BUFFER_LIST para um destino de descarregamento subjacente. A pilha de host executará a operação de envio.
  • Especifique o número de bytes de dados enviados. O destino de descarregamento faz isso chamando a macro NET_BUFFER_LIST_INFO com uma id de TcpOffloadBytesTransferred.
  • Chamar o Função NdisAdvanceNetBufferDataStart para cada estrutura NET_BUFFER associada à estrutura NET_BUFFER_LIST. O parâmetro NetBuffer passado para a função NdisAdvanceNetBufferDataStart deve apontar para a estrutura NET_BUFFER. O parâmetro DataOffsetDelta deve especificar o número de bytes de dados da estrutura NET_BUFFER que foram transmitidos pelo destino de descarregamento e que foram reconhecidos pelo host remoto. O parâmetro FreeMdl é NULL.

Requisitos

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

Confira também

MiniportSendNetBufferLists

MiniportTcpOffloadSend

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver