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 |
---|---|
|
Die überlasteten Treiber haben das Plug & Play- oder Power Management-Ereignis erfolgreich verarbeitet. |
|
Die überlastenden Treiber konnten nicht die erforderlichen Systemressourcen abrufen, um das angegebene Plug & Play- oder Power Management-Ereignis zu erfüllen. |
|
Bei NDIS ist der Aufruf fehlgeschlagen, weil einige der Eingabeparameter ungültig sind. |
|
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. |
|
Bei NDIS ist die Anforderung fehlgeschlagen, da ein ungültiger NDIS-Port in einem NetEventPortActivation - oder NetEventPortDeactivation-PnP-Ereignis angegeben wurde. |
|
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. |
|
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.
- Die MiniportOidRequest-Funktion darf NdisMNetPnPEvent nicht aufrufen.
- Wenn seine MiniportOidRequest-Funktion NDIS_STATUS_PENDING für eine OID-Anforderung zurückgibt, darf der NDIS-Treiber NdisMNetPnPEvent erst aufrufen, nachdem er die OID-Anforderung durch Aufrufen von NdisMOidRequestComplete abgeschlossen hat.
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) |