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 effectué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 a obtenu lors d’un appel précédent à 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
None
Remarques
Pour améliorer les performances du système, une cible de déchargement peut créer une liste liée contenant des structures NET_BUFFER_LIST à partir de plusieurs appels à la fonction MiniportTcpOffloadSend . Le pilote peut ensuite passer cette liste liée en 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 status dans le membre Status :
- NDIS_STATUS_SUCCESS indique que toutes les données associées à l’NET_BUFFER_LIST ont été correctement envoyées par la cible de déchargement et que la cible de déchargement a reçu 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 sans déchargement, MiniportSendNetBufferLists, qui ne surveille pas les accusés de réception.
- Une valeur status autre que NDIS_STATUS_SUCCESS(par exemple, une valeur status de NDIS_STATUS_REQUEST_ABORTED ou NDIS_STATUS_UPLOAD_IN_PROGRESS) indique que les données d’envoi n’ont pas été correctement reconnues. La cible de déchargement a peut-être 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 de données supplémentaires associées à ces structures. La cible de déchargement écrit une valeur status de NDIS_STATUS_UPLOAD_IN_PROGRESS lorsque le déchargement de la connexion TCP sur laquelle les données doivent être envoyées est en cours d’arrêt. 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 status 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 maximum, une structure NET_BUFFER_LIST dans la liste liée. La cible de déchargement écrit une valeur de status autre que NDIS_STATUS_SUCCESS(par exemple, une valeur status de NDIS_STATUS_ABORTED ou NDIS_STATUS_UPLOAD_IN_PROGRESS) dans une structure de NET_BUFFER_LIST de ce type.
- 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 status de NDIS_STATUS_REQUEST_UPLOAD dans la première structure NET_BUFFER_LIST de 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. Pour ce faire, la cible de déchargement appelle la macro NET_BUFFER_LIST_INFO avec l’IDTcpOffloadBytesTransferred.
- Appelez 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 qui ont été transmis par la cible de déchargement et qui ont été reconnus par l’hôte distant. Le paramètre FreeMdl est NULL.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ndischimney.h (inclure Ndischimney.h) |
IRQL | N’importe quel niveau |