DRIVER_UNLOAD Rückruffunktion (wdm.h)
Die Deload-Routine führt alle Vorgänge aus, die erforderlich sind, bevor das System den Treiber entladen.
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
Keine
Bemerkungen
Die Entladeroutine eines Treibers wird in einem Systemthreadkontext unter IRQL = PASSIVE_LEVEL ausgeführt.
Die Entladen-Routine ist für WDM-Treiber erforderlich und optional für Nicht-WDM-Treiber. Die Entladeroutine eines Treibers sollte, sofern angegeben, XxxUnload heißen, wobei Xxx ein treiberspezifisches Präfix ist. Die DriverEntry-Routine des Treibers muss die Adresse der Unload-Routine in DriverObject-DriverUnload> speichern. (Wenn keine Routine angegeben wird, muss dieser Zeiger NULL sein.)
Ausführliche Informationen zum Implementieren der Entladeroutine eines Treibers finden Sie unter Schreiben einer Entladeroutine.
Beispiele
Um eine Unload-Rückrufroutine zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückrufroutine identifiziert. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen 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 Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.
Um beispielsweise eine Unload-Rückrufroutine mit dem Namen MyUnload
zu definieren, verwenden Sie den typ DRIVER_UNLOAD, 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 ist in der Headerdatei Wdm.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie die _Use_decl_annotations_
Anmerkung ihrer Funktionsdefinition hinzu. Die _Use_decl_annotations_
Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den DRIVER_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 WDM-Treiber. Informationen zu _Use_decl_annotations_
finden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | Wird bei PASSIVE_LEVEL aufgerufen. |