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
NDIS_STATUS_SUCCESS
Les pilotes qui se superposaient ont correctement traité l’événement Plug-and-Play ou gestion de l’alimentation.
NDIS_STATUS_RESOURCES
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_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 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_STATUS_INVALID_PORT
NDIS a échoué à la demande, car un port NDIS non valide a été spécifié dans un événement NetEventPortActivation ou NetEventPortDeactivation PnP.
NDIS_STATUS_INVALID_PORT_STATE
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 .
NDIS_STATUS_FAILURE
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.

Note Pour éviter les interblocages, un pilote NDIS doit effectuer les opérations suivantes :
 
Pour propager la notification d’un événement de Plug-and-Play réseau, d’un événement PnP NDIS ou d’un événement Power Management aux pilotes qui se superment, 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 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)

Voir aussi

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent