Partager via


NdisMNetPnPEvent, fonction (ndis.h)

Les pilotes miniport NDIS (et les pilotes intermédiaires inscrits en tant que pilotes miniport) appellent la fonction NdisMNetPnPEvent pour provenir d’un événement Network Plug-and-Play, d’un événement NDIS PnP ou d’un événement Power Management ou de la propager à des pilotes sur-mesure.

Syntaxe

NDIS_STATUS NdisMNetPnPEvent(
  [in] NDIS_HANDLE                 MiniportAdapterHandle,
       PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);

Paramètres

[in] MiniportAdapterHandle

Handle NDIS fourni au Paramètre MiniportAdapterHandle de la fonction MiniportInitializeEx. Ce handle identifie l’adaptateur miniport affecté par l’événement. Si l’appelant est un pilote intermédiaire, il s’agit du handle du miniport virtuel.

NetPnPEventNotification

Pointeur vers un NET_PNP_EVENT_NOTIFICATION structure, qui décrit l’événement network Plug-and-Play, l’événement NDIS PnP ou l’événement Power Management.

Important

Si le champ VPortId de NetPnpEventNotification est défini sur une valeur différente de NDIS_DEFAULT_VPORT_ID, le membre Indicateurs doit être défini sur NET_EVENT_FLAGS_VPORT_ID_VALID pour que VPortId prenne effet.

Valeur de retour

NdisMNetPnPEvent pouvez retourner les éléments suivants :

Retourner le code Description
NDIS_STATUS_SUCCESS
Les pilotes surlysants ont correctement traité l’événement Plug-and-Play ou Power Management.
NDIS_STATUS_RESOURCES
Les pilotes overlying n’ont pas pu obtenir les ressources système nécessaires pour satisfaire l’événement Plug-and-Play ou Power Management indiqué.
NDIS_STATUS_INVALID_PARAMETER
NDIS a échoué l’appel, car certains paramètres d’entrée ne sont pas valides.
NDIS_STATUS_NOT_SUPPORTED
Les pilotes de protocole NDIS 6.0 et ultérieurs ne doivent pas retourner cet état. NDIS 5.pilote de protocole x qui ne prend pas en charge Plug-and-Play peut renvoyer cet état en réponse à un NetEventSetPower pour indiquer que NDIS doit le dissocier de l’adaptateur sous-jacent.
NDIS_STATUS_INVALID_PORT
NDIS a échoué la requête, car un port NDIS non valide a été spécifié dans un NetEventPortActivation ou événement NetEventPortDeactivation PnP.
NDIS_STATUS_INVALID_PORT_STATE
NDIS a échoué la requête, car un port NDIS était dans un état de port non valide. Les ports sont spécifiés dans un NetEventPortActivation ou événement NetEventPortDeactivation PnP.
NDIS_STATUS_FAILURE
Les tentatives de traitement de l’événement Plug-and-Play propagé ou de gestion de l’alimentation ont échoué.
 

La valeur de retour n’est significative que lorsque l’événement propagé est un événement NetEventQueryPower ou NetEventQueryRemoveDevice événement. Pour tous les autres événements propagés, la valeur de retour est toujours NDIS_STATUS_SUCCESS.

Si l’événement est NetEventPortActivation et que l’appel échoue, l’appelant ne doit pas utiliser les ports associés dans les indications de réception ou les indications d’état.

Remarques

Tout pilote miniport peut appeler NdisMNetPnPEvent pour générer des événements NetEventPortActivation et NetEventPortDeactivation. Seuls les pilotes intermédiaires peuvent effectuer d’autres notifications d’événements.

Remarque Pour empêcher les interblocages, un pilote NDIS doit effectuer les opérations suivantes :
  • Sa fonction MiniportOidRequest ne doit pas appeler NdisMNetPnPEvent.
  • Si sa fonction MiniportOidRequest retourne NDIS_STATUS_PENDING pour une requête OID, le pilote NDIS ne doit pas appeler NdisMNetPnPEvent jusqu’à ce qu’elle ait terminé la requête OID en appelant NdisMOidRequestComplete.
 
Pour propager la notification d’un événement Network Plug-and-Play, d’un événement NDIS PnP ou d’un événement Power Management vers des pilotes overlying, un pilote intermédiaire NDIS appelle NdisMNetPnPEvent dans le contexte de la fonction ProtocolNetPnPEvent du pilote.

Si l’événement propagé est un NetEventQueryPower ou un NetEventQueryRemoveDevice, le pilote intermédiaire doit vérifier la valeur NDIS_STATUS retournée par NdisMNetPnPEvent. Si l’état retourné est NDIS_STATUS_SUCCESS, le pilote intermédiaire doit gérer l’événement, puis retourner NDIS_STATUS_SUCCESS à partir de sa fonction ProtocolNetPnPEvent. Si l’état retourné n’est pas NDIS_STATUS_SUCCESS, le pilote intermédiaire doit renvoyer l’état signalé à partir de sa fonction ProtocolNetPnPEvent sans traitement supplémentaire.

La façon dont le pilote intermédiaire traite une NetEventSetPower reçue par sa fonction ProtocolNetPnPEvent dépend de l’état d’alimentation de l’appareil spécifié. Si l’état d’alimentation de l’appareil spécifié est NdisDeviceStateD0, le pilote intermédiaire doit gérer l’événement, puis appeler NdisMNetPnPEvent. Pour tout autre état d’alimentation de périphérique spécifié, le pilote intermédiaire doit d’abord appeler NdisMNetPnPEvent, puis gérer l’événement.

Un pilote intermédiaire doit appeler NdisMNetPnPEvent pour propager un NetEventReconfigure ou NetEventBindList uniquement si le NetEventReconfigure ou NetEventBindList est indiqué sur unNULLProtocolBindingContext. Si une NetEventReconfigure ou NetEventBindList est indiquée sur un NULLProtocolBindingContext, le pilote intermédiaire ne doit pas appeler NdisMNetPnPEvent pour propager l’événement.

Si un pilote intermédiaire gère un NetEventReconfigure ou un NetEventBindList, il doit valider toutes les données associées à l’événement.

Un pilote intermédiaire ne doit pas propager le netEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivationou NetEventPortDeactivation en appelant NdisMNetPnPEvent.

Un pilote intermédiaire NDIS peut générer ses propres événements de port NDIS pour les miniports virtuels selon les besoins de l' NetEventPortActivation ou événements NetEventPortDeactivation qu’il reçoit à sa fonction ProtocolNetPnPEvent.

Pour tous les autres événements propagés, la fonction ProtocolNetPnPEvent du pilote intermédiaire doit propager la valeur d’état retournée par NdisMNetPnPEvent.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge dans NDIS 6.0 et versions ultérieures.
plateforme cible Universel
d’en-tête ndis.h (include Ndis.h)
bibliothèque Ndis.lib
IRQL PASSIVE_LEVEL
règles de conformité DDI Irql_Protocol_Driver_Function(ndis), NdisMNetPnPEventInOIDRequest(ndis)

Voir aussi

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent