MINIPORT_IDLE_NOTIFICATION Rückruffunktion (ndis.h)
NDIS ruft die MiniportIdleNotification-Handlerfunktion auf, um den NDIS-Vorgang zum selektiven Anhalten für einen Netzwerkadapter im Leerlauf zu starten. Durch diesen Vorgang wird der Netzwerkadapter angehalten und in einen Energiesparzustand überstellt.
Syntax
MINIPORT_IDLE_NOTIFICATION MiniportIdleNotification;
NDIS_STATUS MiniportIdleNotification(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] BOOLEAN ForceIdle
)
{...}
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 Netzwerkadapter zu verwalten.
[in] ForceIdle
Ein BOOLEAN-Wert , der bei Festlegung auf TRUE angibt, dass der Miniporttreiber kein Veto gegen die Leerlaufbenachrichtigung einzulegen und mit dem Übergang zum Zustand mit geringer Leistung fortfahren muss.
Weitere Informationen zum ForceIdle-Parameter finden Sie im Abschnitt Hinweise.
Rückgabewert
MiniportIdleNotification gibt einen der folgenden status Werte zurück:
Rückgabecode | Beschreibung |
---|---|
NDIS_STATUS_PENDING | Der Miniporttreiber hat die Leerlaufbenachrichtigung erfolgreich verarbeitet. Die Benachrichtigung befindet sich in einem ausstehenden Zustand, bis der Miniporttreiber NdisMIdleNotificationComplete aufruft. Hinweis: Der Miniporttreiber darf NDIS_STATUS_SUCCESS von MiniportIdleNotification nicht zurückgeben. |
NDIS_STATUS_BUSY | Der Miniporttreiber hat gegen die Benachrichtigung im Leerlauf ein Veto eingeschoben, da der Netzwerkadapter weiterhin verwendet wird. Hinweis:MiniportIdleNotification darf diesen status Code nicht zurückgeben, wenn der ForceIdle-Parameter auf TRUE festgelegt ist. |
NDIS_STATUS_FAILURE | Der Miniporttreiber konnte keine busspezifische IRP erfolgreich ausstellen. |
Hinweise
Die MiniportIdleNotification-Handlerfunktion ist für Miniporttreiber erforderlich, die die selektive NDIS-Ansetzungsschnittstelle unterstützen. Weitere Informationen dazu, wie der Treiber seine funktionen für selektives Anhalten registriert, finden Sie unter Registrieren von NDIS-Funktionen für selektives Anhalten von Handlern.
NDIS legt den ForceIdle-Parameter auf FALSE fest, wenn der Netzwerkadapter länger als das Leerlauftimeout inaktiv war. Daher hält NDIS selektiv nur den Netzwerkadapter an .
Die Dauer des Leerlauftimeoutzeitraums wird durch den Wert des *SSIdleTimeout-INF-Schlüsselwort (keyword) angegeben. Weitere Informationen zu diesem Schlüsselwort (keyword) finden Sie unter Standardisierte INF-Schlüsselwörter für selektives Anhalten von NDIS.
Hinweis
NDIS legt den ForceIdle-Parameter nur dann auf TRUE fest, wenn ein System, das mit der AOAC-Technologie (Always On Always Connected) kompatibel ist, in den Zustand Connected Standby übergeht.
Wenn der Miniporttreiber feststellt, dass der Netzwerkadapter verwendet wird, kann er ein Veto gegen die Anforderung für Benachrichtigungen im Leerlauf ausführen, indem er NDIS_STATUS_BUSY zurückgibt. Dies führt dazu, dass NDIS den Aktivitätsmonitor auf dem Netzwerkadapter neu startet.
Wenn der Adapter innerhalb des Leerlauftimeouts wieder inaktiv wird, ruft NDIS MiniportIdleNotification auf.
Hinweis
Der Miniporttreiber darf nicht NDIS_STATUS_BUSY zurückgeben, wenn der ForceIdle-Parameter auf TRUE festgelegt ist.
Nachdem die Benachrichtigung im Leerlauf ausgegeben wurde, kann sie wie folgt abgebrochen und abgeschlossen werden:
NDIS kann die ausstehende Leerlaufbenachrichtigung abbrechen, wenn die folgenden Bedingungen zutreffen:
- Ein überlastendes Protokoll oder Filtertreiber stellt entweder eine Sendepaketanforderung oder eine OID-Anforderung an den Miniporttreiber aus.
- Der zugrunde liegende Adapter signalisiert ein Aktivierungsereignis, z. B. das Empfangen eines Pakets, das einem WOL-Muster (Wake-on-LAN) entspricht, oder erkennt eine Änderung der Medienverbindung status.
NDIS bricht die Leerlaufbenachrichtigung ab, indem MiniportCancelIdleNotification aufgerufen wird. Wenn diese Handlerfunktion aufgerufen wird, bricht der Miniporttreiber alle busspezifischen IRPs ab, die er möglicherweise zuvor für die Leerlaufbenachrichtigung ausgegeben hat. Schließlich ruft der Miniporttreiber NdisMIdleNotificationComplete auf, um die Leerlaufbenachrichtigung abzuschließen.
Nachdem sich der Netzwerkadapter in einem Energiesparzustand befindet, kann der Miniporttreiber die Benachrichtigung im Leerlauf selbst abschließen, um den Adapter in einen Vollstromzustand zu versetzen. Die Gründe hierfür sind spezifisch für das Design und die Anforderungen des Treibers und Adapters.
Der Miniporttreiber schließt die Benachrichtigung im Leerlauf ab, indem er NdisMIdleNotificationComplete aufruft. Weitere Informationen dazu, wie der Miniporttreiber die Benachrichtigung im Leerlauf abschließt, finden Sie unter Abschließen der NDIS-Benachrichtigung zum selektiven Anhalten des Leerlaufs.
Weitere Informationen zum Behandeln von Benachrichtigungen im Leerlauf für das selektive Anhalten von NDIS finden Sie unter Behandeln der NDIS-Benachrichtigung zum selektiven Anhalten des Leerlaufs.
Richtlinien zum Implementieren der MiniportIdleNotification-Handlerfunktion finden Sie unter Implementieren einer MiniportIdleNotification-Handlerfunktion.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 6.30 und höher. |
Zielplattform | Windows |
Kopfzeile | ndis.h (einschließlich Ndis.h) |
IRQL | PASSIVE_LEVEL |