NdisMNetPnPEvent-Funktion (ndis.h)

NDIS-Miniporttreiber (und Zwischentreiber, die als Miniporttreiber registriert sind) rufen die NdisMNetPNPEvent-Funktion auf, um ein Netzwerk Plug & Play Ereignis, ein NDIS-PnP-Ereignis oder ein Power Management-Ereignis zu erstellen oder es an überlastende Treiber zu verteilen.

Syntax

NDIS_STATUS NdisMNetPnPEvent(
  [in] NDIS_HANDLE                 MiniportAdapterHandle,
       PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);

Parameter

[in] MiniportAdapterHandle

Ein NDIS-Handle, das NDIS am MiniportAdapterHandle-Parameter der MiniportInitializeEx-Funktion bereitgestellt hat. Dieses Handle identifiziert den Miniportadapter, der vom Ereignis betroffen ist. Wenn der Aufrufer ein Zwischentreiber ist, ist dies das Handle des virtuellen Miniports.

NetPnPEventNotification

Ein Zeiger auf eine NET_PNP_EVENT_NOTIFICATION-Struktur, die das Netzwerk Plug & Play-Ereignis, das NDIS-PnP-Ereignis oder das Power Management-Ereignis beschreibt.

Wichtig

Wenn das VPortId-Feld von NetPnpEventNotification auf einen anderen Wert als NDIS_DEFAULT_VPORT_ID festgelegt ist, muss das Flags-Element auf NET_EVENT_FLAGS_VPORT_ID_VALID festgelegt werden, damit VPortId wirksam wird.

Rückgabewert

NdisMNetPnPEvent kann Folgendes zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Die überlasteten Treiber haben das Plug & Play- oder Power Management-Ereignis erfolgreich verarbeitet.
NDIS_STATUS_RESOURCES
Die überlastenden Treiber konnten nicht die erforderlichen Systemressourcen abrufen, um das angegebene Plug & Play- oder Power Management-Ereignis zu erfüllen.
NDIS_STATUS_INVALID_PARAMETER
Bei NDIS ist der Aufruf fehlgeschlagen, weil einige der Eingabeparameter ungültig sind.
NDIS_STATUS_NOT_SUPPORTED
NDIS 6.0- und höher-Protokolltreiber dürfen diese status nicht zurückgeben. Ein NDIS 5. x-Protokolltreiber, der Plug & Play nicht unterstützt, kann diese status als Reaktion auf ein NetEventSetPower zurückgeben, um anzugeben, dass NDIS die Bindung vom zugrunde liegenden Adapter aufheben soll.
NDIS_STATUS_INVALID_PORT
Bei NDIS ist die Anforderung fehlgeschlagen, da ein ungültiger NDIS-Port in einem NetEventPortActivation - oder NetEventPortDeactivation-PnP-Ereignis angegeben wurde.
NDIS_STATUS_INVALID_PORT_STATE
Bei NDIS ist die Anforderung fehlgeschlagen, weil sich ein NDIS-Port in einem ungültigen Portzustand befand. Die Ports werden in einem NetEventPortActivation - oder NetEventPortDeactivation-PnP-Ereignis angegeben.
NDIS_STATUS_FAILURE
Die Versuche der überlasteten Treiber, das weitergegebene Plug & Play- oder Power Management-Ereignis zu verarbeiten, sind fehlgeschlagen.
 

Der Rückgabewert ist nur dann von Bedeutung, wenn das weitergegebene Ereignis ein NetEventQueryPower - oder NetEventQueryRemoveDevice-Ereignis ist. Bei allen anderen weitergegebenen Ereignissen ist der Rückgabewert immer NDIS_STATUS_SUCCESS.

Wenn das Ereignis NetEventPortActivation ist und der Aufruf fehlschlägt, sollte der Aufrufer die zugehörigen Ports nicht in Empfangsanzeigen oder status Indikationen verwenden.

Hinweise

Jeder Miniporttreiber kann NdisMNetPnPEvent aufrufen, um NetEventPortActivation - und NetEventPortDeactivation-Ereignisse zu generieren. Nur zwischengeschaltete Treiber können andere Ereignisbenachrichtigungen erstellen.

Hinweis Um Deadlocks zu verhindern, muss ein NDIS-Treiber folgendes tun:
 
Um Benachrichtigungen über ein Netzwerk-Plug & Play-Ereignis, ein NDIS-PnP-Ereignis oder ein Power Management-Ereignis an überlastende Treiber zu verteilen, ruft ein NDIS-Zwischentreiber NdisMNetPnPEvent im Kontext der ProtocolNetPnPEvent-Funktion des Treibers auf.

Wenn das weitergegebene Ereignis ein NetEventQueryPower oder ein NetEventQueryRemoveDevice ist, muss der Zwischentreiber den NDIS_STATUS Wert überprüfen, der von NdisMNetPnPEvent zurückgegeben wird. Wenn der zurückgegebene status NDIS_STATUS_SUCCESS ist, sollte der Zwischentreiber das Ereignis behandeln und dann NDIS_STATUS_SUCCESS von seiner ProtocolNetPnPEvent-Funktion zurückgeben. Wenn die zurückgegebene status nicht NDIS_STATUS_SUCCESS ist, sollte der Zwischentreiber die gemeldeten status aus seiner ProtocolNetPnPEvent-Funktion ohne weitere Verarbeitung zurückgeben.

Wie der Zwischentreiber einen NetEventSetPower verarbeitet, der von seiner ProtocolNetPnPEvent-Funktion empfangen wird, hängt vom angegebenen Geräteleistungszustand ab. Wenn der angegebene Gerätestromzustand NdisDeviceStateD0 ist, sollte der Zwischentreiber das Ereignis behandeln und dann NdisMNetPnPEvent aufrufen. Für jeden anderen angegebenen Gerätestromzustand sollte der Zwischentreiber zuerst NdisMNetPEvent aufrufen und dann das Ereignis behandeln.

Ein Zwischentreiber sollte NdisMNetPnPEvent aufrufen, um eine NetEventReconfigure oder NetEventBindList nur dann zu verteilen, wenn die NetEventReconfigure oder NetEventBindList in einem Nicht-NULL-ProtokollBindingContext angegeben ist. Wenn eine NetEventReconfigure oder NetEventBindList in einem NULL-ProtokollBindingContext angegeben ist, sollte der Zwischentreiber NdisMNetPnPEvent nicht aufrufen, um das Ereignis zu verteilen.

Wenn ein Zwischentreiber eine NetEventReconfigure oder eine NetEventBindList verarbeitet, sollten alle dem Ereignis zugeordneten Daten überprüft werden.

Ein Zwischentreiber sollte die Ereignisse NetEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivation oder NetEventPortDeactivation nicht weitergeben, indem NdisMNetPnPEvent aufgerufen wird.

Ein NDIS-Zwischentreiber kann eigene NDIS-Portereignisse für virtuelle Miniports generieren, die für die NetEventPortActivation - oder NetEventPortDeactivation-Ereignisse geeignet sind, die er über seine ProtocolNetPnPEvent-Funktion empfängt.

Bei allen anderen weitergegebenen Ereignissen sollte die ProtocolNetPnPEvent-Funktion des Zwischentreibers den status Wert weitergeben, der von NdisMNetPnPEvent zurückgegeben wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Universell
Header ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL PASSIVE_LEVEL
DDI-Complianceregeln Irql_Protocol_Driver_Function(ndis), NdisMNetPnPEventInOIDRequest(ndis)

Weitere Informationen

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent