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 |
---|---|
|
Die übermäßigen Treiber haben das Plug and Play- oder Power Management-Ereignis erfolgreich verarbeitet. |
|
Die überlagernden Treiber konnten die erforderlichen Systemressourcen nicht abrufen, um das angegebene Plug-and-Play- oder Power Management-Ereignis zu erfüllen. |
|
Fehler beim Aufruf durch NDIS, da einige der Eingabeparameter ungültig sind. |
|
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. |
|
Fehler bei der Anforderung durch NDIS, da ein ungültiger NDIS-Port in einem NetEventPortActivation- oder NetEventPortDeactivation PnP-Ereignis angegeben wurde. |
|
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. |
|
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.
- 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.
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) |