Freigeben über


IRP_MJ_CLEANUP

Treiber, die prozessspezifische Kontextinformationen verwalten, müssen Bereinigungsanforderungen in DispatchCleanup-Routinen verarbeiten.

Sendebedingungen

Der Empfang dieser Anforderung gibt an, dass das letzte Handle für ein Dateiobjekt, das dem Zielgerätobjekt zugeordnet ist, geschlossen wurde (aber aufgrund ausstehender E/A-Anforderungen möglicherweise nicht freigegeben wurde).

Eingabeparameter

Keine

Ausgabeparameter

Keine

Vorgang

Diese IRP wird im Kontext des Prozesses gesendet, der das Dateiobjekthandle geschlossen hat. Daher sollte der Treiber prozessspezifische Ressourcen freigeben, z. B. Benutzerspeicher, die der Treiber zuvor gesperrt oder zugeordnet hat.

Wenn die Geräteobjekte des Treibers als exklusiv eingerichtet wurden, sodass nur ein einzelner Thread das Gerät gleichzeitig verwenden kann, muss der Treiber alle IRP abschließen, die sich derzeit für das Zielgerätobjekt in der Warteschlange befinden, und STATUS_CANCELLED in jedem I/O-status-Block festlegen.

Andernfalls muss der Treiber nur die derzeit in die Warteschlange gestellten IRPs abbrechen und abschließen, die dem Dateiobjekthandle zugeordnet sind, das freigegeben wird. (Ein Zeiger auf das Dateiobjekt befindet sich im FileObject-Member der IO_STACK_LOCATION des Treibers des IRP.) Nach dem Abbrechen dieser IRPs in der Warteschlange schließt der Treiber die Bereinigungs-IRP ab und legt STATUS_SUCCESS in seinem E/A-status-Block fest.

Weitere Informationen zur Behandlung dieser Anforderung finden Sie unter DispatchCleanup Routines.

Anforderungen

Header

Wdm.h (einschließlich Wdm.h, Ntddk.h oder Ntifs.h)

Weitere Informationen

DispatchCleanup

IO_STACK_LOCATION

IRP_MJ_CLOSE