Partager via


structure NET_PNP_EVENT (netpnp.h)

La structure NET_PNP_EVENT décrit un événement de Plug-and-Play réseau (PnP), un événement PnP NDIS ou un événement de gestion de l’alimentation.

Syntaxe

typedef struct _NET_PNP_EVENT {
  NET_PNP_EVENT_CODE NetEvent;
  PVOID              Buffer;
  ULONG              BufferLength;
  ULONG_PTR          NdisReserved[4];
  ULONG_PTR          TransportReserved[4];
  ULONG_PTR          TdiReserved[4];
  ULONG_PTR          TdiClientReserved[4];
} NET_PNP_EVENT, *PNET_PNP_EVENT;

Membres

NetEvent

Code d’événement qui décrit l’événement comme l’un des éléments suivants :

NetEventSetPower

Indique que le gestionnaire d’alimentation a envoyé une demande Définir l’alimentation, qui spécifie une transition vers un état d’alimentation du système. NDIS traduit cet état en un état d’alimentation de l’appareil approprié pour l’appareil.

Pour plus d'informations, consultez la section Notes.

NetEventQueryPower

Indique que le gestionnaire d’alimentation a envoyé une demande d’alimentation de requête, qui demande une transition vers un état d’alimentation du système. NDIS traduit cet état en un état d’alimentation de l’appareil approprié pour l’appareil.

Pour plus d'informations, consultez la section Notes.

NetEventQueryRemoveDevice

Indique que le Gestionnaire PnP a envoyé une requête de suppression d’appareil de requête. Le Gestionnaire PnP envoie cette demande pour savoir si un appareil peut être supprimé sans interrompre les opérations.

NetEventCancelRemoveDevice

Indique que le Gestionnaire PnP a envoyé une demande Annuler la suppression de l’appareil. Le Gestionnaire PnP envoie cette demande pour annuler la suppression d’un appareil après que le Gestionnaire PnP a envoyé une requête de suppression d’appareil de requête.

NetEventReconfigure

Indique que la configuration a changé pour un composant réseau. Par exemple, si un utilisateur, via le dossier Réseau et accès à distance Connections, modifie l’adresse IP pour TCP/IP, NDIS indique l’événement NetEventReconfigure au protocole TCP/IP. En outre, un pilote intermédiaire utilise généralement cet événement comme déclencheur pour appeler le Fonction NdisIMInitializeDeviceInstanceEx et démarrer ses miniports virtuels. Pour plus d’informations sur NetEventReconfigure, consultez NetEventIMReEnableDevice.

NetEventBindList

Indique à un pilote de protocole que son ordre de traitement de liste de liaison a été reconfiguré. Cette liste indique un ordre relatif qui s’applique aux liaisons lors du traitement, par exemple, une demande utilisateur qui peut être acheminée vers l’une des liaisons. La mémoire tampon passée avec cet événement contient une liste de noms d’appareils mis en forme en tant que chaînes Unicode terminées par null. Le format de chaque nom d’appareil est identique au membre AdapterName passé à un appel à la fonction ProtocolBindAdapterEx .

NetEventBindsComplete

Indique qu’un pilote de protocole est lié à toutes les cartes réseau auxquelles il peut se lier. NDIS n’indique pas d’autres cartes réseau au protocole, sauf si une carte réseau PnP est connectée au système.

NetEventPnPCapabilities

Indique que l’utilisateur a activé ou désactivé les fonctionnalités de mise en éveil de l’adaptateur sous-jacent. (La liaison est spécifiée par le paramètre ProtocolBindingContext passé à la fonction ProtocolNetPnPEvent .)

NetEventPause

Indique que la liaison de protocole spécifiée doit entrer dans l’état De suspension. La liaison entre dans l’état Suspendu une fois que NDIS a terminé toutes les demandes d’envoi en suspens pour la liaison.

NetEventRestart

Indique que la liaison de protocole spécifiée est entrée à l’état Redémarrage. Une fois que le pilote de protocole est prêt à reprendre les opérations d’envoi et de réception pour la liaison, la liaison passe à l’état En cours d’exécution.

NetEventPortActivation

Indique l’activation d’une liste de ports associés à la liaison spécifiée.

NetEventPortDeactivation

Indique la désactivation d’une liste de ports associés à la liaison spécifiée.

NetEventIMReEnableDevice

Indique que la configuration a changé pour un miniport virtuel d’un pilote intermédiaire NDIS 6.0 ou ultérieur. NetEventIMReEnableDevice est similaire à l’événement NetEventReconfigure , sauf que le pilote intermédiaire reçoit cet événement pour un miniport virtuel unique et que l’événement NetEventReconfigure s’applique à toutes les miniports virtuels du pilote intermédiaire. Par exemple, un pilote intermédiaire reçoit l’événement NetEventIMReEnableDevice lorsqu’un utilisateur désactive, puis active un seul miniport virtuel à partir du Gestionnaire de périphériques ou d’une autre source. Pour obtenir des exemples de gestion de l’alimentation des pilotes intermédiaires, consultez l’exemple pilote intermédiaire MUX NDIS et pilote d’objet notifier disponible dans le référentiel d’exemples de pilotes Windows sur GitHub.

NetEventNDKEnable

Indique que le noyau direct réseau (NDK) est actuellement activé.

NetEventNDKDisable

Indique que NDK est actuellement désactivé.

NetEventFilterPreDetach

Indique qu’un filtre est sur le point d’être détaché, afin que le filtre puisse effectuer tout nettoyage nécessaire qui n’est pas possible dans le gestionnaire FilterDetach (car les chemins d’accès OID et d’indication sont fermés à ce moment-là).

NetEventBindFailed

Indique qu’un échec d’événement de liaison s’est produit.

NetEventSwitchActivate

Indique que le commutateur extensible Hyper-V a terminé l’activation et que les extensions de commutateur peuvent désormais interroger en toute sécurité pour une configuration supplémentaire du commutateur. L’indication est utilisée uniquement dans la pile du commutateur extensible Hyper-V, émise par le miniport d’extension. Pour plus d’informations, consultez Interrogation de la configuration du commutateur extensible Hyper-V et NDIS_SWITCH_PARAMETERS .

NetEventInhibitBindsAbove

Événement synchrone qui empêche d’autres filtres et protocoles de se lier à l’adaptateur miniport. Tous les filtres ou protocoles qui étaient précédemment liés seront non liés avant la fin de l’événement. Les règles d’utilisation sont ci-dessous.

  • Évitez de laisser l’adaptateur miniport à l’état inhibiteur, pendant plus de 1 000 millisecondes.
  • Cet événement ne peut être émis qu’après le début de MiniportInitializeEx et ne doit pas être émis après le retour de MiniportHaltEx .
  • Cet événement ne peut être émis que lorsque l’adaptateur miniport est dans un état D0.
  • Étant donné que cet événement est bloquant, il ne doit pas être émis par un contexte qui provoquerait un blocage.
  • Les verrous ne doivent pas être conservés lors de l’émission de cet événement.
  • Cet événement doit être émis à PASSIVE_LEVEL.
Cet événement est disponible à partir de NDIS version 6.50 et doit être utilisé avec la version V2 ou ultérieure de NET_PNP_EVENT. Cet événement peut éventuellement être émis par un pilote miniport. Les protocoles et les filtres ne peuvent pas recevoir cet événement ou le émettre.

NetEventAllowBindsAbove

Événement asynchrone qui inverse les effets de NetEventInhibitBindsAbove. Les règles d’utilisation sont ci-dessous.

  • Cet événement ne peut être émis qu’après le début de MiniportInitializeEx et ne doit pas être émis après le retour de MiniportHaltEx .
  • Cet événement ne peut être émis que lorsque l’adaptateur miniport est dans un état D0.
  • Les verrous ne doivent pas être conservés lors de l’émission de cet événement.
  • Cet événement doit être émis à PASSIVE_LEVEL.
Cet événement est disponible à partir de NDIS version 6.50 et doit être utilisé avec la version V2 ou ultérieure de NET_PNP_EVENT. Cet événement peut éventuellement être émis par un pilote miniport. Les protocoles et les filtres ne peuvent pas recevoir cet événement ou le émettre.

NetEventRequirePause

Événement synchrone qui indique les protocoles et les filtres, y compris l’adaptateur miniport, doit être suspendu. Les protocoles et filtres ainsi que l’adaptateur miniport sont garantis pour être suspendus lorsque la routine NdisMNetPnPEvent est retournée. Les règles d’utilisation sont ci-dessous.

  • Évitez les retards entre les événements NetEventAllowStart et NetEventRequirePause pendant plus de 1 000 millisecondes afin d’éviter le retard dans les applications utilisateur.
  • Cet événement ne peut être émis qu’après le début de MiniportInitializeEx et ne doit pas être émis après le retour de MiniportHaltEx .
  • Il n’est pas garanti que NDIS appelle MiniportPause après l’émission de cet événement. En particulier, si votre adaptateur miniport est déjà suspendu, NDIS n’introduit pas de boucle de démarrage-pause supplémentaire. Cela signifie que le nombre de fois que MiniportPause appelé n’est pas supérieur, inférieur ou égal au montant émis par cet événement.
  • Étant donné que cet événement est bloquant, il ne doit pas être émis par un contexte qui provoquerait un blocage.
  • Les verrous ne doivent pas être conservés lors de l’émission de cet événement.
Cet événement est disponible à partir de NDIS version 6.50 et doit être utilisé avec la version V2 ou ultérieure de NET_PNP_EVENT. Cet événement peut éventuellement être émis par un pilote miniport. Les protocoles et les filtres ne peuvent pas recevoir cet événement ou le émettre.

NetEventAllowStart

Un événement asynchrone qui indique les protocoles et les filtres, y compris l’adaptateur miniport, n’a pas besoin d’être suspendu. Les règles d’utilisation sont ci-dessous. Aucun état de pause n’est garanti pour un pilote dans les protocoles et les filtres après le retour de la routine NdisMNetPnPEvent .

  • Cet événement ne peut être émis qu’après le début de MiniportInitializeEx et ne doit pas être émis après le retour de MiniportHaltEx .
  • Étant donné que cet événement est bloquant, il ne doit pas être émis par un contexte qui provoquerait un blocage.
  • Les verrous ne doivent pas être conservés lors de l’émission de cet événement.
Cet événement est disponible à partir de NDIS version 6.50 et doit être utilisé avec la version V2 ou ultérieure de NET_PNP_EVENT. Cet événement peut éventuellement être émis par un pilote miniport. Les protocoles et les filtres ne peuvent pas recevoir cet événement ou le émettre.

Buffer

Adresse d’une mémoire tampon qui contient des informations spécifiques à l’événement indiqué dans le membre NetEvent . Pour chaque type d’événement, la mémoire tampon contient les informations suivantes :

NetEventSetPower

La mémoire tampon contient l’état d’alimentation de l’appareil vers lequel l’appareil effectue la transition.

Lorsque NDIS appelle la fonction ProtocolNetPnPEvent d’un pilote de protocole, l’état de l’appareil est NDIS_DEVICE_POWER_STATE, ce qui peut être l’une des valeurs suivantes :

NdisDeviceStateUnspecified

Le périphérique réseau ne prend pas en charge la gestion de l’alimentation.

NdisDeviceStateD0

État entièrement alimenté, dans lequel l’appareil offre toutes les fonctionnalités et les performances.

NdisDeviceStateD1

État de faible consommation, dans lequel les demandes de transmission de l’hôte ne sont pas honorées par l’appareil, les données reçues par l’appareil ne sont pas transférées vers la mémoire hôte et aucune interruption ne peut se produire. Certains contextes d’appareil peuvent être perdus. En fonction des fonctionnalités de la carte réseau et de son pilote miniport, l’appareil peut être en mesure de générer un signal de réveil.

NdisDeviceStateD2

Un état de faible consommation qui est similaire à NdisDeviceStateD1, sauf que plus d’énergie et moins de contexte sont généralement enregistrés et plus de temps est nécessaire pour passer à l’état entièrement alimenté.

NdisDeviceStateD3

État désactivé, dans lequel l’alimentation a été entièrement supprimée de l’appareil.

Pour les pilotes de protocole, NdisDeviceStateD0 signifie que la carte réseau est entièrement alimentée et disponible pour les opérations normales. Tout autre état d’appareil signifie que l’appareil n’est pas entièrement alimenté et n’est pas disponible pour l’envoi et la réception de données réseau.

NetEventQueryPower

La mémoire tampon contient l’état d’alimentation de l’appareil qui est demandé pour l’appareil. L’état de l’appareil est NDIS_DEVICE_POWER_STATE (qui est décrit dans la description de la valeur NetEventSetPower ).

NetEventQueryRemoveDevice

Le contenu de la mémoire tampon est NULL.

NetEventCancelRemoveDevice

Le contenu de la mémoire tampon est NULL.

NetEventReconfigure

La mémoire tampon peut contenir des données spécifiques au protocole. Le pilote de protocole est responsable de la validation de ces données.

NetEventBindList

La mémoire tampon contient une liste de liaisons révisée pour le composant réseau que NET_PNP_EVENT_NOTIFICATION structure est passée à. La liste de liaisons, qui est une série de chaînes Unicode terminées par null, a un format REG_MULTI_SZ. Chacune des chaînes est un nom d’adaptateur. Les clients TDI liés à un protocole utilisent cette liste de liaisons pour réorganiser leurs liaisons. Le pilote de protocole est responsable de la validation de cette liste.

NetEventBindsComplete

Le contenu de la mémoire tampon est NULL.

NetEventPnPCapabilities

La mémoire tampon est un ULONG qui contient un masque de bits. Lorsque l’indicateur NDIS_DEVICE_WAKE_UP_ENABLE est défini dans le masque de bits, les fonctionnalités de mise en éveil de la carte réseau sont activées. Dans le cas contraire, les fonctionnalités de mise en éveil de la carte réseau sont désactivées. (La liaison est spécifiée par le paramètre ProtocolBindingContext passé à ProtocolNetPnPEvent.) Lorsqu’il est défini sur zéro, cet indicateur indique que les fonctionnalités de mise en éveil de la carte réseau sont désactivées.

NetEventPause

La mémoire tampon contient un NDIS_PROTOCOL_PAUSE_PARAMETERS structure.

NetEventRestart

La mémoire tampon peut contenir NULL ou un NDIS_PROTOCOL_RESTART_PARAMETERS structure. NDIS fournit un pointeur vers une structure NDIS_RESTART_ATTRIBUTES dans le membre RestartAttributes de la structure NDIS_PROTOCOL_RESTART_PARAMETERS.

Note Si la mémoire tampon est NULL, les attributs de redémarrage n’ont pas changé depuis le redémarrage précédent.
 

NetEventPortActivation

La mémoire tampon contient la première entrée d’une liste de NDIS_PORT structures qui identifient les ports que NDIS va activer. Vous pouvez utiliser le membre Suivant de la structure NDIS_PORT pour obtenir la structure suivante dans la liste.

NetEventPortDeactivation

La mémoire tampon contient un tableau de numéros de port, de type NDIS_PORT_NUMBER (défini comme ULONG), qui identifient les ports NDIS que NDIS désactivera. Pour calculer le nombre d’éléments dans le tableau, divisez la valeur du membre BufferLength , qui se trouve dans la structure NET_PNP_EVENT spécifiée dans le membre NetPnPEvent de NET_PNP_EVENT_NOTIFICATION, par sizeof(NDIS_PORT_NUMBER).

NetEventIMReEnableDevice

La mémoire tampon contient un pointeur vers une variable de type NDIS_STRING qui contient une chaîne Unicode terminée par null qui nomme l’objet d’appareil d’un miniport virtuel pour l’appareil activé. La chaîne est un nom de chemin d’accès complet, par exemple, \Device\DeviceName.

NetEventNDKEnable

Le membre Buffer a la valeur NULL.

NetEventNDKDisable

Le membre Buffer a la valeur NULL.

NetEventFilterPreDetach

Le membre Buffer a la valeur NULL.

NetEventBindFailed

La mémoire tampon contient une structure NDIS_BIND_FAILED_NOTIFICATION .

NetEventSwitchActivate

Le contenu de la mémoire tampon est NULL.

NetEventAllowBindsAbove

Le contenu de la mémoire tampon est NULL.

NetEventInhibitBindsAbove

Le contenu de la mémoire tampon est NULL.

NetEventAllowStart

Le contenu de la mémoire tampon est NULL.

NetEventRequirePause

Le contenu de la mémoire tampon est NULL.

BufferLength

Nombre d’octets d’informations spécifiques à l’événement dans Mémoire tampon.

NdisReserved[4]

Zone réservée à l’utilisation de NDIS.

TransportReserved[4]

Zone réservée à l’utilisation par le conducteur de transport.

TdiReserved[4]

Zone réservée pour une utilisation par TDI.

TdiClientReserved[4]

Zone réservée pour une utilisation par un client TDI.

Remarques

Dans NDIS 6.0 et versions ultérieures, lorsque le système d’exploitation émet un événement PnP système ou un événement de gestion de l’alimentation sur un objet d’appareil cible qui représente une carte miniport, NDIS traduit l’événement en un NET_PNP_EVENT_NOTIFICATION structure. Le membre NetPnPEvent de la structure NET_PNP_EVENT_NOTIFICATION est une structure NET_PNP_EVENT .

NDIS passe un pointeur vers la structure NET_PNP_EVENT à chaque pilote de protocole lié à l’adaptateur miniport en appelant la fonction ProtocolNetPnPEvent du pilote de protocole. Le pilote de protocole doit enregistrer ce pointeur, car il est un paramètre d’entrée de la fonction NdisCompleteNetPnPEvent , que le pilote appelle pour terminer l’appel à ProtocolNetPnPEvent de manière asynchrone.

NDIS transmet un pointeur vers la structure NET_PNP_EVENT à chaque pilote de filtre lié à l’adaptateur miniport en appelant la fonction FilterNetPnPEvent du pilote de filtre. Le pilote de filtre n’a pas besoin d’enregistrer ce pointeur, car il doit effectuer l’appel à FilterNetPnPEvent de manière synchrone.

À compter de NDIS 6.30, le pilote de protocole ou de filtre doit suivre ces instructions lorsque NDIS appelle les fonctions ProtocolNetPnPEvent ou FilterNetPnPEvent :

  • Si le membre NetEvent de la structure NET_PNP_EVENT est défini sur NetEventSetPower, le pilote doit cesser de générer de nouvelles demandes d’E/S. En outre, le pilote ne doit pas attendre l’achèvement des demandes d’E/S en attente.

    Une fois que le pilote de protocole ou de filtre est retourné à partir de ProtocolNetPnPEvent ou FilterNetPnPEvent, NDIS ne suspend pas et ne redémarre pas ces pilotes pendant les transitions d’état d’alimentation si les conditions suivantes sont remplies :

    • Le pilote miniport sous-jacent définit l’indicateur NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND dans la structure NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Le pilote passe un pointeur vers cette structure dans son appel à la fonction NdisMSetMiniportAttributes .
    • Tous les pilotes de filtre attachés au pilote miniport prennent en charge NDIS 6.30 ou versions ultérieures de NDIS.
    • Tous les pilotes de protocole liés au pilote miniport prennent en charge NDIS 6.30 ou versions ultérieures de NDIS.
  • Si le membre NetEvent de la structure NET_PNP_EVENT est défini sur NetEventSetPower ou NetEventQueryPower, le pilote ne doit pas attendre l’achèvement des demandes d’E/S en attente.
Le membre NetEvent dans la structure NET_PNP_EVENT identifie le type d’événement Plug-and-Play ou de gestion de l’alimentation. La mémoire tampon contient des informations spécifiques au type d’événement.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 5.1 et NDIS 6.0 et versions ultérieures. Pour plus d’informations sur la version NDIS 5.1 de cette structure, consultez NET_PNP_EVENT (NDIS 5.1).
En-tête netpnp.h (inclure Ndis.h, Netpnp.h)

Voir aussi

FilterNetPnPEvent

NDIS_BIND_FAILED_NOTIFICATION

NDIS_PORT

NDIS_PROTOCOL_RESTART_PARAMETERS NDIS_PROTOCOL_PAUSE_PARAMETERS

NDIS_RESTART_ATTRIBUTES

NDIS_SWITCH_PARAMETERS

NET_PNP_EVENT_NOTIFICATION

NdisCompleteNetPnPEvent

NdisIMInitializeDeviceInstanceEx

ProtocolBindAdapterEx

ProtocolNetPnPEvent

Interrogation de la configuration du commutateur extensible Hyper-V