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.
Dieses Ereignis ist ab NDIS Version 6.50 verfügbar und muss mit V2 oder höherer Version von NET_PNP_EVENT verwendet werden. Dieses Ereignis kann optional von einem Miniporttreiber ausgegeben werden. Protokolle und Filter können dieses Ereignis nicht empfangen oder ausstellen.

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.
Dieses Ereignis ist ab NDIS Version 6.50 verfügbar und muss mit V2 oder höherer Version von NET_PNP_EVENT verwendet werden. Dieses Ereignis kann optional von einem Miniporttreiber ausgegeben werden. Protokolle und Filter können dieses Ereignis nicht empfangen oder ausstellen.

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.
Dieses Ereignis ist ab NDIS-Version 6.50 verfügbar und muss mit V2 oder höherer Version von NET_PNP_EVENT verwendet werden. Dieses Ereignis kann optional von einem Miniporttreiber ausgegeben werden. Protokolle und Filter können dieses Ereignis nicht empfangen oder ausstellen.

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.
Dieses Ereignis ist ab NDIS-Version 6.50 verfügbar und muss mit V2 oder höherer Version von NET_PNP_EVENT verwendet werden. Dieses Ereignis kann optional von einem Miniporttreiber ausgegeben werden. Protokolle und Filter können dieses Ereignis nicht empfangen oder ausstellen.

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.

Hinweis Wenn der Puffer NULL ist, haben sich die Neustartattribute seit dem vorherigen Neustart nicht geändert.
 

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.
Das NetEvent-Element in der NET_PNP_EVENT-Struktur identifiziert den Typ des Plug & Play- oder Energieverwaltungsereignisses. Der Puffer enthält Informationen, die für den Typ des Ereignisses spezifisch sind.

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

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

Abfragen der Konfiguration des erweiterbaren Hyper-V-Switches