Partager via


structure TCP_OFFLOAD_STATE_DELEGATED (ndischimney.h)

[La fonctionnalité de déchargement de cheminée TCP est déconseillée et ne doit pas être utilisée.]

La structure TCP_OFFLOAD_STATE_DELEGATED contient les variables déléguées d’un objet d’état de connexion TCP.

Syntaxe

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;

Membres

Header

Structure OFFLOAD_STATE_HEADER. NDIS définit le membre Length de Header sur la taille, en octets, de la structure TCP_OFFLOAD_STATE_DELEGATED. Le membre RecognizedOptions du d’en-tête est réservé.

State

État actuel de la connexion TCP (voir RFC 793) comme l’une des valeurs de TCP_OFFLOAD_CONNECTION_STATE suivantes :

TcpConnectionClosed

Aucun état de connexion.

TcpConnectionListen

En attente d’une demande de connexion à partir de n’importe quel port et TCP distants.

TcpConnectionSynSent

En attente d’une demande de connexion correspondante après avoir envoyé une demande de connexion.

TcpConnectionSynRcvd

En attente d’un accusé de réception de demande de connexion de confirmation après avoir reçu et envoyé une demande de connexion.

TcpConnectionEstablished

Connexion ouverte : les données reçues peuvent être remises à l’utilisateur. État normal de la phase de transfert de données de la connexion.

TcpConnectionFinWait1

En attente d’une demande d’arrêt de connexion à partir du TCP distant ou d’un accusé de réception de la demande d’arrêt de connexion qui a été envoyée précédemment.

TcpConnectionFinWait2

En attente d’une demande d’arrêt de connexion à partir du PROTOCOLE TCP distant.

TcpConnectionCloseWait

En attente d’une demande d’arrêt de connexion de l’utilisateur local.

TcpConnectionClosing

En attente d’un accusé de réception de demande d’arrêt de connexion à partir du TCP distant.

TcpConnectionLastAck

En attente d’un accusé de réception de la demande d’arrêt de connexion précédemment envoyée au PROTOCOLE TCP distant, qui inclut un accusé de réception de sa demande d’arrêt de connexion.

TcpConnectionTimeWait

En attendant suffisamment de temps pour s’assurer que le TCP distant a reçu l’accusé de réception de sa demande d’arrêt de connexion.

Notez que la pile hôte peut décharger une connexion TCP lorsque la connexion est dans n’importe quel état, sauf tcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd,

tcpConnectionSynSent, ou état TcpConnectionTimeWait. La pile hôte peut interroger, mettre à jour, invalider ou arrêter une connexion TCP, quel que soit l’état de la connexion.

Flags

Réservé à l’utilisation du système.

RcvNxt

Numéro de séquence pour le segment de réception suivant (voir RCV. SUIVANT dans RFC 793).

RcvWnd

Taille de la fenêtre de réception, en octets (voir RCV. WND dans RFC 793).

SndUna

Numéro de séquence pour le premier octet de données non reconnues (voir SND). UNA dans RFC 793). Pour plus d’informations, consultez Envoyer des données qui contiennent des données à retransmettre.

SndNxt

Numéro de séquence pour l’octet suivant à envoyer sur la connexion (voir SND). NXT dans RFC 793). Pour plus d’informations, consultez Envoyer des données qui contiennent des données à retransmettre.

SndMax

Numéro de séquence maximal envoyé sur la connexion. Pour plus d’informations, consultez Envoyer des données qui contiennent des données à retransmettre.

SndWnd

Taille de la fenêtre d’envoi, en octets (voir SND. WND dans RFC 793).

MaxSndWnd

Taille maximale de la fenêtre d’envoi, en octets (voir RFC 813).

SendWL1

Numéro de séquence de segment utilisé pour la dernière mise à jour de fenêtre (voir SND. WL1 dans RFC 793).

CWnd

Taille de la fenêtre de congestion, en octets (voir cwnd dans RFC 2581).

SsThresh

Seuil de début lent, en octets (voir ssthresh dans RFC 2581).

SRtt

Temps d’aller-retour lisse, en cycles d’horloge (voir SRTT dans les RFC 793 et 2988). Géré par connexion, car il prend en compte le chemin d’accès, l’hôte et parfois le comportement de l’application.

RttVar

Variation de temps aller-retour, en cycles d’horloge (voir RTTVAR dans RFC 2988).

TsRecent

Valeur d’horodatage à envoyer dans l’ACK suivante (voir TS). Récent dans RFC 1323)

TsRecentAge

Durée, en cycles d’horloge, depuis la réception de l’horodatage le plus récent (voir RFC 1323).

TsTime

Valeur actuelle de l’horodatage ajusté.

TotalRT

Temps total, en cycles d’horloge, qui a été passé à retransmettre le segment TCP actuel.

DupAckCount

Nombre de kits DE contrôle d’accès acceptés pour le même numéro de séquence (voir RFC 1323).

SndWndProbeCount

Round de la sonde de fenêtre d’envoi actuelle. Pour obtenir une description de l’arrondi de la sonde de fenêtre d’envoi, consultez du minuteur de persistance.

KeepAlive

Ce membre est une union qui se compose des membres suivants :

KeepAlive.ProbeCount

Nombre de sondes keepalive envoyées qui n’ont pas reçu de réponse (voir RFC 1122).

KeepAlive.TimeoutDelta

Durée restante, en cycles d’horloge, jusqu’au prochain délai d’attente de conservation (voir RFC 1122). Notez qu’une valeur de -1 immédiatement après le déchargement de la connexion TCP indique que le minuteur keepalive n’était pas en cours d’exécution lorsque la connexion a été déchargée. Si le minuteur keepalive de la cible de déchargement n’est pas en cours d’exécution, la cible de déchargement doit retourner -1 dans ce membre lors de la réponse à un appel à la fonction MiniportQueryOffload ou à la fonction MiniportTerminateOffload.

Retransmit

Ce membre est une union qui se compose des membres suivants :

Retransmit.Count

Nombre de retransmis qui ont été envoyés (voir RFC 2581).

Retransmit.TimeoutDelta

Heure, en cycles d’horloge, restant jusqu’au prochain délai de retransmite (voir RFC 2581). Notez qu’une valeur de -1 immédiatement après le déchargement de la connexion TCP indique que le minuteur de retransmite n’était pas en cours d’exécution lorsque la connexion a été déchargée. Le minuteur de retransmite n’était pas en cours d’exécution, car il n’y avait pas de données d’envoi en attente sur la connexion lorsque la connexion a été déchargée. Si le minuteur de transfert de la cible de déchargement n’est pas en cours d’exécution, la cible de déchargement doit retourner -1 dans ce membre lors de la réponse à un appel à la fonction MiniportQueryOffload ou à la fonction MiniportTerminateOffload.

SendDataHead

Pointeur vers une structure NET_BUFFER_LIST. Cette structure NET_BUFFER_LIST se trouve dans la liste liée vers laquelle pointe le membre NetBufferListChain du NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure qui précède immédiatement la structure TCP_OFFLOAD_STATE_DELEGATED. Si le pointeur NetBufferListChain est NULL, SendDataHead n’est pas significatif.

Le pointeur SendDataHead pointe vers la première structure NET_BUFFER_LIST dont NET_BUFFER structure a mis en mémoire tampon les données d’envoi associées.

Cette variable est utilisée uniquement dans une opération de déchargement de lancement ou d’arrêt du déchargement. Pour plus d’informations sur l’utilisation de cette variable, consultez Gestion des données d’envoi en attente pendant et après une opération de déchargement et gestion des données d’envoi en attente pendant une opération de déchargement de fin.

SendDataTail

Pointeur vers une structure NET_BUFFER_LIST. Cette structure NET_BUFFER_LIST se trouve dans la liste liée pointée par le membre NetBufferListChain de la structure NDIS_MINIPORT_OFFLOAD_BLOCK_LIST qui précède immédiatement la structure TCP_OFFLOAD_STATE_DELEGATED. Si le pointeur NetBufferListChain est null, SendDataTail n’est pas significatif.

Le pointeur SendDataTail pointe vers la dernière structure NET_BUFFER_LIST dont NET_BUFFER structure a mis en mémoire tampon les données d’envoi associées.

Cette variable est utilisée uniquement dans une opération de déchargement de lancement ou d’arrêt du déchargement. Pour plus d’informations sur l’utilisation de cette variable, consultez gestion des données d’envoi en attente pendant et après une opération de déchargement et gestion des données d’envoi en attente pendant une opération de déchargement d’arrêt

SendBacklogSize

La cible de déchargement spécifie cette valeur pour indiquer le nombre d’octets de données que la pile hôte doit avoir en attente à la cible de déchargement pour des performances optimales. (Il s’agit du nombre d’octets d’envoi passés à la cible de déchargement, mais qui n’ont pas encore été terminés par la cible de déchargement.) Les variables et algorithmes spécifiques que la cible de déchargement utilise pour calculer la taille du backlog d’envoi sont spécifiques à l’implémentation. La taille du backlog d’envoi peut être une fonction du temps d’aller-retour (RTT) pour la connexion, la bande passante de l’interface et d’autres paramètres. Une cible de déchargement peut, par exemple, utiliser le minimum de la bande passante/retard produit et la fenêtre reçue annoncée. Notez toutefois que la taille du backlog d’envoi ne varie pas en fonction du nombre d’octets de données actuellement publiés pour la transmission sur la connexion.

La pile hôte peut interroger l’état délégué TCP de la connexion pour obtenir la taille du backlog d’envoi. En outre, la cible de déchargement peut indiquer une modification de la taille du backlog d’envoi en appelant le fonction NdisTcpOffloadEventHandler.

Si la cible de déchargement ne prend pas en charge la fonctionnalité de taille du backlog d’envoi, elle doit écrire une valeur de 0xFFFFFFFF dans SendBacklogSize lorsque l’état délégué TCP pour la connexion est interrogé. La variable SendBacklogSize n’est pas utilisée dans l’opération de déchargement de fin.

BufferedData

Pointeur vers les données de réception mises en mémoire tampon. La pile hôte peut transmettre ces données à la cible de déchargement lors du déchargement d’une connexion TCP. (Pour plus d’informations, consultez gestion des données de réception mises en mémoire tampon pendant et après une opération de déchargement.) La cible de déchargement peut transmettre ces données à la pile hôte lors du chargement d’une connexion TCP. (Pour plus d’informations, consultez Gestion des données de réception mises en mémoire tampon pendant une opération de déchargement de fin.)

ReceiveBacklogSize

La cible de déchargement spécifie cette valeur pour indiquer le nombre d’octets de données de réception qui sont mis en mémoire tampon dans la cible de déchargement pour la connexion TCP déchargée. La pile hôte peut interroger l’état délégué TCP de la connexion pour obtenir cette valeur. La pile hôte utilise cette valeur pour publier une ou plusieurs demandes de réception sur la connexion suffisamment volumineuses pour contenir toutes les données mises en mémoire tampon.

Si la cible de déchargement ne prend pas en charge la fonctionnalité de taille du backlog de réception, elle doit écrire une valeur de 0xFFFFFFFF pour ReceiveBacklogSize.

DWnd

Remarques

La pile hôte fournit des valeurs initiales pour les variables déléguées TCP lorsqu’elle décharge ces variables sur la cible de déchargement. Une fois déchargées, les variables déléguées TCP sont détenues et gérées par la cible de déchargement. Seule la cible de déchargement peut modifier la valeur d’une variable déléguée TCP déchargée. La cible de déchargement n’informe pas la pile hôte des modifications apportées aux valeurs des variables déléguées TCP déchargées. Toutefois, la pile hôte peut interroger la valeur des variables déléguées TCP déchargées, ce qui entraîne l’appel de la fonction MiniportQueryOff load de la cible de déchargement. Lorsque la pile hôte met fin au déchargement de l’objet d’état de connexion TCP en provoquant l’appel de NDIS à la cible de déchargement miniportTerminateOffload fonction, la cible de déchargement transmet la valeur des variables déléguées TCP dans l’objet d’état de connexion TCP terminé à la pile hôte.

Lorsqu’elle est passée à une cible de déchargement, une structure de TCP_OFFLOAD_STATE_DELEGATED est associée à un NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure, qui contient un en-tête mis en forme comme structure NDIS_OBJECT_HEADER. Le membre Révision de la structure NDIS_OBJECT_HEADER, dans ce cas, spécifie le numéro de révision de la structure TCP_OFFLOAD_STATE_DELEGATED.

Exigences

Exigence Valeur
d’en-tête ndischimney.h (include Ndischimney.h)

Voir aussi

miniportQueryOffload

MiniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST