mmUnlockPagableImageSection 函数 (wdm.h)

MmUnlockPagableImageSection 例程会发布一部分驱动程序代码或驱动程序数据,这些数据以前使用 MmLockPagableCodeSection、MmLockPagableDataSectionMmLockPagableSectionByHandle 锁定在系统空间中,因此该部分可以再次分页。

语法

void MmUnlockPagableImageSection(
  [in] PVOID ImageSectionHandle
);

参数

[in] ImageSectionHandle

指定调用 MmLockPagableCodeSectionMmLockPagableDataSection 返回的句柄

返回值

备注

如果驱动程序的设备队列 () 或内部队列 () ,则不得释放驱动程序可分页部分的句柄。 调用 MmUnlockPagableImageSection 可还原整个节的可寻页性,如果不再引用该节的句柄。

内存管理器维护节的句柄上的引用计数。 仅当引用计数为零时,可分页节才可用于分页。 每个锁请求递增计数;每个解锁请求都会递减计数。 驱动程序必须像锁定分区一样多次解锁分区,才能使分区可供分页。

句柄始终有效,无论计数如何。 如果句柄上的计数为零,并且调用 了 MmLockPagableSectionByHandle,则计数设置为 1,如果分区已分页,则会将其分页。

在大多数情况下,在驱动程序的 Unload 例程之前调用 MmUnlockPagableImageSection。 也就是说,具有可分页节的驱动程序在调用其 Unload 例程之前,可能会有其 DispatchClose 和/或 DispatchShutdown 例程调用 MmUnlockPagableImageSection。 但是,在从系统卸载驱动程序本身之前,应注意在可卸载的驱动程序中释放任何可分页部分。

有关分页代码和数据的详细信息,请参阅 使驱动程序可分页

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) IrqlMmApcLte (wdm)

另请参阅

MmLockPagableCodeSection

MmLockPagableDataSection

MmLockPagableSectionByHandle

MmPageEntireDriver

MmResetDriverPaging