NDIS_TCP_OFFLOAD_SEND_COMPLETE 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.]
Une cible de déchargement appelle la fonction NdisTcpOffloadSendComplete pour effectuer une ou plusieurs demandes d’envoi adressées à la fonction MiniportTcpOffloadSend de la cible de déchargement.
Syntaxe
NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;
void NdisTcpOffloadSendComplete(
[in] IN NDIS_HANDLE NdisMiniportHandle,
[in] IN PNET_BUFFER_LIST NetBufferList
)
{...}
Paramètres
[in] NdisMiniportHandle
Handle que la cible de déchargement obtenue dans un appel précédent au fonction NdisMRegisterMiniportDriver.
[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. La cible de déchargement a obtenu ces structures dans un ou plusieurs appels à son fonction miniportTcpOffloadSend.
Valeur de retour
Aucun
Remarques
Pour améliorer les performances du système, une cible de déchargement peut créer une liste liée qui contient des structures NET_BUFFER_LIST de plusieurs appels à la fonction MiniportTcpOffloadSend. Le pilote peut ensuite passer une telle liste liée dans un seul appel à la fonction NdisTcpOffloadSendComplete.
Avant d’effectuer une ou plusieurs demandes d’envoi, la cible de déchargement doit effectuer les opérations suivantes pour chaque structure NET_BUFFER_LIST qu’elle transmet à la fonction NdisTcpOffloadSendComplete :
-
Écrivez une valeur d’état dans le membre Status :
- NDIS_STATUS_SUCCESS indique que toutes les données associées au NET_BUFFER_LIST ont été correctement envoyées par la cible de déchargement et que la cible de déchargement reçue de l’hôte distant un accusé de réception pour toutes les données transmises. Notez que cela diffère de la fonction d’envoi non déchargée, MiniportSendNetBufferLists, qui ne surveille pas les accusés de réception.
- Une valeur d’état autre que NDIS_STATUS_SUCCESS, par exemple, une valeur d’état de NDIS_STATUS_REQUEST_ABORTED ou de NDIS_STATUS_UPLOAD_IN_PROGRESS-indique que les données d’envoi n’ont pas été reconnues avec succès. La cible de déchargement peut ou non avoir envoyé les données. La cible de déchargement doit échouer l’opération d’envoi pour toutes les structures de NET_BUFFER_LIST suivantes dans la liste liée sans envoyer plus de données associées à ces structures. La cible de déchargement écrit une valeur d’état de NDIS_STATUS_UPLOAD_IN_PROGRESS lorsque le déchargement de la connexion TCP sur laquelle les données doivent être envoyées est terminée. Dans ce cas, la pile hôte met en file d’attente et traite les données TCP. La cible de déchargement écrit une valeur d’état de NDIS_STATUS_REQUEST_ABORTED si elle a reçu un segment RST sur la connexion TCP sur laquelle les données doivent être envoyées. Dans ce cas, la pile hôte ne traite pas les données TCP.
- La cible de déchargement doit effectuer un envoi partiel pour, au plus, une structure NET_BUFFER_LIST dans la liste liée. La cible de déchargement écrit une valeur d’état autre que NDIS_STATUS_SUCCESS, par exemple, une valeur d’état de NDIS_STATUS_ABORTED ou de NDIS_STATUS_UPLOAD_IN_PROGRESS-dans une telle structure de NET_BUFFER_LIST.
- Si un pilote intermédiaire ne peut pas allouer de mémoire pour propager l’opération d’envoi à une cible de déchargement sous-jacente, il écrit une valeur d’état de NDIS_STATUS_REQUEST_UPLOAD dans la première structure de NET_BUFFER_LIST dans la liste liée et NDIS_STATUS_UPLOAD_REQUESTED à toutes les structures de NET_BUFFER_LIST suivantes dans la liste liée. Le pilote intermédiaire ne doit pas propager les structures NET_BUFFER_LIST à une cible de déchargement sous-jacente. La pile hôte effectue l’opération d’envoi.
- Spécifiez le nombre d’octets de données envoyés. La cible de déchargement effectue cette opération en appelant la macro NET_BUFFER_LIST_INFO avec un ID de de TcpOffloadBytesTransferred.
- Appeler le fonction NdisAdvanceNetBufferDataStart pour chaque structure NET_BUFFER associée à la structure NET_BUFFER_LIST. Le paramètre NetBuffer passé à la fonction NdisAdvanceNetBufferDataStart doit pointer vers la structure NET_BUFFER. Le paramètre DataOffsetDelta doit spécifier le nombre d’octets de données de la structure NET_BUFFER transmise par la cible de déchargement et reconnue par l’hôte distant. Le paramètre FreeMdl est NULL.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ndischimney.h (include Ndischimney.h) |
IRQL | N’importe quel niveau |