W_TCP_OFFLOAD_FORWARD_HANDLER fonction de rappel (ndischimney.h)
[La fonctionnalité de déchargement de cheminée TCP est déconseillée et ne doit pas être utilisée.]
NDIS appelle la fonction MiniportTcpOffloadForward pour transférer des segments TCP reçus non connus vers une cible de déchargement.
Syntaxe
W_TCP_OFFLOAD_FORWARD_HANDLER WTcpOffloadForwardHandler;
NDIS_STATUS WTcpOffloadForwardHandler(
[in] IN NDIS_HANDLE MiniportAdapterContext,
[in] IN PVOID MiniportOffloadContext,
[in] IN PNET_BUFFER_LIST NetBufferList
)
{...}
Paramètres
[in] MiniportAdapterContext
Handle vers une zone de contexte allouée à une cible de déchargement dans laquelle la cible de déchargement conserve les informations d’état sur cette instance de l’adaptateur. Le pilote miniport a fourni cette poignée à NDIS lorsqu’il a appelé NdisMSetMiniportAttributes à partir de son fonction MiniportInitializeEx.
[in] MiniportOffloadContext
Pointeur vers un emplacement de mémoire qui contient une valeur PVOID. Cette valeur PVOID fait référence au contexte de déchargement miniport qui contient l’objet d’état pour la connexion TCP pour laquelle les segments TCP sont transférés. La cible de déchargement a fourni cette valeur PVOID lorsqu’elle a déchargé l’objet d’état de connexion TCP.
[in] NetBufferList
Pointeur vers une structure NET_BUFFER_LIST. Cette structure peut être une structure autonome ou la première structure d’une liste liée de structures NET_BUFFER_LIST. Chaque structure NET_BUFFER_LIST de la liste décrit une structure NET_BUFFER. Chaque structure NET_BUFFER est mappée à une chaîne de listes de descripteurs de mémoire (MDL). Les DLL associées à une structure NET_BUFFER contiennent un seul segment TCP qui est transféré à la cible de déchargement. Le premier octet du premier MDL est le premier octet de l’en-tête TCP. Les NET_BUFFER_LIST et les structures associées sont verrouillées afin qu’elles restent résident dans la mémoire physique. Toutefois, ils ne sont pas mappés à la mémoire système.
Valeur de retour
NDIS_STATUS_PENDING est la seule valeur de retour autorisée. Une cible de déchargement termine toujours une demande de transfert de façon asynchrone en appelant le fonction ndisTcpOffloadForwardComplete.
Remarques
La pile hôte transfère un ou plusieurs segments TCP qu’il a reçus, mais qui ne sont pas reconnus dans les situations suivantes :
- La pile hôte a reçu les segments d’une connexion TCP en cours de déchargement vers la cible de déchargement. Étant donné que la connexion n’a pas été entièrement déchargée, la cible de déchargement n’a pas pu traiter les segments TCP à ce moment-là.
- La pile hôte se trouve dans un système multihomed qui a reçu les segments d’une interface réseau autre que celle sur laquelle la connexion TCP est déchargée.
- La cible de déchargement indiquait précédemment les paquets reçus dont les options IP étaient définies et/ou qui étaient des fragments nécessaires à la réassemblage. Après avoir traité les options IP et/ou réassemblé correctement les paquets, la pile hôte transfère les segments TCP à la cible de déchargement.
- Cette connexion est déchargée. La pile hôte attend toujours la fin du déchargement de la connexion avant de transférer les paquets pour cette connexion. La pile hôte transfère les segments TCP dès que possible une fois le déchargement de la connexion terminée. Toutefois, il n’existe aucune limite de temps pour le transfert de ces segments.
- Le déchargement de cette connexion est en cours d’arrêt. Dans ce cas, la pile hôte met en mémoire tampon les données jusqu’à ce que l’arrêt du déchargement se termine, puis traite les segments.
Lors du transfert de segments TCP, la pile hôte transfère un segment TCP par structure NET_BUFFER. La pile hôte associe une seule structure NET_BUFFER, et donc un segment TCP transféré, à chaque structure NET_BUFFER_LIST dans la liste liée.
La pile hôte alloue les structures NET_BUFFER_LIST et associées que NDIS transmet à la fonction MiniportTcpOffloadForward. La cible de déchargement possède ces ressources jusqu’à ce qu’elle les passe au fonction ndisTcpOffloadForwardComplete. Bien qu’elle possède ces ressources, la cible de déchargement est libre de les mettre en file d’attente pour traitement.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Windows |
d’en-tête | ndischimney.h (include Ndischimney.h) |
IRQL | N’importe quel niveau |