Partager via


MINIPORT_CANCEL_SEND fonction de rappel (ndis.h)

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é.

Note Vous devez déclarer la fonction à l’aide du type MINIPORT_CANCEL_SEND . Pour plus d’informations, consultez la section Exemples suivante.
 

Syntaxe

MINIPORT_CANCEL_SEND MiniportCancelSend;

void MiniportCancelSend(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PVOID CancelId
)
{...}

Paramètres

[in] MiniportAdapterContext

Handle à une zone de contexte que le pilote miniport a allouée dans sa fonction MiniportInitializeEx . Le pilote miniport utilise cette zone de contexte pour conserver les informations d’état sur une carte.

[in] CancelId

Identificateur d’annulation. Cet identificateur spécifie les structures NET_BUFFER_LIST qui sont annulées.

Valeur de retour

None

Remarques

Les pilotes miniport et les pilotes intermédiaires qui envoient NET_BUFFER_LIST structures exportent une fonction MiniportCancelSend . La fonction MiniportCancelSend annule la transmission en attente des structures NET_BUFFER_LIST spécifiées.

Lorsqu’un pilote NDIS qui se superpose appelle le NdisCancelSendNetBufferLists , fonction NDIS appelle la fonction MiniportCancelSend du pilote de niveau inférieur approprié sur la liaison. NDIS effectue cet appel uniquement si le pilote de niveau inférieur exporte une fonction MiniportCancelSend .

La fonction MiniportCancelSend d’un pilote miniport effectue les opérations suivantes :

  1. Traverse sa liste de structures NET_BUFFER_LIST en file d’attente pour l’adaptateur spécifié et appelle le NDIS_GET_NET_BUFFER_LIST_CANCEL_ID macro pour obtenir l’identificateur d’annulation pour chaque structure de NET_BUFFER_LIST mise en file d’attente. Le pilote miniport compare l’identificateur d’annulation que NDIS_GET_NET_BUFFER_LIST_CANCEL_ID retourne avec l’identificateur d’annulation que NDIS a transmis à MiniportCancelSend.
  2. Supprime de la file d’attente d’envoi (un-links) toutes les structures NET_BUFFER_LIST dont les identificateurs d’annulation correspondent à l’identificateur d’annulation spécifié.
  3. Appelle le Fonction NdisMSendNetBufferListsComplete pour toutes les structures de NET_BUFFER_LIST non liées pour retourner les structures . Le pilote miniport définit le champ status des structures NET_BUFFER_LIST sur NDIS_STATUS_SEND_ABORTED.
La fonction MiniportCancelSend d’un pilote intermédiaire effectue les opérations suivantes :
  1. Effectue les opérations de la liste précédente pour la fonction MiniportCancelSend d’un pilote miniport.
  2. Appelle le Fonction NdisCancelSendNetBufferLists , spécifiant la liaison qui correspond à l’adaptateur spécifié par NDIS dans l’appel à MiniportCancelSend.
NDIS appelle MiniportCancelSend à IRQL <= DISPATCH_LEVEL.

Exemples

Pour définir une fonction MiniportCancelSend , vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction que vous définissez. Windows fournit un ensemble de types de fonctions de rappel pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction permet à l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification de trouver les erreurs, et il s’agit d’une exigence pour l’écriture de pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction MiniportCancelSend nommée « MyCancelSend », utilisez le type MINIPORT_CANCEL_SEND comme indiqué dans cet exemple de code :

MINIPORT_CANCEL_SEND MyCancelSend;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
VOID
 MyCancelSend(
    NDIS_HANDLE  MiniportAdapterContext,
    PVOID  CancelId
    )
  {...}

Le type de fonction MINIPORT_CANCEL_SEND est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lors de l’exécution des outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction MINIPORT_CANCEL_SEND dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.

Pour plus d’informations sur Use_decl_annotations, consultez Annotating Function Behavior.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
Plateforme cible Windows
En-tête ndis.h (inclure Ndis.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

MiniportInitializeEx

NDIS_GET_NET_BUFFER_LIST_CANCEL_ID

NET_BUFFER

NET_BUFFER_LIST

NdisCancelSendNetBufferLists

NdisMSendNetBufferListsComplete