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) |