MINIPORT_CHECK_FOR_HANG Rückruffunktion (ndis.h)

Warnung

Von den Rückruffunktionen MiniportCheckForHangEx und MiniportResetEx wird 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 Miniporttreibers auf, um den Betriebszustand des Miniportadapters zu überprüfen, der eine Netzwerkschnittstelle Karte (NIC) darstellt.

Hinweis Ein Miniporttreiber kann diese Funktion mithilfe des typs MINIPORT_CHECK_FOR_HANG deklarieren.
 
Hinweis Ab NDIS 6.30 darf diese Funktion nicht für Treiber registriert werden, die auf SoC-Plattformen mit geringer Leistung ausgeführt werden, um negative Auswirkungen auf die Leistung aufgrund der regelmäßigen Check-for-Hang-Aktivität zu vermeiden.
 

Syntax

MINIPORT_CHECK_FOR_HANG MiniportCheckForHang;

BOOLEAN MiniportCheckForHang(
  [in] NDIS_HANDLE MiniportAdapterContext
)
{...}

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.

Rückgabewert

MiniportCheckForHangEx gibt TRUE zurück, wenn der Treiber feststellt, dass eine NIC nicht ausgeführt wird und NDIS die MiniportResetEx-Funktion des Treibers aufrufen sollte. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

Bemerkungen

Ein Miniporttreiber gibt den MiniportCheckForHangEx-Einstiegspunkt an, wenn er die NdisMRegisterMiniportDriver-Funktion .

MiniportCheckForHangEx ist für fortgeschrittene Treiber nicht erforderlich.

MiniportCheckForHangEx überprüft nur den internen Zustand der NIC und gibt TRUE zurück, wenn erkannt wird, dass die NIC nicht ordnungsgemäß funktioniert.

Standardmäßig ruft NDIS MiniportCheckForHangEx ungefähr alle zwei Sekunden auf. Aus diesem Grund sollte die MiniportCheckForHangEx-Funktion Ihres Miniporttreibers so schnell wie möglich zurückgegeben werden.

Hinweis Ab NDIS 6.30 wird ein zusammensetzbarer Timer mit hoher Toleranz zum Messen von Intervallen zwischen Aufrufen von MiniportCheckForHangEx verwendet. Daher sollte diese Routine nicht für zeitkritische Vorgänge verwendet werden.
 
Wenn MiniportCheckForHangExTRUE zurückgibt, ruft NDIS die MiniportResetEx-Funktion des Miniport-Treibers auf.

Wenn ein Miniporttreiber eine OID-Anforderung nicht innerhalb von zwei aufeinander folgenden Aufrufen von MiniportCheckForHangEx abschließt, kann NDIS die MiniportResetEx-Funktion des Treibers aufrufen. Um jedoch unnötige Zurücksetzungen zu vermeiden, kann die MiniportInitializeEx-Funktion des Treibers das Timeoutintervall für den Check-for-Hang erweitern, indem sie beim Aufrufen von einen geeigneten CheckForHangTimeInSeconds-Wert festlegt. NdisMSetMiniportAttributes-Funktion .

Weitere Informationen zum Festlegen des CheckForHangTimeInSeconds-Timeoutwerts finden Sie unter Miniport Adapter Check-for-Hang and Reset Operations.

Hinweis Ab NDIS 6.30 muss MiniportCheckForHangExTRUE zurückgeben, wenn der Miniporttreiber erkennt, dass die NIC eine ausstehende Sendeanforderung nicht abgeschlossen hat, bevor ein Timeoutzeitraum abgelaufen ist. Der Timeoutzeitraum ist treiberspezifisch, es wird jedoch empfohlen, einen Timeoutzeitraum von 2 Sekunden zu verwenden.
 
MiniportCheckForHangEx kann durch einen Interrupt vorzeitig entfernt werden.

NDIS ruft MiniportCheckForHangEx unter IRQL = PASSIVE_LEVEL auf.

Beispiele

Um eine MiniportCheckForHangEx-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden 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 MiniportCheckForHangEx-Funktion mit dem Namen "MyCheckForHangEx" zu definieren, verwenden Sie den typ MINIPORT_CHECK_FOR_HANG , wie in diesem Codebeispiel gezeigt:

MINIPORT_CHECK_FOR_HANG MyCheckForHangEx;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
BOOLEAN
 MyCheckForHangEx(
    NDIS_HANDLE  MiniportAdapterContext
    )
  {...}

Der MINIPORT_CHECK_FOR_HANG 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_CHECK_FOR_HANG 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

Weitere Informationen

Miniport Adapter Check-for-Hang und Reset-Vorgänge

MiniportInitializeEx

MiniportResetEx

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes