NET_PNP_EVENT-Struktur (netpnp.h)
Die NET_PNP_EVENT-Struktur beschreibt ein PnP-Ereignis (Network Plug & Play), ein NDIS-PnP-Ereignis oder ein Energieverwaltungsereignis.
Syntax
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;
Member
NetEvent
Ein Ereigniscode, der das Ereignis wie folgt beschreibt:
NetEventSetPower
Gibt an, dass der Energie-Manager eine Set Power Request gesendet hat, die einen Übergang zu einem Systemstromzustand angibt. NDIS übersetzt diesen Zustand in einen geeigneten Gerätestromzustand für das Gerät.
Weitere Informationen finden Sie im Abschnitt mit Hinweisen.
NetEventQueryPower
Gibt an, dass der Power Manager eine Abfrage-Energieanforderung gesendet hat, die einen Übergang zu einem Systemstromzustand anfordert. NDIS übersetzt diesen Zustand in einen geeigneten Gerätestromzustand für das Gerät.
Weitere Informationen finden Sie im Abschnitt mit Hinweisen.
NetEventQueryRemoveDevice
Gibt an, dass der PnP-Manager eine Abfragegeräte entfernen-Anforderung gesendet hat. Der PnP-Manager sendet diese Anforderung, um abzufragen, ob ein Gerät entfernt werden kann, ohne Vorgänge zu unterbrechen.
NetEventCancelRemoveDevice
Gibt an, dass der PnP-Manager die Anforderung "Gerät abbrechen entfernen" gesendet hat. Der PnP-Manager sendet diese Anforderung, um die Entfernung eines Geräts abzubrechen, nachdem der PnP-Manager eine Abfrage entfernen Gerät-Anforderung gesendet hat.
NetEventReconfigure
Gibt an, dass sich die Konfiguration für eine Netzwerkkomponente geändert hat. Wenn ein Benutzer beispielsweise über den Ordner Network and Dial-up Connections die IP-Adresse für TCP/IP ändert, gibt NDIS das NetEventReconfigure-Ereignis in das TCP/IP-Protokoll an. Außerdem verwendet ein zwischengeschalteter Treiber in der Regel dieses Ereignis als Trigger, um die NdisIMInitializeDeviceInstanceEx-Funktion und starten ihre virtuellen Miniports. Weitere Informationen zu NetEventReconfigure finden Sie unter NetEventIMReEnableDevice.
NetEventBindList
Gibt für einen Protokolltreiber an, dass seine Bindungslistenverarbeitungsreihenfolge neu konfiguriert wurde. Diese Liste gibt eine relative Reihenfolge an, die für Bindungen bei der Verarbeitung gilt, z. B. eine Benutzeranforderung, die an eine von mehreren Bindungen weitergeleitet werden kann. Der Puffer, der mit diesem Ereignis übergeben wird, enthält eine Liste von Gerätenamen, die als Unicode-Zeichenfolgen mit NULL-Termin formatiert sind. Das Format der einzelnen Gerätenamen ist identisch mit dem AdapterName-Member , das an einen Aufruf der ProtocolBindAdapterEx-Funktion übergeben wird.
NetEventBindsComplete
Gibt an, dass ein Protokolltreiber an alle Netzwerkkarten gebunden ist, an die er gebunden werden kann. NDIS gibt keine weiteren Netzwerkkarten für das Protokoll an, es sei denn, eine PnP-NIC ist an das System angeschlossen.
NetEventPnPCapabilities
Gibt an, dass der Benutzer die Aktivierungsfunktionen des zugrunde liegenden Adapters aktiviert oder deaktiviert hat. (Die Bindung wird durch den Parameter ProtocolBindingContext angegeben, der an die ProtocolNetPnPEvent-Funktion übergeben wird.)
NetEventPause
Gibt an, dass die angegebene Protokollbindung in den Zustand Anhalten versetzt werden soll. Die Bindung wird in den Status Angehalten versetzt, nachdem NDIS alle ausstehenden Sendeanforderungen für die Bindung abgeschlossen hat.
NetEventRestart
Gibt an, dass die angegebene Protokollbindung den Status Neustarten erreicht hat. Nachdem der Protokolltreiber bereit ist, Sende- und Empfangsvorgänge für die Bindung fortzusetzen, wechselt die Bindung in den Status Ausführen.
NetEventPortActivation
Gibt die Aktivierung einer Liste von Ports an, die der angegebenen Bindung zugeordnet sind.
NetEventPortDeactivation
Gibt die Deaktivierung einer Liste von Ports an, die der angegebenen Bindung zugeordnet sind.
NetEventIMReEnableDevice
Gibt an, dass die Konfiguration für einen virtuellen Miniport eines NDIS 6.0- oder höher-Zwischentreibers geändert wurde. NetEventIMReEnableDevice ähnelt dem NetEventReconfigure-Ereignis , mit der Ausnahme, dass der Zwischentreiber dieses Ereignis für einen einzelnen virtuellen Miniport empfängt und das NetEventReconfigure-Ereignis für alle virtuellen Miniports des Zwischentreibers gilt. Beispielsweise empfängt ein Zwischentreiber das NetEventIMReEnableDevice-Ereignis, wenn ein Benutzer deaktiviert und dann einen einzelnen virtuellen Miniport aus dem Geräte-Manager oder einer anderen Quelle aktiviert. Beispiele für die Energieverwaltung für fortgeschrittene Treiber finden Sie im Beispiel NDIS MUX Intermediate Driver und Notify Object Driver, das im Repository für Windows-Treiberbeispiele auf GitHub verfügbar ist.
NetEventNDKEnable
Gibt an, dass der direkte Netzwerkkernkern (Network Direct Kernel, NDK) derzeit aktiviert ist.
NetEventNDKDisable
Gibt an, dass NDK derzeit deaktiviert ist.
NetEventFilterPreDetach
Gibt an, dass ein Filter gerade getrennt werden soll, sodass der Filter alle erforderlichen Bereinigungen durchführen kann, die im FilterDetach-Handler nicht möglich sind (da die OID- und Anzeigepfade zu diesem Zeitpunkt geschlossen sind).
NetEventBindFailed
Gibt an, dass ein Bindungsereignisfehler aufgetreten ist.
NetEventSwitchActivate
Gibt an, dass der Hyper-V Extensible Switch die Aktivierung abgeschlossen hat und Switch-Erweiterungen jetzt sicher nach weiterer Switchkonfiguration abfragen können. Die Angabe wird nur im Hyper-V Extensible Switch-Stapel verwendet, der vom Erweiterungsminiport ausgegeben wird. Weitere Informationen finden Sie unter Abfragen der Konfiguration des erweiterbaren Hyper-V-Switches und NDIS_SWITCH_PARAMETERS .
NetEventInhibitBindsAbove
Ein synchrones Ereignis, das verhindert, dass andere Filter und Protokolle an den Miniportadapter gebunden werden. Alle Filter oder Protokolle, die zuvor gebunden waren, werden vor Abschluss des Ereignisses ungebunden. Die Nutzungsregeln finden Sie unten.
- Vermeiden Sie es, den Miniportadapter länger als 1000 Millisekunden im Hemmzustand zu lassen.
- Dieses Ereignis kann erst nach dem Start von MiniportInitializeEx ausgegeben werden und darf nach der Rückgabe von MiniportHaltEx nicht ausgestellt werden.
- Dieses Ereignis kann nur ausgegeben werden, wenn sich der Miniportadapter im Zustand D0 befindet.
- Da dieses Ereignis blockiert, sollte es nicht von einem Kontext ausgegeben werden, der einen Deadlock verursachen würde.
- Sperren dürfen beim Ausstellen dieses Ereignisses nicht durchgeführt werden.
- Dieses Ereignis muss am PASSIVE_LEVEL ausgegeben werden.
NetEventAllowBindsAbove
Ein asynchrones Ereignis, das die Auswirkungen von NetEventInhibitBindsAbove umkehrt. Die Nutzungsregeln finden Sie unten.
- Dieses Ereignis kann erst nach dem Start von MiniportInitializeEx ausgegeben werden und darf nach der Rückgabe von MiniportHaltEx nicht ausgestellt werden.
- Dieses Ereignis kann nur ausgegeben werden, wenn sich der Miniportadapter im Zustand D0 befindet.
- Sperren dürfen beim Ausstellen dieses Ereignisses nicht durchgeführt werden.
- Dieses Ereignis muss am PASSIVE_LEVEL ausgegeben werden.
NetEventRequirePause
Ein synchrones Ereignis, das angibt, dass die Protokolle und Filter einschließlich des Miniportadapters angehalten werden müssen. Die Protokolle und Filter und der Miniportadapter werden garantiert angehalten, wenn die NdisMNetPnPEvent-Routine zurückgibt. Die Nutzungsregeln finden Sie unten.
- Vermeiden Sie eine Verzögerung zwischen NetEventAllowStart- und NetEventRequirePause-Ereignissen für mehr als 1.000 Millisekunden, um Verzögerungen in Benutzeranwendungen zu verhindern.
- Dieses Ereignis kann erst nach dem Start von MiniportInitializeEx ausgegeben werden und darf nach der Rückgabe von MiniportHaltEx nicht ausgestellt werden.
- Es gibt keine Garantie, dass NDIS MiniportPause aufruft, nachdem dieses Ereignis ausgegeben wurde. Insbesondere wenn Ihr Miniportadapter bereits angehalten ist, führt NDIS keine zusätzliche Start-Pause-Schleife ein. Dies bedeutet, dass die Anzahl der Aufrufe von MiniportPause nicht größer, kleiner als oder gleich dem Betrag ist, den dieses Ereignis ausgegeben wird.
- Da dieses Ereignis blockiert, sollte es nicht von einem Kontext ausgegeben werden, der einen Deadlock verursachen würde.
- Sperren dürfen während des Ausstellens dieses Ereignisses nicht gehalten werden.
NetEventAllowStart
Ein asynchrones Ereignis, das angibt, dass die Protokolle und Filter einschließlich des Miniportadapters nicht angehalten werden müssen. Die Nutzungsregeln finden Sie unten. Es gibt keinen garantierten Pausenzustand für treiber in den Protokollen und Filtern, nachdem die NdisMNetPNPEvent-Routine zurückgegeben wurde.
- Dieses Ereignis kann nur ausgegeben werden, nachdem MiniportInitializeEx beginnt, und darf nicht nach der Rückgabe von MiniportHaltEx ausgestellt werden.
- Da dieses Ereignis blockiert, sollte es nicht von einem Kontext ausgegeben werden, der einen Deadlock verursachen würde.
- Sperren dürfen während des Ausstellens dieses Ereignisses nicht gehalten werden.
Buffer
Die Adresse eines Puffers, der Informationen enthält, die für das im NetEvent-Element angegebene Ereignis spezifisch sind. Für jeden Ereignistyp enthält der Puffer die folgenden Informationen:
NetEventSetPower
Der Puffer enthält den Energiezustand des Geräts, in den das Gerät wechselt.
Wenn NDIS die ProtocolNetPnPEvent-Funktion eines Protokolltreibers aufruft, ist der Gerätezustand NDIS_DEVICE_POWER_STATE, was einer der folgenden Werte sein kann:
NdisDeviceStateUnspecified
Das Netzwerkgerät unterstützt keine Energieverwaltung.
NdisDeviceStateD0
Der vollständig betriebene Zustand, in dem das Gerät die volle Funktionalität und Leistung bietet.
NdisDeviceStateD1
Ein Low-Power-Zustand, in dem Übertragungsanforderungen vom Host nicht vom Gerät berücksichtigt werden, die vom Gerät empfangenen Daten nicht in den Hostspeicher übertragen werden und keine Unterbrechungen auftreten können. Einige Gerätekontexte können verlorengehen. Abhängig von den Funktionen der NIC und ihres Miniporttreibers kann das Gerät möglicherweise ein Aktivierungssignal generieren.
NdisDeviceStateD2
Ein Low-Power-Zustand, der NdisDeviceStateD1 ähnelt, mit der Ausnahme, dass in der Regel mehr Energie und weniger Kontext eingespart werden und mehr Zeit für den Übergang in den vollständigen Betriebszustand erforderlich ist.
NdisDeviceStateD3
Der Aus-Zustand, in dem die Stromversorgung vollständig vom Gerät entfernt wurde.
Für Protokolltreiber bedeutet NdisDeviceStateD0 , dass die NIC vollständig mit Strom versorgt ist und für normale Vorgänge verfügbar ist. Jeder andere Gerätezustand bedeutet, dass das Gerät nicht vollständig mit Strom versorgt ist und nicht zum Senden und Empfangen von Netzwerkdaten verfügbar ist.
NetEventQueryPower
Der Puffer enthält den Energiezustand des Geräts, der für das Gerät angefordert wird. Der Gerätestatus ist NDIS_DEVICE_POWER_STATE (wie in der NetEventSetPower-Wertbeschreibung beschrieben).
NetEventQueryRemoveDevice
Der Pufferinhalt ist NULL.
NetEventCancelRemoveDevice
Der Pufferinhalt ist NULL.
NetEventReconfigure
Der Puffer kann protokollspezifische Daten enthalten. Der Protokolltreiber ist für die Validierung dieser Daten verantwortlich.
NetEventBindList
Der Puffer enthält eine überarbeitete Bindungsliste für die Netzwerkkomponente, die von NET_PNP_EVENT_NOTIFICATION Struktur wird übergeben. Die Bindungsliste, bei der es sich um eine Reihe von Unicode-Zeichenfolgen mit NULL-Terminen handelt, weist ein REG_MULTI_SZ Format auf. Jede der Zeichenfolgen ist ein Adaptername. TDI-Clients, die an ein Protokoll gebunden sind, verwenden diese Bindungsliste, um ihre Bindungen neu anzuordnen. Der Protokolltreiber ist für die Überprüfung dieser Liste verantwortlich.
NetEventBindsComplete
Der Pufferinhalt ist NULL.
NetEventPnPCapabilities
Der Puffer ist eine ULONG, die eine Bitmaske enthält. Wenn das flag NDIS_DEVICE_WAKE_UP_ENABLE in der Bitmaske festgelegt ist, werden die Aktivierungsfunktionen der NIC aktiviert. Andernfalls sind die Aktivierungsfunktionen der NIC deaktiviert. (Die Bindung wird durch den Parameter ProtocolBindingContext angegeben, der an ProtocolNetPnPEvent übergeben wird.) Bei Festlegung auf 0 (null) gibt dieses Flag an, dass die Aktivierungsfunktionen der NIC deaktiviert sind.
NetEventPause
Der Puffer enthält NDIS_PROTOCOL_PAUSE_PARAMETERS Struktur.
NetEventRestart
Der Puffer kann NULL oder eine NDIS_PROTOCOL_RESTART_PARAMETERS Struktur. NDIS stellt einen Zeiger auf eine NDIS_RESTART_ATTRIBUTES-Struktur im RestartAttributes-Member der NDIS_PROTOCOL_RESTART_PARAMETERS-Struktur bereit.
NetEventPortActivation
Der Puffer enthält den ersten Eintrag in einer Liste von NDIS_PORT Strukturen, die die Ports identifizieren, die von NDIS aktiviert werden. Sie können das Element Next der NDIS_PORT-Struktur verwenden, um die nächste Struktur in der Liste abzurufen.
NetEventPortDeactivation
Der Puffer enthält ein Array von Portnummern vom Typ NDIS_PORT_NUMBER (definiert als ULONG), die die NDIS-Ports identifizieren, die von NDIS deaktiviert werden. Um die Anzahl der Elemente im Array zu berechnen, dividieren Sie den Wert des BufferLength-Elements , der sich in der NET_PNP_EVENT-Struktur befindet, die im NetPnPEvent-Member von NET_PNP_EVENT_NOTIFICATION angegeben ist, durch sizeof(NDIS_PORT_NUMBER).
NetEventIMReEnableDevice
Der Puffer enthält einen Zeiger auf eine Variable vom Typ NDIS_STRING, die eine Unicode-Zeichenfolge mit NULL-Termin enthält, die das Geräteobjekt eines virtuellen Miniports für das aktivierte Gerät benennt. Die Zeichenfolge ist ein vollständiger Pfadname, z. B. \Device\DeviceName.
NetEventNDKEnable
Der Buffer-Member ist NULL.
NetEventNDKDisable
Der Buffer-Member ist NULL.
NetEventFilterPreDetach
Der Buffer-Member ist NULL.
NetEventBindFailed
Der Puffer enthält eine NDIS_BIND_FAILED_NOTIFICATION-Struktur .
NetEventSwitchActivate
Der Pufferinhalt ist NULL.
NetEventAllowBindsAbove
Der Pufferinhalt ist NULL.
NetEventInhibitBindsAbove
Der Pufferinhalt ist NULL.
NetEventAllowStart
Der Pufferinhalt ist NULL.
NetEventRequirePause
Der Pufferinhalt ist NULL.
BufferLength
Die Anzahl der Bytes von ereignisspezifischen Informationen in Buffer.
NdisReserved[4]
Ein Bereich, der für die Verwendung durch NDIS reserviert ist.
TransportReserved[4]
Ein Bereich, der für die Nutzung durch den Transportfahrer reserviert ist.
TdiReserved[4]
Ein Bereich, der für die Verwendung durch TDI reserviert ist.
TdiClientReserved[4]
Ein Bereich, der für die Verwendung durch einen TDI-Client reserviert ist.
Hinweise
Wenn das Betriebssystem in NDIS 6.0 und höheren Versionen ein System-PnP-Ereignis oder ein Energieverwaltungsereignis an ein Zielgerätobjekt ausgibt, das einen Miniportadapter darstellt, übersetzt NDIS das Ereignis in eine NET_PNP_EVENT_NOTIFICATION Struktur. Das NetPnPEvent-Element der NET_PNP_EVENT_NOTIFICATION-Struktur ist eine NET_PNP_EVENT-Struktur .
NDIS übergibt einen Zeiger auf die NET_PNP_EVENT-Struktur an jeden Protokolltreiber, der an den Miniportadapter gebunden ist, indem die ProtocolNetPnPEvent-Funktion des Protokolltreibers aufgerufen wird. Der Protokolltreiber sollte diesen Zeiger speichern, da der Zeiger ein Eingabeparameter für die NdisCompleteNetPnPEvent-Funktion ist, die der Treiber aufruft, um den Aufruf von ProtocolNetPnPEvent asynchron abzuschließen.
NDIS übergibt einen Zeiger auf die NET_PNP_EVENT-Struktur an jeden Filtertreiber, der an den Miniportadapter gebunden ist, indem die FilterNetPnPEvent-Funktion des Filtertreibers aufgerufen wird. Der Filtertreiber muss diesen Zeiger nicht speichern, da der Treiber den Aufruf von FilterNetPnPEvent synchron abschließen muss.
Ab NDIS 6.30 muss das Protokoll oder der Filtertreiber die folgenden Richtlinien befolgen, wenn NDIS die Funktionen ProtocolNetPnPEvent oder FilterNetPnPEvent aufruft:
-
Wenn das NetEvent-Element der NET_PNP_EVENT-Struktur auf NetEventSetPower festgelegt ist, muss der Treiber die Generierung neuer E/A-Anforderungen beenden. Außerdem darf der Treiber nicht auf den Abschluss ausstehender E/A-Anforderungen warten.
Nachdem das Protokoll oder der Filtertreiber von ProtocolNetPnPEvent oder FilterNetPnPEvent zurückgegeben wurde, wird NDIS diese Treiber während der Energiezustandsübergänge nicht anhalten und neu starten, wenn die folgenden Bedingungen zutreffen:
- Der zugrunde liegende Miniporttreiber legt das NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND-Flag in der NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES-Struktur fest. Der Treiber übergibt in seinem Aufruf der Funktion NdisMSetMiniportAttributes einen Zeiger auf diese Struktur.
- Alle Filtertreiber, die an den Miniporttreiber angefügt sind, unterstützen NDIS 6.30 oder höhere Versionen von NDIS.
- Alle Protokolltreiber, die an den Miniporttreiber gebunden sind, unterstützen NDIS 6.30 oder höhere Versionen von NDIS.
- Wenn das NetEvent-Element der NET_PNP_EVENT-Struktur auf NetEventSetPower oder NetEventQueryPower festgelegt ist, darf der Treiber nicht auf den Abschluss ausstehender E/A-Anforderungen warten.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 5.1 und NDIS 6.0 und höher. Weitere Informationen zur NDIS 5.1-Version dieser Struktur finden Sie unter NET_PNP_EVENT (NDIS 5.1). |
Kopfzeile | netpnp.h (include Ndis.h, Netpnp.h) |
Weitere Informationen
NDIS_PROTOCOL_PAUSE_PARAMETERS NDIS_PROTOCOL_RESTART_PARAMETERS NdisIMInitializeDeviceInstanceExAbfragen der Konfiguration des erweiterbaren Hyper-V-Switches