Annulation d’une demande d’envoi dans un pilote Miniport
La figure suivante illustre une opération d’annulation d’envoi d’un pilote miniport.
Les pilotes de protocole, de filtre et intermédiaire peuvent appeler NdisCancelSendNetBufferLists pour annuler les demandes d’envoi en attente. Ces pilotes qui se superposent doivent marquer les données d’envoi avec un ID d’annulation avant d’effectuer une demande d’envoi.
NDIS appelle la fonction MiniportCancelSend d’un pilote miniport pour annuler la transmission de toutes les structures NET_BUFFER_LIST marquées avec un identificateur d’annulation spécifié.
La fonction MiniportCancelSend d’un pilote miniport effectue les opérations suivantes :
Traverse la liste des demandes d’envoi en attente pour l’adaptateur spécifié et appelle NDIS_GET_NET_BUFFER_LIST_CANCEL_ID pour obtenir l’identificateur d’annulation pour chaque structure NET_BUFFER_LIST. Le pilote miniport compare l’ID d’annulation que NDIS_GET_NET_BUFFER_LIST_CANCEL_ID retourne avec l’ID d’annulation que NDIS a transmis à MiniportCancelSend.
Supprime de toutes les structures de NET_BUFFER_LIST dont les identificateurs d’annulation correspondent à l’identificateur d’annulation spécifié de sa liste de demandes d’envoi en attente.
Appelle la fonction NdisMSendNetBufferListsComplete pour toutes les structures NET_BUFFER_LIST annulées afin de retourner les structures. Le pilote miniport définit le champ status des structures NET_BUFFER_LIST sur NDIS_STATUS_SEND_ABORTED.