Поделиться через


IRP_MJ_CLEANUP

Драйверы, поддерживающие сведения о контексте, относящиеся к процессу, должны обрабатывать запросы на очистку в подпрограммах DispatchCleanup .

При отправке

Получение этого запроса указывает, что последний дескриптор для объекта файла, связанного с объектом целевого устройства, был закрыт (но из-за невыполненных запросов ввода-вывода, возможно, не был освобожден).

Входные параметры

Нет

Выходные параметры

Нет

Операция

Этот IRP отправляется в контексте процесса, закрывающего дескриптор объекта файла. Поэтому драйвер должен освободить ресурсы, относящиеся к процессу, такие как память пользователя, которые драйвер ранее заблокировал или сопоставил.

Если объекты устройства драйвера были настроены как монопольные, так что только один поток может использовать устройство одновременно, драйвер должен завершить все IRP, которые в настоящее время поставлены в очередь в целевой объект устройства, и задать STATUS_CANCELLED в каждом блоке состояния ввода-вывода IRP.

В противном случае драйвер должен отменить и завершить только текущие очереди IRP, связанные с освобождающимся дескриптором объекта файла. (Указатель на объект file находится в элементе FileObjectIO_STACK_LOCATION драйвера IRP.) После отмены этих очередей IRP драйвер завершает очистку IRP и задает STATUS_SUCCESS в блоке состояния ввода-вывода.

Дополнительные сведения об обработке этого запроса см. в разделе Подпрограммы DispatchCleanup.

Требования

Заголовок

Wdm.h (включая Wdm.h, Ntddk.h или Ntifs.h)

См. также раздел

DispatchCleanup

IO_STACK_LOCATION

IRP_MJ_CLOSE