Share via


MINIPORT_UNLOAD Rückruffunktion (ndis.h)

NDIS ruft die MiniportDriverUnload-Funktion eines Miniporttreibers auf, um den Treiber aufzufordern, Ressourcen freizugeben, bevor das System einen Treiberentladungsvorgang abgeschlossen hat.

Hinweis Sie müssen die Funktion mit dem typ MINIPORT_UNLOAD deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

MINIPORT_UNLOAD MiniportUnload;

void MiniportUnload(
  [in] PDRIVER_OBJECT DriverObject
)
{...}

Parameter

[in] DriverObject

Ein Zeiger auf eine DRIVER_OBJECT Struktur, die das Treiberobjekt des Treibers ist.

Rückgabewert

Keine

Bemerkungen

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

Das Treiberobjekt, das einem NDIS-Miniporttreiber zugeordnet ist, gibt eine Unload-Routine an. Das Betriebssystem ruft die Unload-Routine auf, wenn alle Geräte, auf denen die Miniporttreiberdienste entfernt wurden, entfernt wurden. NDIS stellt die Entladeroutine für NDIS-Treiber bereit. NDIS ruft die MiniportDriverUnload-Funktion eines Miniporttreibers aus der Unload-Routine auf.

Die Funktionalität der Entladeroutine ist treiberspezifisch. In der Regel sollte MiniportDriverUnload die Vorgänge rückgängigmachen, die in der DriverEntry-Routine des Treibers ausgeführt wurden.

Ein Miniporttreiber ruft die NdisMDeregisterMiniportDriver-Funktion von MiniportDriverUnload.

Neben NdisMDeregisterMiniportDriver ruft ein Zwischentreiber auch die NdisDeregisterProtocolDriver-Funktion zum Aufheben der Registrierung der Protokollschnittstelle des Treibers. MiniportDriverUnload sollte auch alle erforderlichen Bereinigungsvorgänge ausführen, z. B. das Aufheben der Zuordnung von Protokolltreiberschnittstellenressourcen.

Wenn ein Miniporttreiber mehrere Geräte instance verwaltet, z. B. einen Lastenausgleichstreiber, ruft NDIS MiniportDriverUnload erst auf, nachdem NDIS die MiniportHaltEx-Funktion einmal für jedes Gerät aufgerufen instance.

NDIS ruft MiniportDriverUnload unter IRQL = PASSIVE_LEVEL auf.

Beispiele

Um eine MiniportDriverUnload-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 MiniportDriverUnload-Funktion mit dem Namen "MyDriverUnload" zu definieren, verwenden Sie den typ MINIPORT_UNLOAD , wie in diesem Codebeispiel gezeigt:

MINIPORT_UNLOAD MyDriverUnload;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyDriverUnload(
    PDRIVER_OBJECT  DriverObject
    )
  {...}

Der MINIPORT_UNLOAD 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_UNLOAD 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

DRIVER_OBJECT

MiniportHaltEx

NdisDeregisterProtocolDriver

NdisMDeregisterMiniportDriver

NdisMRegisterMiniportDriver

Entladen