Freigeben über


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 MyUnloadbenannt 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.