Miniport Adapter Check-for-Hang and Reset Operations

Übersicht

Warnung

Check-for-Hang (CFH) und Reset-Vorgänge werden für alle NDIS 6.83- und höher-Treiber abgeraten. Weitere Informationen finden Sie unter Check-for-Hang- und Reset-Vorgänge in NDIS 6.83 und höher.

NDIS ruft die MiniportCheckForHangEx-Funktion eines NDIS-Miniporttreibers auf, um den Betriebszustand eines NDIS-Adapters zu überprüfen, der eine Netzwerkschnittstelle Karte (NIC) darstellt. MiniportCheckForHangEx überprüft den internen Zustand des Adapters und gibt TRUE zurück, wenn erkannt wird, dass der Adapter nicht ordnungsgemäß funktioniert.

Standardmäßig ruft NDIS MiniportCheckForHangEx ungefähr alle 2 Sekunden auf. Wenn MiniportCheckForHangExTRUE zurückgibt, ruft NDIS die MiniportResetEx-Funktion des NDIS-Miniporttreibers auf. Wenn der Standardtimeoutwert von 2 Sekunden zu klein ist, kann Ihr Miniporttreiber zur Initialisierungszeit einen anderen Wert wie folgt festlegen:

  1. Legen Sie das CheckForHangTimeInSeconds-Element der NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES-Struktur auf einen Nonzero-Wert fest.
  2. Übergeben Sie die NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES-Struktur im MiniportAttributes-Parameter der NdisMSetMiniportAttributes-Funktion .

Weitere Informationen zum Festlegen von Treiberattributen finden Sie unter Initialisieren eines Adapters. Der Wert von CheckForHangTimeInSeconds sollte größer sein als die Initialisierungszeit Ihres Miniporttreibers. Wenn die Initialisierung ihres Treibers jedoch länger als CheckForHangTimeInSeconds Sekunden dauert, läuft dieses Timeout ab, sodass NDIS die MiniportCheckForHangEx-Funktion Ihres Treibers aufruft. Wenn MiniportCheckForHangExTRUE zurückgibt, ruft NDIS dann die MiniportResetEx-Funktion Ihres Treibers auf. Aus diesem Grund sollten Sie die MiniportCheckForHangEx-Funktion Ihres Treibers mit der Treiberinitialisierung synchronisieren, damit MiniportCheckForHangEx nicht TRUE zurückgibt, wenn der Treiber die Initialisierung nicht abgeschlossen hat.

Wenn Ihr Miniporttreiber innerhalb von zwei aufeinander folgenden Aufrufen von MiniportCheckForHangEx keine OID-Anforderung ausführt, kann NDIS die MiniportResetEx-Funktion des Treibers aufrufen. Bei einigen OID-Anforderungen ruft NDIS MiniportResetEx auf, wenn der Treiber die Anforderung nicht innerhalb von vier aufeinanderfolgenden Aufrufen von MiniportCheckForHangEx abgeschlossen hat.

Der Vorgang zum Zurücksetzen wirkt sich nicht auf den Betriebszustand des Miniportadapters aus. Außerdem kann sich der Status des Adapters ändern, während ein Zurücksetzungsvorgang ausgeführt wird. Beispielsweise kann NDIS die MiniportPause-Funktion eines Treibers aufrufen, wenn ein Zurücksetzungsvorgang ausgeführt wird. In diesem Fall kann der Treiber entweder den Reset- oder den Pausenvorgang in beliebiger Reihenfolge ausführen und dabei die normalen Anforderungen für jeden Vorgang erfüllen.

Bei einem Zurücksetzungsvorgang kann der Treiber Anforderungspakete nicht senden oder sie in die Warteschlange stellen und später abschließen. Beachten Sie jedoch, dass ein überlastender Treiber keinen Pausenvorgang abschließen kann, während seine Übertragungspakete ausstehen.

Ein Miniporttreiber kann eine Zurücksetzungsanforderung synchron abschließen, indem er einen erfolgreichen oder fehlerhaften status zurückgibt. Der Treiber kann eine Zurücksetzungsanforderung asynchron abschließen, indem er NDIS_STATUS_PENDING zurückgibt. In diesem Fall muss der Treiber NdisMResetComplete aufrufen, um den Vorgang abzuschließen.

Check-for-Hang- und Reset-Vorgänge in NDIS 6.83 und höher

In Versionen von NDIS vor 6.83 wurde von CfH-Vorgängen (Check-for-Hang) und Reset-Vorgängen für Always On, Always Connected (AOAC)-Systeme aufgrund von Problemen mit der Akkulaufzeit abgeraten. Treiber könnten jedoch weiterhin CFH auf anderen Nicht-AOAC-Windows-Systemen verwenden, indem sie die optionalen Rückruffunktionen MiniportCheckForHangEx und MiniportResetEx implementieren.

Ab NDIS 6.83 wird von diesen Rückruffunktionen auf allen Windows-Systemen unabhängig von den Leistungsfunktionen abgeraten. Obwohl es keine Logotestverletzung ist, CFH in NDIS 6.83 und höher zu verwenden, sollten NDIS-Treiber die folgende Tabelle als Leitfaden zur Verwendung verwenden.

Caller Empfehlung Notizen
Treiber für AOAC-Systeme Darf nicht implementieren Verursacht Probleme mit der Akkulaufzeit aufgrund regelmäßiger Überprüfung auf Hängen
Treiber für Windows Server-Systeme Darf nicht implementieren Verursacht Probleme, wenn die CPU belastet ist
Virtuelle Miniporttreiber (nur Software) Darf nicht implementieren Zurücksetzen ohne Hardware nicht möglich
Andere neue NDIS 6.83- und höhere Treiber Sollte nicht implementieren
Anderer vorhandener NDIS 6.82 und früherer Code Änderungen sind nicht erforderlich, sollten aber bei zukünftiger Überarbeitung das Entfernen von Check-for-Hang und Reset erwägen

Hardwarezurücksetzung des Miniporttreibers

Funktionen zum Zurücksetzen und Anhalten des Miniporttreibers