Compartilhar via


TCP_OFFLOAD_STATE_DELEGATED estrutura (ndischimney.h)

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

A estrutura TCP_OFFLOAD_STATE_DELEGATED contém as variáveis delegadas de um objeto de estado de conexão TCP.

Sintaxe

typedef struct _TCP_OFFLOAD_STATE_DELEGATED {
  OFFLOAD_STATE_HEADER         Header;
  TCP_OFFLOAD_CONNECTION_STATE State;
  USHORT                       Flags;
  ULONG                        RcvNxt;
  ULONG                        RcvWnd;
  ULONG                        SndUna;
  ULONG                        SndNxt;
  ULONG                        SndMax;
  ULONG                        SndWnd;
  ULONG                        MaxSndWnd;
  ULONG                        SendWL1;
  ULONG                        CWnd;
  ULONG                        SsThresh;
  USHORT                       SRtt;
  USHORT                       RttVar;
  ULONG                        TsRecent;
  ULONG                        TsRecentAge;
  ULONG                        TsTime;
  ULONG                        TotalRT;
  UCHAR                        DupAckCount;
  UCHAR                        SndWndProbeCount;
  struct {
    UCHAR ProbeCount;
    ULONG TimeoutDelta;
  } KeepAlive;
  struct {
    UCHAR Count;
    ULONG TimeoutDelta;
  } Retransmit;
  union {
    struct {
      PNET_BUFFER_LIST SendDataHead;
      PNET_BUFFER_LIST SendDataTail;
    };
    ULONG SendBacklogSize;
  };
  union {
    PNET_BUFFER_LIST BufferedData;
    ULONG            ReceiveBacklogSize;
  };
  ULONG                        DWnd;
} TCP_OFFLOAD_STATE_DELEGATED, *PTCP_OFFLOAD_STATE_DELEGATED;

Membros

Header

Uma estrutura OFFLOAD_STATE_HEADER. O NDIS define o membro de comprimento de cabeçalho para o tamanho, em bytes, da estrutura TCP_OFFLOAD_STATE_DELEGATED. O membro RecognizedOptions do Header está reservado.

State

O estado atual da conexão TCP (consulte RFC 793) como um dos seguintes valores de TCP_OFFLOAD_CONNECTION_STATE:

TcpConnectionClosed

Nenhum estado de conexão.

TcpConnectionListen

Aguardando uma solicitação de conexão de qualquer TCP e porta remotas.

TcpConnectionSynSent

Aguardando uma solicitação de conexão correspondente depois de ter enviado uma solicitação de conexão.

TcpConnectionSynRcvd

Aguardando uma confirmação da solicitação de conexão após ter recebido e enviado uma solicitação de conexão.

TcpConnectionEstablished

Uma conexão aberta: os dados recebidos podem ser entregues ao usuário. O estado normal da fase de transferência de dados da conexão.

TcpConnectionFinWait1

Aguardando uma solicitação de encerramento de conexão do TCP remoto ou uma confirmação da solicitação de encerramento de conexão que foi enviada anteriormente.

TcpConnectionFinWait2

Aguardando uma solicitação de encerramento de conexão do TCP remoto.

TcpConnectionCloseWait

Aguardando uma solicitação de encerramento de conexão do usuário local.

TcpConnectionClosing

Aguardando uma confirmação da solicitação de encerramento de conexão do TCP remoto.

TcpConnectionLastAck

Aguardando uma confirmação da solicitação de encerramento de conexão enviada anteriormente para o TCP remoto, que inclui uma confirmação de sua solicitação de encerramento de conexão.

TcpConnectionTimeWait

Aguardando tempo suficiente para passar para garantir que o TCP remoto recebeu a confirmação de sua solicitação de encerramento de conexão.

Observe que a pilha de host pode descarregar uma conexão TCP quando a conexão estiver em qualquer estado, exceto TcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd,

TcpConnectionSynSent ou estado de TcpConnectionTimeWait. A pilha de host pode consultar, atualizar, invalidar ou encerrar uma conexão TCP, independentemente do estado da conexão.

Flags

Reservado para uso do sistema.

RcvNxt

O número de sequência para o próximo segmento de recebimento (consulte RCV. AVANÇAR no RFC 793).

RcvWnd

O tamanho da janela de recebimento, em bytes (consulte RCV. WND no RFC 793).

SndUna

O número de sequência do primeiro byte de dados não reconhecidos (consulte SND. UNA no RFC 793). Para obter mais informações, consulte enviar dados que contêm dados a serem retransmitidos.

SndNxt

O número de sequência para o próximo byte a ser enviado na conexão (consulte SND. NXT no RFC 793). Para obter mais informações, consulte enviar dados que contêm dados a serem retransmitidos.

SndMax

O número máximo de sequência que foi enviado na conexão. Para obter mais informações, consulte enviar dados que contêm dados a serem retransmitidos.

SndWnd

O tamanho da janela de envio, em bytes (consulte SND. WND no RFC 793).

MaxSndWnd

O tamanho máximo da janela de envio, em bytes (consulte RFC 813).

SendWL1

O número de sequência de segmento usado para a última atualização da janela (consulte SND. WL1 no RFC 793).

CWnd

O tamanho da janela de congestionamento, em bytes (consulte cwnd no RFC 2581).

SsThresh

O limite de início lento, em bytes (consulte ssthresh no RFC 2581).

SRtt

O tempo de viagem de ida e volta suavizado, em tiques de relógio (consulte SRTT em RFCs 793 e 2988). Mantido por conexão porque leva em conta o caminho, o host e, às vezes, o comportamento do aplicativo.

RttVar

A variação de tempo de viagem de ida e volta, em tiques de relógio (consulte RTTVAR no RFC 2988).

TsRecent

O valor do carimbo de data/hora a ser enviado no próximo ACK (consulte TS. Recente no RFC 1323)

TsRecentAge

O período de tempo, em tiques de relógio, desde que o carimbo de data/hora mais recente foi recebido (consulte RFC 1323).

TsTime

O valor atual do carimbo de data/hora ajustado.

TotalRT

O tempo total, em tiques de relógio, que foi gasto retransmitindo o segmento TCP atual.

DupAckCount

O número de ACKs que foram aceitos para o mesmo número de sequência (consulte RFC 1323).

SndWndProbeCount

A rodada de investigação da janela de envio atual. Para obter uma descrição da rodada de investigação da janela de envio, consulte Persist Timer.

KeepAlive

Este membro é um sindicato que consiste nos seguintes membros:

KeepAlive.ProbeCount

O número de investigações keepalive que foram enviadas que não receberam uma resposta (consulte RFC 1122).

KeepAlive.TimeoutDelta

O tempo restante, em tiques de relógio, até o próximo tempo limite keepalive (consulte RFC 1122). Observe que um valor de -1 imediatamente após o descarregamento da conexão TCP indica que o temporizador keepalive não estava em execução quando a conexão foi descarregada. Se o temporizador keepalive do destino de descarregamento não estiver em execução, o destino de descarregamento deverá retornar -1 neste membro ao responder a uma chamada à função MiniportQueryOffload ou à função MiniportTerminateOffload.

Retransmit

Este membro é um sindicato que consiste nos seguintes membros:

Retransmit.Count

O número de retransmissões que foram enviadas (consulte RFC 2581).

Retransmit.TimeoutDelta

A hora, em tiques de relógio, permanecendo até o próximo tempo limite de retransmissão (consulte RFC 2581). Observe que um valor de -1 imediatamente após o descarregamento da conexão TCP indica que o temporizador de retransmissão não estava em execução quando a conexão foi descarregada. O temporizador de retransmissão não estava em execução porque não havia dados de envio pendentes na conexão quando a conexão foi descarregada. Se o temporizador de retransmissão do destino de descarregamento não estiver em execução, o destino de descarregamento deverá retornar -1 neste membro ao responder a uma chamada à função MiniportQueryOffload ou à função MiniportTerminateOffload.

SendDataHead

Um ponteiro para uma estrutura NET_BUFFER_LIST. Essa estrutura NET_BUFFER_LIST está na lista vinculada que é apontada pelo membro NetBufferListChain do NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estrutura que precede imediatamente a estrutura TCP_OFFLOAD_STATE_DELEGATED. Se o ponteiro NetBufferListChain for NULL, SendDataHead não será significativo.

O ponteiro SendDataHead aponta para a primeira estrutura de NET_BUFFER_LIST cuja estrutura NET_BUFFER tenha armazenado em buffer os dados de envio associados a ela.

Essa variável é usada apenas em uma operação de descarregamento ou encerramento de descarregamento. Para obter mais informações sobre como essa variável é usada, consulte manipulação de dados de envio pendentes durante e após uma operação de descarregamento e manipulação de dados de envio pendentes durante uma operação de descarregamento final.

SendDataTail

Um ponteiro para uma estrutura NET_BUFFER_LIST. Essa estrutura NET_BUFFER_LIST está na lista vinculada que é apontada pelo membro NetBufferListChain da estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST que precede imediatamente a estrutura TCP_OFFLOAD_STATE_DELEGATED. Se o ponteiro NetBufferListChain for NULL, SendDataTail não será significativo.

O ponteiro SendDataTail aponta para a estrutura do último NET_BUFFER_LIST cuja estrutura de NET_BUFFER tenha armazenado em buffer os dados de envio associados a ela.

Essa variável é usada apenas em uma operação de descarregamento ou encerramento de descarregamento. Para obter mais informações sobre como essa variável é usada, consulte Manipulando dados de envio pendentes durante e após uma operação de descarregamento e manipulando dados de envio pendentes durante uma operação de descarregamento final

SendBacklogSize

O destino de descarregamento especifica esse valor para indicar o número de bytes de dados que a pilha de host deve ter pendente no destino de descarregamento para um desempenho ideal. (Esse é o número de bytes de envio que foram passados para o destino de descarregamento, mas que ainda não foram concluídos pelo destino de descarregamento.) As variáveis e o algoritmo específicos que o destino de descarregamento usa para calcular o tamanho da lista de pendências de envio são específicos da implementação. O tamanho da lista de pendências de envio pode ser uma função do RTT (tempo de ida e volta) para a conexão, a largura de banda da interface e outros parâmetros. Um destino de descarregamento poderia, por exemplo, usar o mínimo do produto de largura de banda/atraso e a janela recebida anunciada. No entanto, observe que o tamanho da lista de pendências de envio não varia de acordo com o número de bytes de dados que atualmente são postados para transmissão na conexão.

A pilha de host pode consultar o estado delegado do TCP para que a conexão obtenha o tamanho da caixa de fundo de envio. Além disso, o destino de descarregamento pode indicar uma alteração no tamanho do backlog de envio chamando o função de NdisTcpOffloadEventHandler.

Se o destino de descarregamento não der suporte ao recurso de tamanho de backlog de envio, ele deverá gravar um valor de 0xFFFFFFFF para SendBacklogSize quando o estado delegado por TCP para a conexão for consultado. A variável SendBacklogSize não é usada na operação de descarregamento de término.

BufferedData

Um ponteiro para dados de recebimento em buffer. A pilha de host pode passar esses dados para o destino de descarregamento ao descarregar uma conexão TCP. (Para obter mais informações, consulte Manipulando dados de recebimento em buffer durante e após uma operação de descarregamento.) O destino de descarregamento pode passar esses dados para a pilha de host ao carregar uma conexão TCP. (Para obter mais informações, consulte manipulação de dados de recebimento em buffer durante uma operação de descarregamento de término.)

ReceiveBacklogSize

O destino de descarregamento especifica esse valor para indicar o número de bytes de dados de recebimento armazenados em buffer no destino de descarregamento para a conexão TCP descarregada. A pilha de host pode consultar o estado delegado TCP para que a conexão obtenha esse valor. A pilha de host usa esse valor para postar uma ou mais solicitações de recebimento na conexão que são grandes o suficiente para manter todos os dados em buffer.

Se o destino de descarregamento não der suporte ao recurso de tamanho de backlog de recebimento, ele deverá gravar um valor de 0xFFFFFFFF para ReceiveBacklogSize.

DWnd

Observações

A pilha de host fornece valores iniciais para as variáveis delegadas do TCP quando descarrega essas variáveis para o destino de descarregamento. Depois de descarregado, as variáveis delegadas TCP são de propriedade e mantidas pelo destino de descarregamento. Somente o destino de descarregamento pode alterar o valor de uma variável delegada TCP descarregada. O destino de descarregamento não notifica a pilha de host de alterações nos valores das variáveis delegadas TCP descarregadas. No entanto, a pilha de host pode consultar o valor das variáveis delegadas TCP descarregadas, o que faz com que o NDIS chame a função miniportQueryOffload do destino de descarregamento. Quando a pilha de host encerra o descarregamento do objeto de estado de conexão TCP, fazendo com que o NDIS chame o destino de descarregamento função miniportTerminateOffload, o destino de descarregamento passa o valor das variáveis delegadas TCP no objeto de estado de conexão TCP encerrado de volta para a pilha de host.

Quando passada para um destino de descarregamento, uma estrutura TCP_OFFLOAD_STATE_DELEGATED é associada a um NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estrutura, que contém um cabeçalho formatado como uma estrutura NDIS_OBJECT_HEADER. O membro Revisão da estrutura NDIS_OBJECT_HEADER, nesse caso, especifica o número de revisão da estrutura TCP_OFFLOAD_STATE_DELEGATED.

Requisitos

Requisito Valor
cabeçalho ndischimney.h (inclua Ndischimney.h)

Consulte também

miniportQueryOffload

miniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST