NDIS_TCP_OFFLOAD_RECEIVE_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 NdisTcpOffloadReceiveComplete pour renvoyer les demandes de réception publiées (tampons de réception) à la pile hôte. La cible de déchargement a précédemment reçu les demandes de réception dans un ou plusieurs appels à son Fonction MiniportTcpOffloadReceive.
Syntaxe
NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;
void NdisTcpOffloadReceiveComplete(
[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 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 MiniportTcpOffloadReceive.
Valeur de retour
Aucun
Remarques
Une cible de déchargement doit utiliser et retourner les demandes de réception prépostées dans l’ordre dans lequel les demandes ont été publiées sur le fonction MiniportTcpOffloadReceive de la cible de déchargement. Autrement dit, la cible de déchargement doit utiliser et retourner les demandes de réception prépostées en premier dans l’ordre de première sortie (FIFO).
Une cible de déchargement doit sérialiser les appels à la fonction NdisTcpOffloadReceiveComplete et à la fonction fonction NdisTcpOffloadReceiveHandler par -connection.
La fonction miniportTcpOffloadReceive d’une cible de déchargement peut être appelée dans le contexte de l’appel d’une cible de déchargement à la fonction NdisTcpOffloadReceiveComplete. Dans ce cas, une cible de déchargement ne doit pas appeler la fonction NdisTcpOffloadReceiveComplete jusqu’à ce que l’appel précédent à NdisTcpOffloadReceiveComplete ait retourné.
Pour améliorer les performances du système, une cible de déchargement peut créer une liste liée qui contient les structures NET_BUFFER_LIST de plusieurs appels à son Fonction MiniportTcpOffloadReceive. La cible de déchargement peut passer une telle liste liée dans un seul appel à la fonction NdisTcpOffloadReceiveComplete. Notez qu’une cible de déchargement peut distribuer les demandes de réception qui ont été publiées dans un seul appel au fonction MiniportTcpOffloadReceive sur plusieurs appels de saisie semi-automatique tant que la cible de déchargement termine les demandes de réception dans le même ordre qu’elles ont été publiées dans la fonction MiniportTcpOffloadReceive.
Avant d’appeler la fonction NdisTcpOffloadReceiveComplete, la cible de déchargement effectue les opérations suivantes pour chaque structure NET_BUFFER_LIST qu’elle passe à la fonction :
- Écrit l’une des valeurs d’état suivantes dans le membre Status :
- NDIS_STATUS_SUCCESS
- La cible de déchargement a reçu toutes les données associées aux structures NET_BUFFER_LIST référencées par le paramètre NetBufferList. La cible de déchargement a également avancé les variables RcvNxt et RcvWnd dans l’état délégué TCP pour la connexion TCP. La cible de déchargement peut ou non avoir généré un accusé de réception pour les données reçues, selon que la cible de déchargement attend d’envoyer un accusé de réception différé.
- NDIS_STATUS_REQUEST_ABORTED
- Une erreur s’est produite pendant le traitement des données reçues par la cible de déchargement. Si la cible de déchargement fournit des données valides avec les structures NET_BUFFER_LIST pointées par le paramètre NetBufferList, la cible de déchargement spécifie le nombre d’octets de données valides en appelant la macro NET_BUFFER_LIST_INFO. La cible de déchargement peut ou non avoir reconnu une partie des données reçues.
- NDIS_STATUS_UPLOAD_IN_PROGRESS
- Connexion sur laquelle la mémoire tampon a été publiée est chargée.
- NDIS_STATUS_INVALID_STATE
- La demande de réception a été publiée après que la cible de déchargement a indiqué une déconnexion en appelant NdisTcpOffloadEventHandler.
- Spécifie le nombre d’octets de données retournés en appelant la macro NET_BUFFER_LIST_INFO avec un ID de de TcpOffloadBytesTransferred.
- Appelle le fonction NdisAdvanceNetBufferDataStart. Le paramètre NetBufferList doit pointer vers la structure NET_BUFFER associée à la structure NET_BUFFER_LIST. Le paramètre DataOffsetDelta doit spécifier le nombre d’octets de données que la cible de déchargement placée dans les listes de descripteurs de mémoire (MDL) associées à la structure NET_BUFFER. Le paramètre FreeMdl doit être NULL.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ndischimney.h (include Ndischimney.h) |
IRQL | N’importe quel niveau |