Freigeben über


OID_PNP_SET_POWER

Die OID_PNP_SET_POWER OID benachrichtigt einen Miniporttreiber, dass der zugrunde liegende Netzwerkadapter in den im InformationBuffer angegebenen Gerätestromzustand übergeht. Der Geräteleistungszustand wird als einer der folgenden NDIS_DEVICE_POWER_STATE Werte angegeben:

  • NdisDeviceStateD0
  • NdisDeviceStateD1
  • NdisDeviceStateD2
  • NdisDeviceStateD3

Einer OID_PNP_SET_POWER Anforderung kann eine OID_PNP_QUERY_POWER Anforderung vorangestellt werden.

Ab NDIS 6.30 wird NDIS die NDIS-Treiber im Treiberstapel während der Energiezustandsübergänge nicht angehalten und neu gestartet, wenn die folgenden Bedingungen zutreffen:

  • Der zugrunde liegende Miniporttreiber legt das NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND-Flag in der NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES-Struktur fest. Der Treiber übergibt in seinem Aufruf der Funktion NdisMSetMiniportAttributes einen Zeiger auf diese Struktur.

  • Alle überlastenden Filtertreiber, die an den Miniporttreiber angefügt sind, unterstützen NDIS 6.30 oder höhere Versionen von NDIS.

  • Alle überlastenden Protokolltreiber, die an den Miniporttreiber gebunden sind, unterstützen NDIS 6.30 oder höhere Versionen von NDIS.

Übergang zu einem Low-Power Zustand (D1-D3)

Wenn der Miniporttreiber eine festgelegte Anforderung von OID_PNP_SET_POWER verarbeitet, um in einen Energiesparzustand zu wechseln, muss er die folgenden Schritte ausführen:

Der Miniporttreiber, der NDIS 6.30 und höhere Versionen von NDIS unterstützt, muss auch folgendes tun:

  • Warten Sie nicht auf den Abschluss ausstehender Empfangsanzeigen durch Aufrufe der MiniportReturnNetBufferLists-Funktion . Außerdem darf der Miniporttreiber die NET_BUFFER_LIST Struktur oder Daten für Pakete, die auf den Abschluss warten, nicht ändern.

  • Behandeln Sie die OID_PNP_SET_POWER Anforderung in einen Energiesparzustand aus dem Adapterstatus Angehalten oder Ausgeführt. Weitere Informationen zu diesen Zuständen finden Sie unter Miniport-Adapterzustände und -vorgänge.

Bevor der Netzwerkadapter in den D3-Zustand wechselt, muss der Miniporttreiber alles deaktivieren, was unter der Kontrolle des Miniporttreibers liegt, indem er die folgenden Aufgaben ausführt:

  • Deaktivieren Sie Interrupts und die DMA-Engine auf dem Netzwerkadapter.

  • Beenden Sie die Empfangs-Engine auf dem Netzwerkadapter.

  • Behandeln Oder ändern Sie keine Empfangsdeskriptoren und Paketpuffer, die ausstehenden Empfangsanzeigen zugeordnet sind.

  • Brechen Sie alle NDIS-Timer ab.

Hinweis Ein Miniporttreiber kann nicht auf den Netzwerkadapter zugreifen, nachdem der Bustreiber den Netzwerkadapter in den D3-Zustand übergestellt hat.

Übergang zum Full-Power Zustand (D0)

Wenn der Miniporttreiber eine festgelegte Anforderung von OID_PNP_SET_POWER verarbeitet, um in einen Zustand mit voller Leistung zu wechseln, muss er die Empfangs-Engine des Netzwerkadapters in den zustand wiederherstellen, in dem sich die Empfangs-Engine befand, bevor der Adapter in den Zustand mit niedriger Leistung übergeht.

Hinweis Der Miniporttreiber darf nicht auf Empfangspuffer zugreifen oder ändern, die ausstehenden Empfangsanzeigen zugeordnet sind.

NDIS ruft die MiniportRestart-Funktion des Miniporttreibers nach dem Übergang in einen Vollleistungszustand nur auf, wenn NDIS die MiniportPause-Funktion des Treibers vor dem Übergang zu einem Energiesparzustand aufgerufen hat.

Hinweis Ein Zwischentreiber muss immer NDIS_STATUS_SUCCESS zu einer Abfrage mit OID_PNP_SET_POWER zurückgeben. Ein Zwischentreiber sollte niemals eine OID_PNP_SET_POWER Anforderung an einen zugrunde liegenden Miniporttreiber weitergeben.

Zurückgeben status Codes

Die MiniportOidRequest-Funktion des Miniporttreibers gibt einen der folgenden Werte für diese Anforderung zurück:

Begriff BESCHREIBUNG

NDIS_STATUS_SUCCESS

Der Miniporttreiber hat die Anforderung erfolgreich abgeschlossen.

NDIS_STATUS_PENDING

Der Miniporttreiber führt die Anforderung asynchron aus. Nachdem der Miniporttreiber die gesamte Verarbeitung abgeschlossen hat, muss er die Anforderung erfolgreich ausführen, indem er die NdisMOidRequestComplete-Funktion aufruft und NDIS_STATUS_SUCCESS für den Status-Parameter übergibt.

NDIS_STATUS_NOT_ACCEPTED

Der Miniporttreiber wird zurückgesetzt.

Requirements (Anforderungen)

Version

Unterstützt für NDIS 5.1 und NDIS 6.0 und höher.

Header

Ntddndis.h (include Ndis.h)

Weitere Informationen


MiniportInitializeEx

MiniportPause

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST