NET_PNP_EVENT Struktur (netpnp.h)
Die NET_PNP_EVENT Struktur beschreibt ein Netzwerk-Plug-and-Play-Ereignis (PnP), 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;
Angehörige
NetEvent
Ein Ereigniscode, der das Ereignis als eine der folgenden Beschreibt:
NetEventSetPower
Gibt an, dass der Power Manager eine Set Power-Anforderung 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 "Hinweise".
NetEventQueryPower
Gibt an, dass der Power Manager eine Abfrage-Power-Anforderung 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 "Hinweise".
NetEventQueryRemoveDevice
Gibt an, dass der PnP-Manager eine Anforderung zum Entfernen eines Abfragegeräts 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 eine Anforderung zum Entfernen des Geräts "Abbrechen" gesendet hat. Der PnP-Manager sendet diese Anforderung, um das Entfernen eines Geräts abzubrechen, nachdem der PnP-Manager eine Abfrage entfernen Geräteanforderung gesendet hat.
NetEventReconfigure
Gibt an, dass die Konfiguration für eine Netzwerkkomponente geändert wurde. Wenn ein Benutzer beispielsweise über den Ordner "Netzwerk- und DFÜ-Verbindungen" die IP-Adresse für TCP/IP ändert, gibt NDIS den NetEventReconfigure Ereignis in das TCP/IP-Protokoll an. Außerdem verwendet ein Zwischentreiber dieses Ereignis in der Regel als Trigger zum Aufrufen des NdisIMInitializeDeviceInstanceEx Funktion und starten sie die virtuellen Miniports. Weitere Informationen zu NetEventReconfigurefinden Sie unter NetEventIMReEnableDevice.
NetEventBindList
Gibt an, dass der Bindungslistenverarbeitungsauftrag für einen Protokolltreiber 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 mit Null beendete Unicode-Zeichenfolgen 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 NICs gebunden ist, an die er gebunden werden kann. NDIS gibt keine weiteren NICs für das Protokoll an, es sei denn, eine PnP-NIC ist an das System angeschlossen.
NetEventPnPCapabilities
Gibt an, dass der Benutzer die Wake-Up-Funktionen des zugrunde liegenden Adapters aktiviert oder deaktiviert hat. (Die Bindung wird durch den ProtocolBindingContext Parameter angegeben, der an die ProtocolNetPnPEvent--Funktion übergeben wird.)
NetEventPause
Gibt an, dass die angegebene Protokollbindung den Anhalten-Zustand eingeben soll. Die Bindung wechselt in den Zustand "Angehalten", nachdem NDIS alle ausstehenden Sendeanforderungen für die Bindung abgeschlossen hat.
NetEventRestart
Gibt an, dass die angegebene Protokollbindung den Neustartstatus eingegeben hat. Nachdem der Protokolltreiber bereit ist, Sende- und Empfangsvorgänge für die Bindung fortzusetzen, wechselt die Bindung in den Zustand "Running".
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 gilt für alle virtuellen Miniports des Zwischentreibers. Beispielsweise empfängt ein Zwischentreiber das NetEventIMReEnableDevice Ereignis, wenn ein Benutzer einen einzelnen virtuellen Miniport aus dem Geräte-Manager oder einer anderen Quelle deaktiviert und aktiviert. Beispiele für die Energieverwaltung zwischen Treibern finden Sie im NDIS MUX Intermediate Driver and Notify Object Treiberbeispiel, das im Windows-Treiberbeispiel Repository auf GitHub verfügbar ist.
NetEventNDKEnable
Gibt an, dass network Direct Kernel (NDK) zurzeit aktiviert ist.
NetEventNDKDisable
Gibt an, dass NDK derzeit deaktiviert ist.
NetEventFilterPreDetach
Gibt an, dass ein Filter getrennt werden soll, sodass der Filter alle erforderlichen Bereinigungen ausführen kann, die im FilterDetach Handlers nicht möglich sind (da die OID- und Indikationspfade zu diesem Zeitpunkt geschlossen werden).
NetEventBindFailed
Gibt an, dass ein Bindungsereignisfehler aufgetreten ist.
NetEventSwitchActivate
Gibt an, dass der Hyper-V Extensible Switch die Aktivierung abgeschlossen hat, und Switcherweiterungen können jetzt sicher nach einer weiteren Switchkonfiguration abfragen. Die Angabe wird nur im Hyper-V Extensible Switch Stack verwendet, der vom Erweiterungs-Miniport ausgegeben wird. Weitere Informationen finden Sie unter Abfragen der Konfiguration Hyper-V Extensible Switch Configuration und NDIS_SWITCH_PARAMETERS.
NetEventInhibitBindsAbove
Ein synchrones Ereignis, das verhindert, dass andere Filter und Protokolle an den Miniportadapter gebunden werden. Alle Zuvor gebundenen Filter oder Protokolle sind vor Abschluss des Ereignisses ungebunden. Die Verwendungsregeln sind unten aufgeführt.
- Vermeiden Sie, den Miniportadapter im Hemmzustand zu verlassen, länger als 1000 Millisekunden.
- Dieses Ereignis kann nur ausgegeben werden, nachdem MiniportInitializeEx beginnt und nach Rückgabe von MiniportHalt Ex nicht ausgestellt werden darf.
- Dieses Ereignis kann nur ausgegeben werden, wenn sich der Miniportadapter in einem D0-Zustand befindet.
- Da dieses Ereignis blockiert wird, sollte es nicht von einem Kontext ausgegeben werden, der zu einem Deadlock führen würde.
- Sperren dürfen beim Ausgeben dieses Ereignisses nicht gehalten werden.
- Dieses Ereignis muss bei PASSIVE_LEVEL ausgestellt werden.
NetEventAllowBindsAbove
Ein asynchrones Ereignis, das die Auswirkungen von NetEventInhibitBindsAbove umkehrt. Die Verwendungsregeln sind unten aufgeführt.
- Dieses Ereignis kann nur ausgegeben werden, nachdem MiniportInitializeEx beginnt und nach Rückgabe von MiniportHalt Ex nicht ausgestellt werden darf.
- Dieses Ereignis kann nur ausgegeben werden, wenn sich der Miniportadapter in einem D0-Zustand befindet.
- Sperren dürfen beim Ausgeben dieses Ereignisses nicht gehalten werden.
- Dieses Ereignis muss bei PASSIVE_LEVEL ausgestellt werden.
NetEventRequirePause
Ein synchrones Ereignis, das die Protokolle und Filter einschließlich des Miniportadapters angibt, muss angehalten werden. Die Protokolle und Filter und der Miniportadapter werden garantiert angehalten, wenn die NdisMNetPnPEvent Routine zurückgegeben wird. Die Verwendungsregeln sind unten aufgeführt.
- Vermeiden Sie Verzögerungen zwischen NetEventAllowStart- und NetEventRequirePause-Ereignissen für mehr als 1000 Millisekunden, um Verzögerungen in Benutzeranwendungen zu verhindern.
- Dieses Ereignis kann nur ausgegeben werden, nachdem MiniportInitializeEx beginnt und nach Rückgabe von MiniportHalt Ex nicht ausgestellt werden darf.
- Es gibt keine Garantie, dass NDIS MiniportPause aufruft, nachdem dieses Ereignis ausgestellt wurde. Wenn ihr Miniportadapter bereits angehalten ist, führt NDIS keine zusätzliche Start-Pause-Schleife ein. Dies bedeutet, dass die Anzahl der Male, die MiniportPause aufgerufen wird, nicht größer als, kleiner oder gleich dem Betrag ist, den dieses Ereignis ausgegeben wird.
- Da dieses Ereignis blockiert wird, sollte es nicht von einem Kontext ausgegeben werden, der zu einem Deadlock führen würde.
- Sperren dürfen beim Ausgeben dieses Ereignisses nicht gehalten werden.
NetEventAllowStart
Ein asynchrones Ereignis, das die Protokolle und Filter einschließlich des Miniportadapters angibt, muss nicht angehalten werden. Die Verwendungsregeln sind unten aufgeführt. Es gibt keinen garantierten Pausenzustand für jeden Treiber in den Protokollen und Filtern, nachdem die NdisMNetPnPEvent Routine zurückgegeben wird.
- Dieses Ereignis kann nur ausgegeben werden, nachdem MiniportInitializeEx beginnt und nach Rückgabe von MiniportHalt Ex nicht ausgestellt werden darf.
- Da dieses Ereignis blockiert wird, sollte es nicht von einem Kontext ausgegeben werden, der zu einem Deadlock führen würde.
- Sperren dürfen beim Ausgeben dieses Ereignisses nicht gehalten werden.
Buffer
Die Adresse eines Puffers, der Informationen enthält, die für das im NetEvent Member angegebene Ereignis spezifisch sind. Für jeden Ereignistyp enthält der Puffer die folgenden Informationen:
NetEventSetPower
Der Puffer enthält den Gerätestromzustand, zu dem das Gerät wechselt.
Wenn NDIS die ProtocolNetPnPEvent-Funktion eines Protokolltreibers aufruft, wird der Gerätezustand NDIS_DEVICE_POWER_STATE. Dies kann einer der folgenden Werte sein:
NdisDeviceStateUnspecified
Das Netzwerkgerät unterstützt keine Energieverwaltung.
NdisDeviceStateD0
Der vollständig unterstützte Zustand, in dem das Gerät volle Funktionalität und Leistung bietet.
NdisDeviceStateD1
Ein Energiesparzustand, in dem Übertragungsanforderungen vom Host nicht vom Gerät berücksichtigt werden, daten, die vom Gerät empfangen werden, werden nicht an den Hostspeicher übertragen, und es können keine Unterbrechungen auftreten. Möglicherweise geht ein Gerätekontext verloren. Je nach den Funktionen der NIC und seines Miniporttreibers kann das Gerät möglicherweise ein Wake-up-Signal generieren.
NdisDeviceStateD2
Ein Energiesparzustand, der NdisDeviceStateD1ähnelt, mit der Ausnahme, dass mehr Energie und weniger Kontext in der Regel gespeichert werden und mehr Zeit für den Übergang zum vollbetriebenen Zustand erforderlich ist.
NdisDeviceStateD3
Der Aus-Zustand, in dem der Strom vollständig vom Gerät entfernt wurde.
Für Protokolltreiber bedeutet NdisDeviceStateD0, dass die NIC vollständig betrieben wird und für normale Vorgänge verfügbar ist. Jeder andere Gerätezustand bedeutet, dass das Gerät nicht vollständig eingeschaltet ist und nicht für das Senden und Empfangen von Netzwerkdaten verfügbar ist.
NetEventQueryPower
Der Puffer enthält den Gerätestromzustand, der für das Gerät angefordert wird. Der Gerätestatus ist NDIS_DEVICE_POWER_STATE (die in der beschreibung NetEventSetPower Wertbeschreibung beschrieben wird).
NetEventQueryRemoveDevice
Der Pufferinhalt ist NULL-.
NetEventCancelRemoveDevice
Der Pufferinhalt ist NULL-.
NetEventReconfigure
Der Puffer kann protokollspezifische Daten enthalten. Der Protokolltreiber ist für die Überprüfung dieser Daten verantwortlich.
NetEventBindList
Der Puffer enthält eine überarbeitete Bindungsliste für die Netzwerkkomponente, die NET_PNP_EVENT_NOTIFICATION Struktur wird übergeben. Die Bindungsliste, bei der es sich um eine Reihe von mit Null beendeten Unicode-Zeichenfolgen 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 ein ULONG, das eine Bitmaske enthält. Wenn das NDIS_DEVICE_WAKE_UP_ENABLE Flag in der Bitmaske festgelegt ist, werden die Wake-up-Funktionen der NIC aktiviert. Andernfalls sind die NIC-Wake-up-Funktionen deaktiviert. (Die Bindung wird durch den ProtocolBindingContext Parameter angegeben, der an ProtocolNetPnPEventübergeben wird.) Wenn diese Kennzeichnung auf Null festgelegt ist, gibt dieses Flag an, dass die NIC-Wake-Up-Funktionen deaktiviert sind.
NetEventPause
Der Puffer enthält einen NDIS_PROTOCOL_PAUSE_PARAMETERS Struktur.
NetEventRestart
Der Puffer enthält möglicherweise NULL oder einen 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 NDIS aktiviert. Sie können das Next Member 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), das die NDIS-Ports identifiziert, die NDIS deaktivieren. Um die Anzahl der Elemente im Array zu berechnen, dividieren Sie den Wert des BufferLength Members, das sich in der NET_PNP_EVENT Struktur befindet, die im NetPnPEvent Member von NET_PNP_EVENT_NOTIFICATIONdurch sizeof(NDIS_PORT_NUMBER) angegeben ist.
NetEventIMReEnableDevice
Der Puffer enthält einen Zeiger auf eine Variable vom Typ NDIS_STRING, die eine mit Null beendete Unicode-Zeichenfolge enthält, die das Geräteobjekt eines virtuellen Miniports für das gerät benennt, das aktiviert wird. Die Zeichenfolge ist ein vollständiger Pfadname, z. B. \Device\DeviceName.
NetEventNDKEnable
Das Buffer Member ist NULL-.
NetEventNDKDisable
Das Buffer Member ist NULL-.
NetEventFilterPreDetach
Das 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 ereignisspezifischer Informationen bei Buffer.
NdisReserved[4]
Ein Bereich, der für die Verwendung durch NDIS reserviert ist.
TransportReserved[4]
Ein Vom Transportfahrer reservierter Bereich.
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.
Bemerkungen
Wenn das Betriebssystem in NDIS 6.0 und höheren Versionen ein System-PnP-Ereignis oder ein Energieverwaltungsereignis auf ein Zielgerätobjekt ausgibt, das einen Miniportadapter darstellt, übersetzt NDIS das Ereignis in ein NET_PNP_EVENT_NOTIFICATION Struktur. Das NetPnPEvent- Mitglied der NET_PNP_EVENT_NOTIFICATION-Struktur ist eine NET_PNP_EVENT Struktur.
NDIS übergibt einen Zeiger an 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 an die NET_PNP_EVENT Struktur an jeden Filtertreiber, der an den Miniportadapter gebunden ist, indem der FilterNetPnPEvent--Funktion des Filtertreibers aufgerufen wird. Der Filtertreiber muss diesen Zeiger nicht speichern, da der Treiber den Aufruf FilterNetPnPEvent- synchron abschließen muss.
Ab NDIS 6.30 muss der Protokoll- oder Filtertreiber diese Richtlinien befolgen, wenn NDIS die funktionen ProtocolNetPnPEvent oder FilterNetPnPEvent- aufruft:
-
Wenn das NetEvent Member der NET_PNP_EVENT-Struktur auf NetEventSetPowerfestgelegt 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, hält NDIS diese Treiber nicht an und startet diese Treiber während der Energiezustandsübergänge neu, 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 einen Zeiger auf diese Struktur im Aufruf der NdisMSetMiniportAttributes- Funktion.
- 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 Member der NET_PNP_EVENT-Struktur auf NetEventSetPower oder NetEventQueryPowerfestgelegt ist, darf der Treiber nicht auf den Abschluss ausstehender E/A-Anforderungen warten.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte 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). |
Header- | netpnp.h (include Ndis.h, Netpnp.h) |