DRIVER_UNLOAD Rückruffunktion (wdm.h)
Die Unload Routine führt alle Vorgänge aus, die erforderlich sind, bevor der Treiber vom System entladen wird.
Syntax
DRIVER_UNLOAD DriverUnload;
void DriverUnload(
[in] _DRIVER_OBJECT *DriverObject
)
{...}
Parameter
[in] DriverObject
Vom Aufrufer bereitgestellter Zeiger auf eine DRIVER_OBJECT-Struktur. Dies ist das Treiberobjekt des Treibers.
Rückgabewert
Nichts
Bemerkungen
Die Unload Routine eines Treibers wird in einem Systemthreadkontext bei IRQL = PASSIVE_LEVEL ausgeführt.
Die Unload Routine ist für WDM-Treiber und optional für Nicht-WDM-Treiber erforderlich. Wenn angegeben, sollte die Unload-Routine eines Treibers XxxUnload-benannt werden, wobei Xxx- ein treiberspezifisches Präfix ist. Die DriverEntry-Routine des Treibers muss die Entladen Routineadresse in DriverObject->DriverUnload-speichern. (Wenn keine Routine angegeben wird, muss dieser Zeiger NULL-sein.)
Ausführliche Informationen zum Implementieren der Unload Routine eines Treibers finden Sie unter Schreiben einer Unload Routine.
Beispiele
Um eine Unload Rückrufroutine zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der rückrufroutine identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.
Um beispielsweise eine Unload Rückrufroutine zu definieren, die MyUnload
benannt ist, verwenden Sie den DRIVER_UNLOAD Typ, wie in diesem Codebeispiel gezeigt:
DRIVER_UNLOAD MyUnload;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
VOID
MyUnload(
struct _DRIVER_OBJECT *DriverObject
)
{
// Function body
}
Der DRIVER_UNLOAD Funktionstyp wird in der Wdm.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die _Use_decl_annotations_
Anmerkung hinzufügen. Die _Use_decl_annotations_
Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp DRIVER_UNLOAD in der Headerdatei angewendet werden, verwendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für WDM-Treiber. Informationen zu _Use_decl_annotations_
finden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL- | Wird bei PASSIVE_LEVEL aufgerufen. |