structure NET_PNP_EVENT (netpnp.h)
La structure NET_PNP_EVENT décrit un événement Network 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 Set Power, qui spécifie une transition vers un état d’alimentation du système. NDIS traduit cet état en état d’alimentation d’appareil approprié pour l’appareil.
Pour plus d’informations, consultez la section Remarques.
NetEventQueryPower
Indique que power manager a envoyé une requête Power Query, qui demande une transition vers un état d’alimentation du système. NDIS traduit cet état en état d’alimentation d’appareil approprié pour l’appareil.
Pour plus d’informations, consultez la section Remarques.
NetEventQueryRemoveDevice
Indique que le Gestionnaire PnP a envoyé une requête de suppression d’appareil. Le Gestionnaire PnP envoie cette requête 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 requête pour annuler la suppression d’un appareil une fois que le Gestionnaire PnP envoie 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 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émarrez 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 liaisons a été reconfiguré. Cette liste indique un ordre relatif qui s’applique aux liaisons lors du traitement, par exemple, d’une demande 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 pas 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 de 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 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 à 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 un miniport virtuel 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 NDIS MUX Intermediate Driver and Notify Object disponible dans les exemples de pilotes Windows référentiel 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 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 Hyper-V commutateur extensible, émise par le miniport d’extension. Pour plus d’informations, consultez interrogation des de configuration de 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 étaient précédemment liés ne seront pas 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 inhibé, pendant plus de 1 000 millisecondes.
- Cet événement ne peut être émis qu’après MiniportInitializeEx commence et ne doit pas être émis après MiniportHaltEx retourne.
- 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 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.
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 MiniportInitializeEx commence et ne doit pas être émis après MiniportHaltEx retourne.
- 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.
NetEventRequirePause
Un événement synchrone qui indique les protocoles et 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’éviter les retards dans les applications utilisateur.
- Cet événement ne peut être émis qu’après MiniportInitializeEx commence et ne doit pas être émis après MiniportHaltEx retourne.
- Il n’existe aucune garantie que NDIS appelle MiniportPause une fois cet événement émis. 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 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 blocage.
- Les verrous ne doivent pas être conservés lors de l’émission de cet événement.
NetEventAllowStart
Un événement asynchrone qui indique les protocoles et 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 les filtres après le retour de la routine NdisMNetPnPEvent NdisMNetPnPEvent.
- Cet événement ne peut être émis qu’après MiniportInitializeEx commence et ne doit pas être émis après MiniportHaltEx retourne.
- Étant donné que cet événement bloque, 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.
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 offre des fonctionnalités et des performances complètes.
NdisDeviceStateD1
Un état à faible alimentation, 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 vers la mémoire 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, sauf 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 la puissance 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 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 de 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 structure NDIS_PROTOCOL_PAUSE_PARAMETERS.
NetEventRestart
La mémoire tampon peut contenir NULL ou un structure NDIS_PROTOCOL_RESTART_PARAMETERS. NDIS fournit un pointeur vers une structure NDIS_RESTART_ATTRIBUTES dans le RestartAttributes membre de la structure NDIS_PROTOCOL_RESTART_PARAMETERS.
NetEventPortActivation
La mémoire tampon contient la première entrée d’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éfinis comme ULONG), qui identifient les ports NDIS que NDIS désactive. 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 tampon est NULL.
NetEventNDKDisable
Le membre tampon est NULL.
NetEventFilterPreDetach
Le membre tampon est 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 à tampon.
NdisReserved[4]
Zone réservée pour utilisée par NDIS.
TransportReserved[4]
Zone réservée pour utilisée par le conducteur de transport.
TdiReserved[4]
Zone réservée pour utilisée par TDI.
TdiClientReserved[4]
Zone réservée pour utilisée 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 vers un objet d’appareil cible qui représente un adaptateur miniport, NDIS convertit l’événement en un structure NET_PNP_EVENT_NOTIFICATION. 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 à la fonction NdisCompleteNetPnPEvent, que le pilote appelle pour terminer l’appel à ProtocolNetPnPEvent de manière asynchrone.
NDIS transmet un pointeur à 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 cesser de générer de nouvelles requêtes d’E/S. En outre, le pilote ne doit pas attendre la fin des demandes d’E/S en attente.
Une fois le protocole ou le pilote 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.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Prise 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). |
d’en-tête | netpnp.h (include Ndis.h, Netpnp.h) |
Voir aussi
NDIS_PROTOCOL_PAUSE_PARAMETERS NDIS_PROTOCOL_RESTART_PARAMETERS NdisIMInitializeDeviceInstanceExinterroger la configuration de commutateur extensible Hyper-V