Partager via


PROTOCOL_UNBIND_ADAPTER_EX fonction de rappel (ndis.h)

NDIS appelle la fonction ProtocolUnbindAdapterEx d’un pilote de protocole pour demander au pilote de se déconnecter d’un adaptateur miniport sous-jacent.

Remarque Vous devez déclarer la fonction à l’aide du type PROTOCOL_UNBIND_ADAPTER_EX. Pour plus d’informations, consultez la section Exemples suivants.
 

Syntaxe

PROTOCOL_UNBIND_ADAPTER_EX ProtocolUnbindAdapterEx;

NDIS_STATUS ProtocolUnbindAdapterEx(
  [in] NDIS_HANDLE UnbindContext,
  [in] NDIS_HANDLE ProtocolBindingContext
)
{...}

Paramètres

[in] UnbindContext

Handle qui identifie la zone de contexte NDIS pour cette opération sans liaison.

[in] ProtocolBindingContext

Handle vers une zone de contexte allouée par le pilote de protocole. Le pilote de protocole gère les informations de contexte par liaison dans cette zone de contexte. Le pilote a fourni ce handle à NDIS lorsque le pilote a appelé la fonction NdisOpenAdapterEx.

Valeur de retour

ProtocolUnbindAdapterEx retourne l’une des valeurs d’état suivantes :

Retourner le code Description
NDIS_STATUS_SUCCESS
ProtocolUnbindAdapterEx correctement lié à partir d’un adaptateur miniport sous-jacent.
NDIS_STATUS_PENDING
ProtocolUnbindAdapterEx n’a pas terminé l’opération unbind et l’opération est terminée de façon asynchrone. Le pilote de protocole doit appeler le fonction NdisCompleteUnbindAdapterEx une fois l’opération unbind terminée.

Remarques

ProtocolUnbindAdapterEx est une fonction requise. Comme réciproque de la fonction ProtocolBindAdapterEx, NDIS appelle ProtocolUnbindAdapterEx pour libérer les ressources allouées par le pilote pour les opérations d’E/S réseau spécifiques à une liaison. Un pilote de protocole ne peut pas échouer à une opération non jointe.

Avant d’appeler ProtocolUnbindAdapterEx, NDIS suspend la liaison de protocole. Pour suspendre la liaison, NDIS appelle la fonction ProtocolNetPnPEvent et spécifie un événement NetEventPause.

ProtocolUnbindAdapterEx doit appeler la fonction NdisCloseAdapterEx pour fermer la liaison à l’adaptateur miniport sous-jacent. Si NdisCloseAdapterEx retourne NDIS_STATUS_SUCCESS, l’opération de fermeture est terminée. Si NdisCloseAdapterEx retourne NDIS_STATUS_PENDING, NDIS appelle le pilote de protocole ProtocolCloseAdapterCompleteEx fonction une fois l’opération de fermeture terminée.

Avant d’appeler NdisCloseAdapterEx, le pilote de protocole doit effacer la liste d’adresses multidiffusion et les filtres de paquets pour la liaison. Le pilote de protocole définit la liste d’adresses de multidiffusion de liaison sur NULL et le filtre de paquets sur zéro. Pour plus d’informations, consultez OID_802_3_MULTICAST_LIST et OID_GEN_CURRENT_PACKET_FILTER.

Si un modèle de mise en éveil a été spécifié, le pilote de protocole doit le supprimer avec l’OID OID_PNP_REMOVE_WAKE_UP_PATTERN et effacer les paramètres de mise à l’échelle côté réception avec l’OID OID_GEN_RECEIVE_SCALE_PARAMETERS. Un pilote de protocole NDIS 6.20 et ultérieur doit supprimer un modèle wake-on-LAN avec l’OID OID_PM_REMOVE_WOL_PATTERN et supprimer un déchargement de protocole à faible alimentation avec l’OID OID_PM_REMOVE_PROTOCOL_OFFLOAD.

ProtocolUnbindAdapterEx ne doit pas libérer la mémoire à ProtocolBindingContext jusqu’à ce que l’opération de fermeture soit terminée. NDIS transmet le handle à ProtocolBindingContext à ProtocolCloseAdapterCompleteEx.

Si le pilote de protocole a terminé l’opération unbind, ProtocolUnbindAdapterEx peut retourner NDIS_STATUS_SUCCESS. Si NdisCloseAdapterEx retourne NDIS_STATUS_PENDING, ProtocolUnbindAdapterEx doit attendre que NDIS appelle ProtocolCloseAdapterCompleteEx avant de pouvoir retourner NDIS_STATUS_SUCCESS.

ProtocolUnbindAdapterEx pouvez retourner NDIS_STATUS_PENDING pour différer l’achèvement de l’opération non jointe à une date ultérieure. Si ProtocolUnbindAdapterEx retourne NDIS_STATUS_PENDING, le pilote doit finalement appeler le fonction NdisCompleteUnbindAdapterEx pour terminer l’opération unbind. Si la fonction NdisCloseAdapterEx retournée NDIS_STATUS_PENDING, le pilote peut effectuer l’opération unbind dans ProtocolCloseAdapterCompleteEx. ProtocolUnbindAdapterEx pouvez stocker le handle à UnbindContext dans la zone de contexte à ProtocolBindingContext avant d’appeler NdisCloseAdapterEx. Si ProtocolUnbindAdapterEx stocké le handle, ProtocolCloseAdapterCompleteEx peut passer le handle à NdisCompleteUnbindAdapterEx pour terminer l’opération unbind.

Dès que ProtocolUnbindAdapterEx appelle NdisCloseAdapterEx, le handle obtenu à partir de la fonction NdisOpenAdapterEx au paramètre NdisBindingHandle devient non valide. ProtocolUnbindAdapterEx ne peut pas effectuer d’appels ultérieurs à fonctions NdisXxx avec ce handle. Le pilote peut obtenir les indications de réception et d’état de l’adaptateur miniport sous-jacent jusqu’à ce que l’opération de fermeture soit terminée.

NDIS appelle ProtocolUnbindAdapterEx à IRQL = PASSIVE_LEVEL.

mise à jour de la gestion de l’alimentation et des paramètres RSS

Les pilotes de protocole NDIS 6.0 et 6.1 doivent effectuer les opérations suivantes le cas échéant :
  1. Supprimer le réveil de gestion de l’alimentation sur les modèles LAN (WOL) de l’adaptateur miniport avec le OID_PNP_REMOVE_WAKE_UP_PATTERN OID.
  2. Effacer les paramètres de mise à l’échelle côté réception avec le OID_GEN_RECEIVE_SCALE_PARAMETERS OID.
Les pilotes de protocole NDIS 6.20 et ultérieur doivent effectuer les opérations suivantes :
  1. Supprimez les modèles WOL de gestion de l’alimentation de l’adaptateur miniport avec l’OID OID_PM_REMOVE_WOL_PATTERN.
  2. Supprimer les déchargements du protocole de gestion de l’alimentation de l’adaptateur miniport avec le OID_PM_REMOVE_PROTOCOL_OFFLOAD OID.

exemples de

Pour définir une fonction ProtocolUnbindAdapterEx, 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 fonctions permet d'Analyse du code pour les pilotes, de vérificateur de pilotes statiques (SDV) et d’autres outils de vérification recherchent des erreurs, et il est nécessaire d’écrire des pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction ProtocolUnbindAdapterEx nommée « MyUnbindAdapterEx », utilisez le type PROTOCOL_UNBIND_ADAPTER_EX comme indiqué dans cet exemple de code :

PROTOCOL_UNBIND_ADAPTER_EX MyUnbindAdapterEx;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
NDIS_STATUS
 MyUnbindAdapterEx(
    NDIS_HANDLE  UnbindContext,
    NDIS_HANDLE  ProtocolBindingContext
    )
  {...}

Le type de fonction PROTOCOL_UNBIND_ADAPTER_EX est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lorsque vous exécutez les 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_UNBIND_ADAPTER_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 annoter le comportement de la fonction.

Exigences

Exigence Valeur
client minimum pris en charge Pris en charge pour NDIS 6.0 et versions ultérieures.
plateforme cible Windows
d’en-tête ndis.h (include Ndis.h)
IRQL PASSIVE_LEVEL

Voir aussi

NdisCloseAdapterEx

NdisCompleteUnbindAdapterEx

NdisOpenAdapterEx

OID_802_3_MULTICAST_LIST

OID_GEN_CURRENT_PACKET_FILTER

OID_GEN_RECEIVE_SCALE_PARAMETERS

OID_PNP_REMOVE_WAKE_UP_PATTERN

ProtocolBindAdapterEx

ProtocolCloseAdapterCompleteEx

ProtocolNetPnPEvent