estrutura TCP_OFFLOAD_STATE_DELEGATED (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 Length de Header como o tamanho, em bytes, da estrutura TCP_OFFLOAD_STATE_DELEGATED. O membro RecognizedOptions de Header é 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 remoto e porta.
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. 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 de 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 está em qualquer estado, exceto TcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd,
Estado TcpConnectionSynSent ou 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 de sequência máximo 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 de janela (consulte SND. WL1 em 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 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 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 aceitas 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
Esse membro é uma união 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 nesse membro ao responder a uma chamada para a função MiniportQueryOffload ou a função MiniportTerminateOffload.
Retransmit
Esse membro é uma união 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 nesse membro ao responder a uma chamada para a função MiniportQueryOffload ou a 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 NET_BUFFER_LIST cuja estrutura NET_BUFFER armazenou em buffer os dados de envio associados a ela.
Essa variável é usada somente em uma operação de descarregamento de inicialização ou de encerramento. 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 de término.
SendDataTail
Um ponteiro para uma estrutura NET_BUFFER_LIST . Essa estrutura NET_BUFFER_LIST está na lista vinculada 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 última estrutura NET_BUFFER_LIST cuja estrutura NET_BUFFER armazenou em buffer os dados de envio associados a ela.
Essa variável é usada somente em uma operação de descarregamento de inicialização ou de encerramento. 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 de término
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 específicas e o algoritmo 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 pode, 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 estão atualmente postados para transmissão na conexão.
A pilha de host pode consultar o estado delegado TCP para que a conexão obtenha o tamanho da lista de pendências de envio. Além disso, o destino de descarregamento pode indicar uma alteração no tamanho da lista de pendências de envio chamando o Função NdisTcpOffloadEventHandler .
Se o destino de descarregamento não der suporte ao recurso send-backlog-size, ele deverá gravar um valor de 0xFFFFFFFF em 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 armazenados 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 Manipulando 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 armazenados em buffer.
Se o destino de descarregamento não der suporte ao recurso de tamanho de lista de pendências de recebimento, ele deverá gravar um valor de 0xFFFFFFFF para ReceiveBacklogSize .
DWnd
Comentários
A pilha de host fornece valores iniciais para as variáveis delegadas TCP quando descarrega essas variáveis para o destino de descarregamento. Depois de descarregado, as variáveis delegadas do 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 de 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 termina 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 de 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 Revision 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) |