NdisMNetPnPEvent, fonction (ndis.h)
Les pilotes miniportS NDIS (et les pilotes intermédiaires inscrits en tant que pilotes miniports) appellent la fonction NdisMNetPnPEvent pour créer un événement de Plug-and-Play réseau, un événement PnP NDIS ou un événement De gestion de l’alimentation ou le propager à des pilotes de trop grande taille.
Syntaxe
NDIS_STATUS NdisMNetPnPEvent(
[in] NDIS_HANDLE MiniportAdapterHandle,
PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);
Paramètres
[in] MiniportAdapterHandle
Handle NDIS fourni par NDIS 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 de la poignée du miniport virtuel.
NetPnPEventNotification
Pointeur vers un NET_PNP_EVENT_NOTIFICATION structure, qui décrit l’événement de Plug-and-Play réseau, l’événement PnP NDIS 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 Flags doit être défini sur NET_EVENT_FLAGS_VPORT_ID_VALID pour que VPortId prenne effet.
Valeur retournée
NdisMNetPnPEvent peut retourner les éléments suivants :
Code de retour | Description |
---|---|
|
Les pilotes qui se superposaient ont correctement traité l’événement Plug-and-Play ou gestion de l’alimentation. |
|
Les pilotes qui se superposaient n’ont pas pu obtenir les ressources système nécessaires pour répondre à l’événement Plug-and-Play ou gestion de l’alimentation 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 versions ultérieures ne doivent pas retourner cette status. NDIS 5. X pilote de protocole qui ne prend pas en charge Plug-and-Play peut retourner cette status en réponse à un NetEventSetPower pour indiquer que NDIS doit le dissocier de l’adaptateur sous-jacent. |
|
NDIS a échoué à la demande, car un port NDIS non valide a été spécifié dans un événement NetEventPortActivation ou NetEventPortDeactivation PnP. |
|
NDIS a échoué à la demande, car un port NDIS était dans un état de port non valide. Les ports sont spécifiés dans un événement PnP NetEventPortActivation ou NetEventPortDeactivation . |
|
Les tentatives de traitement de l’événement de Plug-and-Play propagé ou de gestion de l’alimentation ont échoué. |
La valeur de retour est significative uniquement lorsque l’événement propagé est un événement NetEventQueryPower ou NetEventQueryRemoveDevice . 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 status indications.
Remarques
N’importe quel 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 tant qu’il n’a pas terminé la requête OID en appelant NdisMOidRequestComplete.
Si l’événement propagé est un NetEventQueryPower ou un NetEventQueryRemoveDevice, le pilote intermédiaire doit case activée la valeur NDIS_STATUS retournée par NdisMNetPnPEvent. Si le status 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 le status retourné n’est pas NDIS_STATUS_SUCCESS, le pilote intermédiaire doit retourner le status signalé à partir de sa fonction ProtocolNetPnPEvent sans traitement supplémentaire.
La façon dont le pilote intermédiaire traite un NetEventSetPower reçu 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 netEventReconfigure ou NetEventBindList est indiqué sur un protocole non NULLBindingContext. Si un NetEventReconfigure ou NetEventBindList est indiqué sur un protocole NULLBindingContext, 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 les événements NetEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivation ou NetEventPortDeactivation en appelant NdisMNetPnPEvent.
Un pilote intermédiaire NDIS peut générer ses propres événements de port NDIS pour les miniports virtuels en fonction des événements NetEventPortActivation ou NetEventPortDeactivation qu’il reçoit au niveau de sa fonction ProtocolNetPnPEvent .
Pour tous les autres événements propagés, la fonction ProtocolNetPnPEvent du pilote intermédiaire doit propager la valeur status retournée par NdisMNetPnPEvent.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.0 et versions ultérieures. |
Plateforme cible | Universal |
En-tête | ndis.h (inclure Ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Règles de conformité DDI | Irql_Protocol_Driver_Function(ndis),NdisMNetPnPEventInOIDRequest(ndis) |