PROTOCOL_OPEN_ADAPTER_COMPLETE_EX fonction de rappel (ndis.h)
NDIS appelle la fonction ProtocolOpenAdapterCompleteEx d’un pilote de protocole pour effectuer une opération d’ouverture d’adaptateur pour laquelle la fonction NdisOpenAdapterEx a retourné NDIS_STATUS_PENDING.
Syntaxe
PROTOCOL_OPEN_ADAPTER_COMPLETE_EX ProtocolOpenAdapterCompleteEx;
void ProtocolOpenAdapterCompleteEx(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] NDIS_STATUS Status
)
{...}
Paramètres
[in] ProtocolBindingContext
Handle à une zone de contexte allouée par le pilote de protocole. Le pilote de protocole conserve les informations de contexte par liaison dans cette zone de contexte. Le pilote a fourni ce handle à NDIS quand le pilote a appelé NdisOpenAdapterEx.
[in] Status
Dernière status de l’opération d’ouverture pour le pilote miniport sous-jacent. Cette valeur status est NDIS_STATUS_SUCCESS si la liaison a été établie ou si une erreur status que le pilote sous-jacent détermine.
Valeur de retour
None
Remarques
La fonction ProtocolOpenAdapterCompleteEx est requise. Un pilote de protocole appelle la fonction NdisOpenAdapterEx à partir de sa fonction ProtocolBindAdapterEx . NDIS appelle la fonction ProtocolOpenAdapterCompleteEx du pilote une fois qu’une opération d’ouverture en attente est terminée.
Si ProtocolBindAdapterEx attend que NDIS appelle ProtocolOpenAdapterCompleteEx, cette fonction peut simplement enregistrer le status et indiquer qu’il a été appelé (par exemple, elle peut mettre à jour la zone de contexte ProtocolBindingContext). Cela permet à la fonction ProtocolBindAdapterEx d’effectuer l’opération de liaison.
Si la fonction ProtocolBindAdapterEx ne l’a pas déjà fait, ProtocolOpenAdapterCompleteEx peut allouer les ressources dont le pilote a besoin pour la liaison.
Si ProtocolBindAdapterEx a retourné NDIS_STATUS_PENDING, ProtocolOpenAdapterCompleteEx peut appeler le Fonction NdisCompleteBindAdapterEx pour terminer l’opération de liaison. Dans ce cas, ProtocolOpenAdapterCompleteEx transmet À NdisCompleteBindAdapterEx le handle BindContext que NDIS a transmis à ProtocolBindAdapterEx. Si le paramètre Status indique une erreur, ProtocolOpenAdapterCompleteEx peut libérer les ressources de liaison qui ont été configurées dans ProtocolBindAdapterEx.
NDIS appelle ProtocolOpenAdapterCompleteEx à l’adresse IRQL = PASSIVE_LEVEL.
Exemples
Pour définir une fonction ProtocolOpenAdapterCompleteEx , 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 ProtocolOpenAdapterCompleteEx nommée « MyOpenAdapterCompleteEx », utilisez le type PROTOCOL_OPEN_ADAPTER_COMPLETE_EX comme indiqué dans cet exemple de code :
PROTOCOL_OPEN_ADAPTER_COMPLETE_EX MyOpenAdapterCompleteEx;
Ensuite, implémentez votre fonction comme suit :
_Use_decl_annotations_
VOID
MyOpenAdapterCompleteEx(
NDIS_HANDLE ProtocolBindingContext,
NDIS_STATUS Status
)
{...}
Le type de fonction PROTOCOL_OPEN_ADAPTER_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_OPEN_ADAPTER_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 |