IRP_MJ_CLOSE
Каждый драйвер должен обрабатывать запросы закрытия в подпрограмме DispatchClose , за исключением драйвера, устройство которого нельзя отключить или удалить с компьютера без отключения системы. Примером такого драйвера является драйвер диска, устройство которого содержит файл системной страницы. Обратите внимание, что драйвер такого устройства также не может быть выгружен динамически.
При отправке
Получение этого запроса означает, что последний дескриптор объекта файла, связанный с объектом целевого устройства, был закрыт и освобожден. Все невыполненные запросы ввода-вывода завершены или отменены.
Входные параметры
Нет
Выходные параметры
Нет
Операция
Многие драйверы устройств и промежуточных драйверов просто задают STATUS_SUCCESS в блоке состояния ввода-вывода IRP и завершают запрос на закрытие. Однако то, что делает данный драйвер при получении запроса на закрытие, зависит от его дизайна. Как правило, драйвер должен отменить все действия, которые он выполняет при получении запроса IRP_MJ_CREATE . Драйверы устройств, объекты которых являются эксклюзивными, например последовательный драйвер, также могут сбрасывать оборудование при получении запроса на закрытие.
Запрос IRP_MJ_CLOSE не обязательно отправляется в контексте процесса, закрывающего дескриптор файлового объекта. Если драйвер должен освободить ресурсы для конкретного процесса, такие как память пользователя, которые драйвер ранее блокировал или сопоставил, он должен сделать это в ответ на запрос IRP_MJ_CLEANUP .
Запрос IRP_MJ_CLOSE всегда отправляется в PASSIVE_LEVEL.
Требования
Заголовок |
Wdm.h (включая Wdm.h, Ntddk.h или Ntifs.h) |