mmUnlockPagableImageSection 函数 (wdm.h)
MmUnlockPagableImageSection 例程会发布一部分驱动程序代码或驱动程序数据,这些数据以前使用 MmLockPagableCodeSection、MmLockPagableDataSection 或 MmLockPagableSectionByHandle 锁定在系统空间中,因此该部分可以再次分页。
语法
void MmUnlockPagableImageSection(
[in] PVOID ImageSectionHandle
);
参数
[in] ImageSectionHandle
指定调用 MmLockPagableCodeSection 或 MmLockPagableDataSection 返回的句柄。
返回值
无
备注
如果驱动程序的设备队列 () 或内部队列 () ,则不得释放驱动程序可分页部分的句柄。 调用 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) |