Freigeben über


MINIPORT_DEVICE_PNP_EVENT_NOTIFY Rückruffunktion (ndis.h)

NDIS ruft die MiniportDevicePnPEventNotify-Funktion eines Miniporttreibers auf, um den Treiber über PnP-Ereignisse (Plug & Play) zu benachrichtigen.

Hinweis Sie müssen die Funktion mithilfe des typs MINIPORT_DEVICE_PNP_EVENT_NOTIFY deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

MINIPORT_DEVICE_PNP_EVENT_NOTIFY MiniportDevicePnpEventNotify;

void MiniportDevicePnpEventNotify(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNET_DEVICE_PNP_EVENT NetDevicePnPEvent
)
{...}

Parameter

[in] MiniportAdapterContext

Ein Handle für einen Kontextbereich, den der Miniporttreiber in seiner MiniportInitializeEx-Funktion zugeordnet hat. Der Miniporttreiber verwendet diesen Kontextbereich, um Zustandsinformationen für einen Miniportadapter zu verwalten.

[in] NetDevicePnPEvent

Ein Zeiger auf eine NET_DEVICE_PNP_EVENT-Struktur, die ein Gerät Plug & Play-Ereignis beschreibt.

Rückgabewert

Keine

Bemerkungen

Ein Treiber gibt den MiniportDevicePnPEventNotify-Einstiegspunkt an, wenn er die NdisMRegisterMiniportDriver-Funktion .

NDIS ruft die MiniportDevicePnPEventNotify-Funktion des Treibers auf, wobei das DevicePnPEvent-Element des NetDevicePnPEvent-Parameters nach einem der folgenden Ereignisse auf NdisDevicePnPEventPowerProfileChanged festgelegt ist :

  • Die Treiberinitialisierung ist abgeschlossen.
  • Der Treiber hat eine OID_PNP_SET_POWER Benachrichtigung erhalten, die den eingeschalteten Zustand ( NdisDeviceStateD0) angibt.
Im zweiten Fall gibt der Wert bei InformationBuffer an, ob das System mit Akkuleistung (NdisPowerProfileBattery) oder Wechselstrom (NdisPowerProfileAcOnline) ausgeführt wird. Ein Treiber kann diese Informationen verwenden, um den Stromverbrauch des angegebenen Miniportadapters anzupassen. Beispielsweise kann der Treiber für ein WLAN-Gerät den Stromverbrauch reduzieren, wenn das System mit Akkuleistung betrieben wird, oder den Stromverbrauch erhöhen, wenn das System mit Wechselstrom betrieben wird.

Wenn ein Treiber eine überraschende Entfernungsbenachrichtigung empfängt (das DevicePnPEvent-Element des NetDevicePnPEvent-Parameters ist NdisDevicePnPEventSurpriseRemoved), sollte folgendes vorgehen:

  • Beachten Sie intern, dass das Gerät entfernt wurde.
  • Brechen Sie alle ausstehenden IRPs ab, die an den zugrunde liegenden Bustreiber gesendet wurden.
Nachdem NDIS die MiniportDevicePnPEventNotify-Funktion aufgerufen hat, um eine überraschende Entfernung anzuzeigen, ruft NDIS die MiniportHaltEx-Funktion des Treibers auf. Wenn der Treiber Sendeanforderungen oder OID-Anforderungen empfängt, bevor NDIS MiniportHaltEx aufruft, sollte er diese Anforderungen sofort mit dem status Wert NDIS_STATUS_NOT_ACCEPTED abschließen.

NDIS ruft MiniportDevicePnPEventNotify unter IRQL = PASSIVE_LEVEL auf.

Beispiele

Um eine MiniportDevicePnPEventNotify-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Funktion identifiziert. Windows bietet eine Reihe von Funktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine MiniportDevicePnPEventNotify-Funktion mit dem Namen "MyDevicePnPEventNotify" zu definieren, verwenden Sie den typ MINIPORT_DEVICE_PNP_EVENT_NOTIFY , wie in diesem Codebeispiel gezeigt:

MINIPORT_DEVICE_PNP_EVENT_NOTIFY MyDevicePnPEventNotify;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyDevicePnPEventNotify(
    NDIS_HANDLE  MiniportAdapterContext,
    PNET_DEVICE_PNP_EVENT  NetDevicePnPEvent
    )
  {...}

Der MINIPORT_DEVICE_PNP_EVENT_NOTIFY Funktionstyp ist in der Ndis.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den MINIPORT_DEVICE_PNP_EVENT_NOTIFY Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Windows
Kopfzeile ndis.h (include Ndis.h)
IRQL PASSIVE_LEVEL
DDI-Complianceregeln NdisOidComplete

Weitere Informationen

MiniportHaltEx

MiniportInitializeEx

NET_DEVICE_PNP_EVENT

NdisMRegisterMiniportDriver

OID_PNP_SET_POWER