PROTOCOL_CL_OPEN_AF_COMPLETE_EX fonction de rappel (ndis.h)

La fonction ProtocolClOpenAfCompleteEx termine l’ouverture d’une famille d’adresses (AF) qui a été démarrée lorsqu’un client CoNDIS a appelé la fonction NdisClOpenAddressFamilyEx .

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

Syntaxe

PROTOCOL_CL_OPEN_AF_COMPLETE_EX ProtocolClOpenAfCompleteEx;

void ProtocolClOpenAfCompleteEx(
  [in] NDIS_HANDLE ProtocolAfContext,
  [in] NDIS_HANDLE NdisAfHandle,
  [in] NDIS_STATUS Status
)
{...}

Paramètres

[in] ProtocolAfContext

Handle fourni par le client dans sa zone de contexte pour un af af d’adresse. Le client a alloué cette zone de contexte et a passé ce handle à NDIS dans son appel à Fonction NdisClOpenAddressFamilyEx .

[in] NdisAfHandle

Handle fourni par NDIS à un af, si Status est NDIS_STATUS_SUCCESS. Sinon, ce paramètre est NULL. Ce handle représente une association établie par NDIS entre le client et un gestionnaire d’appels lié à un adaptateur miniport CoNDIS. Si le handle n’est pas NULL, le client doit enregistrer le handle pour l’utiliser dans les appels suivants aux fonctions NdisClXxx et NdisCoXxx .

[in] Status

Le status final de l’appel du client à NdisClOpenAddressFamilyEx, qui peut être l’un des éléments suivants :

NDIS_STATUS_SUCCESS

L’AF a été ouvert, de sorte que le client peut initialiser son état sur ProtocolAfContext et utiliser le handle retourné par NdisAfHandle dans les appels suivants aux fonctions NdisClXxx et NdisCoXxx , telles que NdisCoOidRequest.

NDIS_STATUS_RESOURCES

L’opération demandée a échoué, car NDIS ou le gestionnaire d’appels n’a pas pu allouer suffisamment de mémoire ou initialiser l’état utilisé par l’un d’eux pour suivre l’ouverture du client de l’AF spécifiée par ProtocolAfContext .

NDIS_STATUS_FAILURE

NDIS a échoué l’appel, peut-être pour l’une des raisons suivantes :

  • L’AF donné ne correspond à aucun AF qui a été inscrit pour le pilote miniport sous-jacent auquel l’appelant est lié.
  • La liaison de l’adaptateur de l’appelant se ferme.
  • Le gestionnaire d’appels qui a inscrit l’AF spécifié ferme sa liaison à l’adaptateur miniport sous-jacent.

Valeur de retour

None

Remarques

La fonction ProtocolClOpenAfCompleteEx est requise pour les clients CoNDIS. Les clients CoNDIS doivent fournir ProtocolClOpenAfCompleteEx pour effectuer les opérations asynchrones lancées par les clients en appelant le Fonction NdisClOpenAddressFamilyEx .

NDIS appelle ProtocolClOpenAfCompleteEx pour indiquer que tout ou partie des événements suivants se sont produits :

  • Si tous les paramètres du client La fonction ProtocolCoAfRegisterNotify passée à la fonction NdisClOpenAddressFamilyEx était valide, NDIS a appelé la fonction ProtocolCmOpenAf du gestionnaire d’appels qui vient d’inscrire l’af spécifié auprès de NDIS.
  • Le gestionnaire d’appels a examiné la spécification que la fonction ProtocolCoAfRegisterNotify du client a passée à NdisClOpenAddressFamilyEx au niveau du paramètre AddressFamily et a retourné si elle était valide pour ce gestionnaire d’appels pour NDIS.
Si la tentative d’ouverture d’une af par le client échoue, NDIS nettoie son état enregistré avant d’appeler ProtocolClOpenAfCompleteEx. Dans ce cas, ProtocolClOpenAfCompleteEx peut libérer les ressources que le client a allouées pour son appel à NdisClOpenAddressFamilyEx ou les préparer à la réutilisation.

Sinon, ProtocolClOpenAfCompleteEx doit configurer l’état déterminé par le client pour les opérations suivantes sur l’af nouvellement ouvert. En particulier, le client doit enregistrer le handle à partir du paramètre NdisAfHandle , généralement dans la zone de contexte ProtocolAfContext du client.

Si le client accepte les appels entrants, il peut allouer une zone d’état de point d’accès par service (SAP) et appeler la fonction NdisClRegisterSap . Si le client effectue des appels sortants, il peut allouer une zone d’état par connexion virtuelle (VC) et créer un vc avec la fonction NdisCoCreateVc pour préparer une demande entrante de l’un des propres clients du client afin d’effectuer un appel sortant vers un nœud distant.

NDIS appelle ProtocolClOpenAfCompleteEx à l’adresse IRQL = PASSIVE_LEVEL.

Exemples

Pour définir une fonction ProtocolClOpenAfCompleteEx , 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 pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction permet à l’analyse du code pour les pilotes, au vérificateur de pilotes statiques (SDV) et à d’autres outils de vérification de trouver des erreurs. 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 ProtocolClOpenAfCompleteEx nommée « MyClOpenAfCompleteEx », utilisez le type PROTOCOL_CL_OPEN_AF_COMPLETE_EX comme indiqué dans cet exemple de code :

PROTOCOL_CL_OPEN_AF_COMPLETE_EX MyClOpenAfCompleteEx;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
VOID
 MyClOpenAfCompleteEx(
    NDIS_HANDLE  ProtocolAfContext,
    NDIS_HANDLE  NdisAfHandle,
    NDIS_STATUS  Status
    )
  {...}

Le type de fonction PROTOCOL_CL_OPEN_AF_COMPLETE_EX 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 PROTOCOL_CL_OPEN_AF_COMPLETE_EX 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 PASSIVE_LEVEL

Voir aussi

NdisClOpenAddressFamilyEx

NdisClRegisterSap

NdisCoCreateVc

NdisCoOidRequest

ProtocolCmOpenAf

ProtocolCoAfRegisterNotify