Condividi tramite


TCP_OFFLOAD_STATE_DELEGATED struttura (ndischimney.h)

[La funzionalità di offload del camino TCP è deprecata e non deve essere usata.]

La struttura TCP_OFFLOAD_STATE_DELEGATED contiene le variabili delegate di un oggetto stato connessione TCP.

Sintassi

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;

Members

Header

Struttura OFFLOAD_STATE_HEADER . NDIS imposta il membro Length di Intestazione sulle dimensioni, in byte, della struttura TCP_OFFLOAD_STATE_DELEGATED. Il membro RecognizedOptions di Header è riservato.

State

Lo stato corrente della connessione TCP (vedere RFC 793) come uno dei valori di TCP_OFFLOAD_CONNECTION_STATE seguenti:

TcpConnectionClosed

Nessun stato di connessione.

TcpConnectionListen

In attesa di una richiesta di connessione da qualsiasi tcp e porta remota.

TcpConnectionSynSent

Attesa di una richiesta di connessione corrispondente dopo aver inviato una richiesta di connessione.

TcpConnectionSynRcvd

In attesa di una conferma della richiesta di connessione dopo aver ricevuto e inviato una richiesta di connessione.

TcpConnectionEstablished

Una connessione aperta: i dati ricevuti possono essere recapitati all'utente. Stato normale per la fase di trasferimento di dati della connessione.

TcpConnectionFinWait1

In attesa di una richiesta di terminazione della connessione dal TCP remoto o un riconoscimento della richiesta di terminazione della connessione inviata in precedenza.

TcpConnectionFinWait2

In attesa di una richiesta di terminazione della connessione dal TCP remoto.

TcpConnectionCloseWait

In attesa di una richiesta di terminazione della connessione dall'utente locale.

TcpConnectionClosing

In attesa di un riconoscimento della richiesta di terminazione della connessione dal TCP remoto.

TcpConnectionLastAck

In attesa di un riconoscimento della richiesta di terminazione della connessione inviata in precedenza al TCP remoto, che include un riconoscimento della richiesta di terminazione della connessione.

TcpConnectionTimeWait

In attesa del tempo sufficiente per garantire che il TCP remoto abbia ricevuto il riconoscimento della richiesta di terminazione della connessione.

Si noti che lo stack host può scaricare una connessione TCP quando la connessione è in qualsiasi stato tranne TcpConnectionClosed, TcpConnectionListen,TcpConnectionSynRcvd,

Stato TcpConnectionSynSent o TcpConnectionTimeWait . Lo stack host può eseguire query, aggiornare, invalidare o terminare una connessione TCP indipendentemente dallo stato della connessione.

Flags

Riservato per l'utilizzo nel sistema.

RcvNxt

Numero di sequenza per il segmento di ricezione successivo (vedere RCV. AVANTI in RFC 793.

RcvWnd

Dimensioni della finestra di ricezione, in byte (vedere RCV. WND in RFC 793.

SndUna

Numero di sequenza per il primo byte di dati non riconosciuti (vedere SND). UNA in RFC 793. Per altre informazioni, vedere Inviare dati contenenti dati da ritrasmettere.

SndNxt

Numero di sequenza per il byte successivo da inviare sulla connessione (vedere SND. NXT in RFC 793. Per altre informazioni, vedere Inviare dati contenenti dati da ritrasmettere.

SndMax

Numero massimo di sequenza inviato sulla connessione. Per altre informazioni, vedere Inviare dati contenenti dati da ritrasmettere.

SndWnd

Dimensioni della finestra di invio, in byte ( vedere SND. WND in RFC 793.

MaxSndWnd

Dimensioni massime della finestra di invio, in byte (vedere RFC 813).

SendWL1

Numero di sequenza di segmento usato per l'ultimo aggiornamento della finestra (vedere SND. WL1 in RFC 793).

CWnd

Dimensioni della finestra di congestione, in byte (vedere cwnd in RFC 2581).

SsThresh

Soglia di avvio lenta, in byte (vedere ssthresh in RFC 2581).

SRtt

L'ora di round trip liscia, nei tick dell'orologio (vedere SRTT in RFCs 793 e 2988). Gestito in base a ogni connessione perché prende in considerazione il percorso, l'host e talvolta il comportamento dell'applicazione.

RttVar

La variazione dell'ora di round trip, nei punti di spunta dell'orologio (vedere RTTVAR in RFC 2988).

TsRecent

Valore timestamp da inviare nel successivo ACK (vedere TS). Recente in RFC 1323)

TsRecentAge

Lunghezza di tempo, in punti di orologio, dal momento che il timestamp più recente è stato ricevuto (vedere RFC 1323).

TsTime

Valore corrente del timestamp modificato.

TotalRT

Il tempo totale, nei tick dell'orologio, che è stato trascorso ritrasmettere il segmento TCP corrente.

DupAckCount

Numero di SDK accettati per lo stesso numero di sequenza (vedere RFC 1323).

SndWndProbeCount

Round del probe della finestra di invio corrente. Per una descrizione del probe della finestra di invio, vedere Timer persistente.

KeepAlive

Questo membro è un'unione costituita dai membri seguenti:

KeepAlive.ProbeCount

Numero di probe keepalive inviati che non hanno ricevuto una risposta (vedere RFC 1122).

KeepAlive.TimeoutDelta

Il tempo rimanente, nei segni di orologio, fino al timeout di keepalive successivo (vedere RFC 1122). Si noti che un valore pari a -1 immediatamente dopo il caricamento della connessione TCP indica che il timer keepalive non è in esecuzione quando la connessione è stata disattivata. Se il timer keepalive della destinazione di offload non è in esecuzione, la destinazione di offload deve restituire -1 in questo membro quando risponde a una chiamata alla funzione MiniportQueryOffload o alla funzione MiniportTerminateOffload.

Retransmit

Questo membro è un'unione costituita dai membri seguenti:

Retransmit.Count

Numero di ritrasmettezioni inviate (vedere RFC 2581).

Retransmit.TimeoutDelta

L'ora, nei segni di orologio, rimane fino al successivo timeout di ritrasmissione (vedere RFC 2581). Si noti che un valore di -1 immediatamente dopo il caricamento della connessione TCP indica che il timer di ritrasmissione non è stato eseguito quando la connessione è stata disattivata. Il timer di ritrasmissione non è in esecuzione perché non sono presenti dati di invio in sospeso sulla connessione quando la connessione è stata disattivata. Se il timer di ritrasmissione della destinazione di offload non è in esecuzione, la destinazione di offload deve restituire -1 in questo membro quando risponde a una chiamata alla funzione MiniportQueryOffload o alla funzione MiniportTerminateOffload.

SendDataHead

Puntatore a una struttura NET_BUFFER_LIST . Questa struttura NET_BUFFER_LIST si trova nell'elenco collegato a cui fa riferimento il membro NetBufferListChain del NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struttura che precede immediatamente la struttura TCP_OFFLOAD_STATE_DELEGATED. Se il puntatore NetBufferListChain è NULL, SendDataHead non è significativo.

Il puntatore SendDataHead punta alla prima struttura NET_BUFFER_LIST la cui struttura NET_BUFFER ha memorizzato il buffer dei dati di invio associati.

Questa variabile viene usata solo in un'operazione di offload avvia o termina l'offload. Per altre informazioni su come viene usata questa variabile, vedere Gestione dei dati di invio in sospeso durante e dopo un'operazione di offload e gestione dei dati di invio in sospeso durante un'operazione di offload termina.

SendDataTail

Puntatore a una struttura NET_BUFFER_LIST . Questa struttura NET_BUFFER_LIST si trova nell'elenco collegato a cui fa riferimento il membro NetBufferListChain della struttura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST che precede immediatamente la struttura TCP_OFFLOAD_STATE_DELEGATED. Se il puntatore NetBufferListChain è NULL, SendDataTail non è significativo.

Il puntatore SendDataTail punta all'ultima struttura NET_BUFFER_LIST la cui struttura NET_BUFFER ha memorizzato il buffer dei dati di invio associati.

Questa variabile viene usata solo in un'operazione di offload avvia o termina l'offload. Per altre informazioni su come viene usata questa variabile, vedere Gestione dei dati di invio in sospeso durante e dopo un'operazione di offload e gestione dei dati di invio in sospeso durante un'operazione di offload termina

SendBacklogSize

La destinazione di offload specifica questo valore per indicare il numero di byte di dati che lo stack host deve avere in sospeso nella destinazione di offload per prestazioni ottimali. Questo è il numero di byte di invio passati alla destinazione di offload, ma che non sono ancora stati completati dalla destinazione di offload. Le variabili e l'algoritmo specifici usati dalla destinazione di offload per calcolare le dimensioni del backlog di invio sono specifiche dell'implementazione. Le dimensioni del backlog di invio possono essere una funzione del tempo di andata e ritorno (RTT) per la connessione, la larghezza di banda dell'interfaccia e altri parametri. Una destinazione di offload potrebbe, ad esempio, usare il minimo del prodotto di larghezza di banda/ritardo e la finestra ricevuta annunciata. Si noti tuttavia che le dimensioni del backlog di invio non variano in base al numero di byte di dati attualmente pubblicati per la trasmissione sulla connessione.

Lo stack host può eseguire una query sullo stato delegato TCP per la connessione per ottenere le dimensioni del backlog di invio. Inoltre, la destinazione di offload può indicare una modifica nella dimensione del backlog di invio chiamando Funzione NdisTcpOffloadEventHandler .

Se la destinazione di offload non supporta la funzionalità send-backlog-size, deve scrivere un valore di 0xFFFFFFFF a SendBacklogSize quando viene eseguito una query sullo stato delegato TCP per la connessione. La variabile SendBacklogSize non viene usata nell'operazione di offload termina.

BufferedData

Puntatore alla ricezione dei dati memorizzati nel buffer. Lo stack host può passare tali dati alla destinazione di offload durante l'offload di una connessione TCP. Per altre informazioni, vedere Gestione dei dati di ricezione memorizzati nel buffer durante e dopo un'operazione di offload. La destinazione di offload può passare tali dati allo stack host durante il caricamento di una connessione TCP. Per altre informazioni, vedere Gestione dei dati di ricezione memorizzati nel buffer durante un'operazione di offload terminate.

ReceiveBacklogSize

La destinazione di offload specifica questo valore per indicare il numero di byte di dati di ricezione memorizzati nel buffer nella destinazione di offload per la connessione TCP offloaded. Lo stack host può eseguire una query sullo stato delegato TCP per ottenere questo valore per la connessione. Lo stack host usa questo valore per inserire una o più richieste di ricezione sulla connessione sufficientemente grandi da contenere tutti i dati memorizzati nel buffer.

Se la destinazione di offload non supporta la funzionalità di dimensioni backlog di ricezione, deve scrivere un valore di 0xFFFFFFFF in ReceiveBacklogSize .

DWnd

Commenti

Lo stack host fornisce i valori iniziali per le variabili delegate TCP quando esegue l'offload di queste variabili nella destinazione di offload. Dopo l'offload, le variabili delegate TCP sono di proprietà e gestite dalla destinazione di offload. Solo la destinazione di offload può modificare il valore di una variabile delegata TCP offloaded. La destinazione di offload non notifica allo stack host le modifiche apportate ai valori delle variabili delegate TCP caricate. Tuttavia, lo stack host può eseguire una query sul valore delle variabili delegate TCP caricate, causando la chiamata della funzione MiniportQueryOffload della destinazione di offload. Quando lo stack host termina l'offload dell'oggetto stato della connessione TCP causando la chiamata di NDIS alla destinazione di offload La funzione MiniportTerminateOffload , la destinazione di offload passa nuovamente il valore delle variabili delegate TCP nell'oggetto stato di connessione TCP terminato allo stack host.

Quando viene passato a una destinazione di offload, una struttura TCP_OFFLOAD_STATE_DELEGATED è associata a un oggetto NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struttura, che contiene un'intestazione formattata come struttura NDIS_OBJECT_HEADER . Il membro Revision della struttura NDIS_OBJECT_HEADER, in questo caso, specifica il numero di revisione della struttura TCP_OFFLOAD_STATE_DELEGATED.

Requisiti

Requisito Valore
Intestazione ndischimney.h (include Ndischimney.h)

Vedi anche

MiniportQueryOffload

MiniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST