structure NET_PNP_EVENT (netpnp.h)

La structure NET_PNP_EVENT décrit un événement réseau Plug-and-Play (PnP), un événement NDIS PnP 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’alimentation définie, qui spécifie une transition vers un état d’alimentation du système. NDIS convertit cet état en état d’alimentation d’appareil approprié pour l’appareil.

Pour plus d'informations, consultez la section Notes.

NetEventQueryPower

Indique que le gestionnaire d’alimentation a envoyé une requête Power Request, qui demande une transition vers un état d’alimentation du système. NDIS convertit cet état en état d’alimentation d’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. Le Gestionnaire PnP envoie cette demande pour interroger 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 une fois que le Gestionnaire PnP a envoyé une demande de suppression de l’appareil de requête.

NetEventReconfigure

Indique que la configuration a changé pour un composant réseau. Par exemple, si un utilisateur, via le dossier Connexions réseau et rendez-vous, modifie l’adresse IP pour TCP/IP, NDIS indique l’événement NetEventReconfigure en 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émarre 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, d’une demande d’utilisateur qui peut être acheminée vers l’une des plusieurs liaisons. La mémoire tampon passée avec cet événement contient une liste de noms d’appareils mis en forme comme 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 plus de 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 l’état de suspension. La liaison entrera dans l’état suspendu une fois que NDIS a terminé toutes les demandes d’envoi en attente pour la liaison.

NetEventRestart

Indique que la liaison de protocole spécifiée a entré l’état de 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 entre dans 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 une miniport virtuelle 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 à tous 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 une miniport virtuelle unique à 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 de pilote intermédiaire NDIS MUX et de pilote Notify Object 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 le 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 d’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é une configuration de commutateur supplémentaire. L’indication est utilisée uniquement dans la pile commutateur extensible Hyper-V, émise par le miniport d’extension. Pour plus d’informations, consultez l’interrogation de la configuration du commutateur extensible Hyper-V et NDIS_SWITCH_PARAMETERS .

NetEventInhibitBindsAbove

Événement synchrone qui empêche les autres filtres et protocoles de se lier à l’adaptateur miniport. Tous les filtres ou protocoles qui ont été 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 dans l’état inhibant, 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 la 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 bloque, il ne doit pas être émis par un contexte qui provoquerait un interblocage.
  • 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 la 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

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

  • Évitez de retarder les événements NetEventAllowStart et NetEventRequirePause pendant plus de 1 000 millisecondes afin d’empêcher 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 la retour de MiniportHaltEx .
  • Il n’existe aucune garantie 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 pause de démarrage supplémentaire. Cela signifie que la quantité de fois que MiniportPause appelée n’est pas supérieure, inférieure ou égale au montant émis par cet événement.
  • Étant donné que cet événement bloque, il ne doit pas être émis par un contexte qui provoquerait un interblocage.
  • 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. Il n’existe aucun état de pause garanti pour n’importe quel pilote dans les protocoles et filtres une fois la routine NdisMNetPnPEvent retournée.

  • Cet événement ne peut être émis qu’après le début de MiniportInitializeEx et ne doit pas être émis après la retour de MiniportHaltEx .
  • Étant donné que cet événement bloque, il ne doit pas être émis par un contexte qui provoquerait un interblocage.
  • 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, qui peut être l’une des valeurs suivantes :

NdisDeviceStateUnspecified

L’appareil réseau ne prend pas en charge la gestion de l’alimentation.

NdisDeviceStateD0

État entièrement alimenté, dans lequel l’appareil fournit des fonctionnalités et des performances complètes.

NdisDeviceStateD1

État de faible puissance, dans lequel les demandes de transmission de l’hôte ne sont pas respectées par l’appareil, les données reçues par l’appareil ne sont pas transférées à la mémoire de l’hôte et aucune interruption ne peut se produire. Certains contextes d’appareil peuvent être perdus. Selon les 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 mise en éveil.

NdisDeviceStateD2

État à faible puissance similaire à NdisDeviceStateD1, à ceci près que plus de puissance 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 optimisée et est 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 demandé pour l’appareil. L’état de l’appareil est NDIS_DEVICE_POWER_STATE (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 chargé de valider ces données.

NetEventBindList

La mémoire tampon contient une liste de liaisons révisée pour le composant réseau que le 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 chargé de valider 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. Sinon, 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.) Lorsque cette valeur est définie 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 a la valeur 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 dans une liste de structures NDIS_PORT qui identifient les ports activés par NDIS. 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 en tant qu’ULONG), qui identifient les ports NDIS désactivés par NDIS. Pour calculer le nombre d’éléments du 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 au niveau de la mémoire tampon.

NdisReserved[4]

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

TransportReserved[4]

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

TdiReserved[4]

Zone réservée pour l’utilisation par TDI.

TdiClientReserved[4]

Zone réservée à 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 périphérique cible qui représente un adaptateur miniport, NDIS convertit 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 transmet un pointeur à 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 le pointeur 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 le pilote 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 arrêter de générer de nouvelles demandes d’E/S. En outre, le pilote ne doit pas attendre la fin des demandes d’E/S en attente.

    Une fois le pilote de protocole ou de filtre retourné par ProtocolNetPnPEvent ou FilterNetPnPEvent, NDIS ne suspend pas et redémarre ces pilotes pendant les transitions d’état de l’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 la fin des demandes d’E/S en attente.
Le membre NetEvent de la structure NET_PNP_EVENT identifie le type d’événement de Plug-and-Play ou de gestion de l’alimentation. La mémoire tampon contient des informations spécifiques au type d’événement.

Spécifications

   
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 (include Ndis.h, Netpnp.h)

Voir aussi

FilterNetPnPEvent

NDIS_BIND_FAILED_NOTIFICATION

NDIS_PORT

NDIS_PROTOCOL_PAUSE_PARAMETERS NDIS_PROTOCOL_RESTART_PARAMETERS

NDIS_RESTART_ATTRIBUTES

NDIS_SWITCH_PARAMETERS

NET_PNP_EVENT_NOTIFICATION

NdisCompleteNetPnPEvent

NdisIMInitializeDeviceInstanceEx

ProtocolBindAdapterEx

ProtocolNetPnPEvent

Interrogation de la configuration du commutateur extensible Hyper-V