Partager via


OID_TCP_TASK_OFFLOAD

La pile hôte interroge l’OID OID_TCP_TASK_OFFLOAD pour obtenir les fonctionnalités de déchargement TCP de la carte réseau d’un pilote miniport ou d’une cible de déchargement. Après avoir déterminé les fonctionnalités de déchargement prises en charge par une carte réseau ou une cible de déchargement, la pile hôte définit cet OID pour activer une ou plusieurs des fonctionnalités signalées. La pile hôte peut également désactiver toutes les fonctionnalités de déchargement TCP d’une carte réseau ou d’une cible de déchargement en définissant OID_TCP_TASK_OFFLOAD. Un seul protocole à la fois peut activer les fonctionnalités de déchargement TCP d’une carte réseau particulière.

Interrogation des fonctionnalités de déchargement

Lorsque la pile d’hôtes OID_TCP_TASK_OFFLOAD, elle fournit dans InformationBuffer une structure de NDIS_TASK_OFFLOAD_HEADER . Cette structure spécifie les éléments suivants :

  • Version de déchargement prise en charge par la pile hôte.
  • Format d’encapsulation pour les paquets d’envoi et de réception traités par la pile hôte.
  • Taille de l’en-tête d’encapsulation dans ces paquets.

Avec ces informations, un pilote miniport ou sa carte réseau peut localiser le début du premier en-tête IP dans un paquet de transmission, ce qui est une condition préalable à l’exécution d’une tâche de déchargement. Une cible de déchargement doit connaître le format d’encapsulation pour traiter les paquets de réception. En réponse à une requête de OID_TCP_TASK_OFFLOAD, un pilote miniport ou une cible de déchargement retourne, dans InformationBuffer, la structure NDIS_TASK_OFFLOAD_HEADER immédiatement suivie d’une ou plusieurs structures NDIS_TASK_OFFLOAD . Chaque structure NDIS_TASK_OFFLOAD décrit une fonctionnalité de déchargement prise en charge par la carte réseau du pilote miniport ou par la cible de déchargement. Si la carte réseau du pilote miniport ou la cible de déchargement prend en charge plusieurs versions d’une fonctionnalité de déchargement particulière, elle doit retourner une structure NDIS_TASK_OFFLOAD pour chaque version.

Chaque structure NDIS_TASK_OFFLOAD a un membre Task qui spécifie la fonctionnalité de déchargement particulière à laquelle la structure s’applique. Chaque structure NDIS_TASK_OFFLOAD possède également un TaskBuffer qui contient des informations pertinentes pour la capacité de déchargement spécifiée. Les informations contenues dans TaskBuffer sont mises en forme comme l’une des structures suivantes :

Notes

Si un pilote intermédiaire modifie le contenu des paquets qu’il transfère à un pilote miniport sous-jacent de sorte que les fonctions de déchargement TCP ne peuvent pas être effectuées sur les paquets, le pilote intermédiaire doit répondre aux requêtes OID_TCP_TASK_OFFLOAD avec une status de NDIS_STATUS_NOT_SUPPORTED au lieu de transmettre la demande OID au pilote miniport sous-jacent ou à la cible de déchargement.

Activation des fonctionnalités de déchargement

Après avoir interrogé les fonctionnalités de déchargement d’une carte réseau ou d’une cible de déchargement, la pile hôte active une ou plusieurs de ces fonctionnalités en définissant OID_TCP_TASK_OFFLOAD. Lorsque vous définissez OID_TCP_TASK_OFFLOAD, la pile hôte fournit, dans InformationBuffer, une structure de NDIS_TASK_OFFLOAD_HEADER suivie immédiatement d’une structure de NDIS_TASK_OFFLOAD pour chaque fonctionnalité de déchargement activée par la pile hôte.

La tâche de chaque structure NDIS_TASK_OFFLOAD indique la fonctionnalité de déchargement activée par la pile hôte. La pile hôte active également des aspects spécifiques d’une fonctionnalité de déchargement particulière en définissant les membres de la structure dans taskBuffer de chaque structure NDIS_TASK_OFFLOAD.

Modification des fonctionnalités de déchargement

Pour modifier les fonctionnalités de déchargement activées pour une carte réseau ou une cible de déchargement, la pile hôte définit OID_TCP_TASK_OFFLOAD. Le pilote miniport ou la cible de déchargement doit activer uniquement les fonctionnalités de déchargement spécifiées par l’ensemble de OID_TCP_TASK_OFFLOAD le plus récent. Le pilote miniport ou la cible de déchargement doit désactiver toutes les autres fonctionnalités de déchargement. Notez qu’avant de désactiver une fonctionnalité de déchargement de cheminée TCP spécifique, la pile hôte met fin au déchargement de toutes les connexions TCP déchargées qui utilisent cette fonctionnalité.

Une cible de déchargement peut utiliser les indications de mise en pause ou de reprise du déchargement pour modifier ses fonctionnalités de déchargement TCP signalées :

  • Une cible de déchargement effectue une indication de pause en appelant la fonction NdisMIndicateStatusEx avec le membre NDIS_STATUS_INDICATION-StatusCode> défini sur NDIS_STATUS_OFFLOAD_PAUSE.
  • Une cible de déchargement effectue une indication de reprise d’activité en appelant la fonction NdisMIndicateStatusEx avec le membre NDIS_STATUS_INDICATION-StatusCode> défini sur NDIS_STATUS_OFFLOAD_RESUME.

Une fois qu’une cible de déchargement a demandé à la pile de l’hôte de reprendre le déchargement des objets d’état, la pile hôte OID_TCP_TASK_OFFLOAD à nouveau pour obtenir les fonctionnalités révisées de déchargement TCP de la cible de déchargement. Pour plus d’informations, consultez NDIS_STATUS_OFFLOAD_RESUME.

Désactivation des fonctionnalités de déchargement

Pour désactiver toutes les fonctionnalités de déchargement prises en charge par une carte réseau ou une cible de déchargement, la pile hôte définit OID_TCP_TASK_OFFLOAD. Dans InformationBuffer, la pile hôte fournit une structure NDIS_TASK_OFFLOAD_HEADER avec le membre OffsetFirstTask de cette structure défini sur zéro.

Spécifications

Version : Windows Vista et versions ultérieures En-tête : Ntddndis.h (inclure Ndis.h)