IRP_MJ_CLOSE

每个驱动程序都必须处理 DispatchClose 例程中的关闭请求,但驱动程序的可能例外是,其设备无法在不关闭系统的情况下从计算机中禁用或删除。 磁盘驱动程序,其设备保存系统页文件是此类驱动程序的一个示例。 请注意,此类设备的驱动程序也不能动态卸载。

发送时间

收到此请求表示已关闭并释放与目标设备对象关联的文件对象的最后一个句柄。 所有未完成的 I/O 请求都已完成或取消。

输入参数

输出参数

Operation

许多设备和中间驱动程序只是在 IRP 的 I/O 状态块中设置STATUS_SUCCESS并完成关闭请求。 但是,给定驱动程序在收到关闭请求时执行的操作取决于驱动程序的设计。 通常,驱动程序应撤消在收到 IRP_MJ_CREATE 请求时采取的任何操作。 设备对象是独占的设备驱动程序(例如串行驱动程序)也可以在收到关闭请求时重置硬件。

IRP_MJ_CLOSE请求不一定在关闭文件对象句柄的进程上下文中发送。 如果驱动程序必须释放驱动程序以前锁定或映射的特定于进程的资源(例如用户内存),则必须在响应 IRP_MJ_CLEANUP 请求时执行此操作。

IRP_MJ_CLOSE请求始终在PASSIVE_LEVEL发送。

要求

标头

Wdm.h(包括 Wdm.h、Ntddk.h 或 Ntifs.h)

另请参阅

DispatchClose

IRP_MJ_CLEANUP

IRP_MJ_CREATE