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 |
---|---|
|
Les pilotes surlysants ont correctement traité l’événement Plug-and-Play ou Power Management. |
|
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 a échoué l’appel, car certains paramètres d’entrée ne sont pas valides. |
|
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 a échoué la requête, car un port NDIS non valide a été spécifié dans un NetEventPortActivation ou événement NetEventPortDeactivation PnP. |
|
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. |
|
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.
- 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.
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) |