Freigeben über


NdisMNetPnPEvent-Funktion (ndis.h)

NDIS miniport drivers (and intermediate drivers that are registered as miniport drivers) call the NdisMNetPnPEvent function to originate a network Plug and Play event, an NDIS PnP event, or Power Management event or propagate it to overlying drivers.

Syntax

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

Parameter

[in] MiniportAdapterHandle

Ein NDIS-Handle, das NDIS an der MiniportAdapterHandle Parameter der funktion MiniportInitializeEx bereitgestellt wird. Dieses Handle identifiziert den Miniportadapter, der vom Ereignis betroffen ist. Wenn der Anrufer ein Zwischentreiber ist, ist dies der Handle des virtuellen Miniports.

NetPnPEventNotification

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

Wichtig

Wenn das VPortId- Feld 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 übermäßigen Treiber haben das Plug and Play- oder Power Management-Ereignis erfolgreich verarbeitet.
NDIS_STATUS_RESOURCES
Die überlagernden Treiber konnten die erforderlichen Systemressourcen nicht abrufen, um das angegebene Plug-and-Play- oder Power Management-Ereignis zu erfüllen.
NDIS_STATUS_INVALID_PARAMETER
Fehler beim Aufruf durch NDIS, da einige der Eingabeparameter ungültig sind.
NDIS_STATUS_NOT_SUPPORTED
NDIS 6.0 und höhere Protokolltreiber dürfen diesen Status nicht zurückgeben. Ein NDIS 5.x Protokolltreiber, der Plug and Play nicht unterstützt, kann diesen Status als Reaktion auf eine NetEventSetPower- zurückgeben, um anzugeben, dass NDIS sie vom zugrunde liegenden Adapter aufheben soll.
NDIS_STATUS_INVALID_PORT
Fehler bei der Anforderung durch NDIS, da ein ungültiger NDIS-Port in einem NetEventPortActivation- oder NetEventPortDeactivation PnP-Ereignis angegeben wurde.
NDIS_STATUS_INVALID_PORT_STATE
Fehler bei der Anforderung durch NDIS, da sich ein NDIS-Port in einem ungültigen Portstatus befand. Die Ports werden in einem NetEventPortActivation- oder NetEventPortDeactivation PnP-Ereignis angegeben.
NDIS_STATUS_FAILURE
Fehler bei den überlasteten Treiberversuchen zum Verarbeiten des verteilten Plug-and-Play- oder Power Management-Ereignisses.
 

Der Rückgabewert ist nur dann wichtig, wenn das verteilte Ereignis ein NetEventQueryPower- oder NetEventQueryRemoveDevice-Ereignis ist. Für alle anderen verteilten Ereignisse ist der Rückgabewert immer NDIS_STATUS_SUCCESS.

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

Bemerkungen

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

Note To prevent deadlocks, an NDIS driver must do the following:
  • Die MiniportOidRequest--Funktion darf nicht NdisMNetPnPEventaufrufen.
  • Wenn die MiniportOidRequest--Funktion NDIS_STATUS_PENDING für eine OID-Anforderung zurückgibt, darf der NDIS-Treiber nicht NdisMNetPnPEvent aufrufen, bis die OID-Anforderung abgeschlossen wurde, indem NdisMOidRequestCompleteaufgerufen wird.
 
Um die Benachrichtigung über ein Netzwerk-Plug-and-Play-Ereignis, ein NDIS-PnP-Ereignis oder ein Power Management-Ereignis an Überlying-Treiber zu verteilen, ruft ein NDIS-Zwischentreiber NdisMNetPnPEvent- im Kontext der ProtocolNetPnPEvent--Funktion des Treibers auf.

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

Wie der Zwischentreiber eine NetEventSetPower verarbeitet, die von der ProtocolNetPnPEvent--Funktion empfangen wird, hängt vom angegebenen Gerätestromzustand ab. Wenn der angegebene Gerätestromzustand NdisDeviceStateD0ist, sollte der Zwischentreiber das Ereignis behandeln und dann NdisMNetPnPEventaufrufen. Für alle anderen angegebenen Gerätestromzustände sollte der Zwischentreiber zuerst NdisMNetPnPEvent- aufrufen und dann das Ereignis behandeln.

Ein Zwischentreiber sollte NdisMNetPnPEvent- aufrufen, um eine NetEventReconfigure- oder NetEventBindList nur dann zu verteilen, wenn NetEventReconfigure oder NetEventBindList- wird auf einem nicht-NULL-ProtocolBindingContext-angegeben. Wenn ein NetEventReconfigure- oder NetEventBindList- auf einem NULL-ProtocolBindingContext-angegeben ist, sollte der Zwischentreiber nicht NdisMNetPnPEvent- aufrufen, um das Ereignis zu verteilen.

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

Ein Zwischentreiber sollte die NetEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivationoder NetEventDeactivation Ereignisse durch Aufrufen NdisMNetPnPEvent.

Ein NDIS-Zwischentreiber kann eigene NDIS-Portereignisse für virtuelle Miniports generieren, je nach Bedarf für die NetEventPortActivation- oder NetEventPortDeactivation--Ereignisse, die er an seiner ProtocolNetPnPEvent--Funktion empfängt.

Für alle anderen verteilten Ereignisse sollte die ProtocolNetPnPEvent--Funktion des Zwischentreibers den Statuswert weitergeben, der von NdisMNetPnPEventzurückgegeben wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Zielplattform- Universal
Header- ndis.h (include Ndis.h)
Library Ndis.lib
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln Irql_Protocol_Driver_Function(ndis), NdisMNetPnPEventInOIDRequest(ndis)

Siehe auch

MiniportInitializeEx-

MiniportOidRequest-

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent-