mmUnlockPagableImageSection 函式 (wdm.h)
MmUnlockPagableImageSection 例程會釋放驅動程式程式代碼或驅動程式數據的區段,先前已鎖定為具有 MmLockPagableCodeSection、MmLockPagableDataSection 或 mmLockPagableSectionByHandle 的系統空間,以便再次分頁區段。
語法
void MmUnlockPagableImageSection(
[in] PVOID ImageSectionHandle
);
參數
[in] ImageSectionHandle
指定呼叫 MmLockPagableCodeSection 或 MmLockPagableDataSection 所傳回的句柄。
傳回值
無
備註
如果驅動程式的裝置佇列中有任何未完成的 IRP () 或內部佇列 () ,則不得釋放驅動程式可分頁區段的句柄。 呼叫 MmUnlockPagableImageSection 時,當該區段的句柄沒有其他參考時,會還原整個區段的可分頁性。
記憶體管理員會在區段的句柄上維護參考計數。 只有在參考計數為零時,才可使用可分頁的區段。 每個鎖定要求都會遞增計數;每個解除鎖定要求都會遞減計數。 驅動程式必須鎖定區段的次數,讓區段可供分頁。
不論計數為何,句柄一律有效。 如果句柄上的計數為零,而且呼叫 MmLockPagableSectionByHandle,則計數會設定為一,如果區段已分頁,則會分頁。
在大部分情況下,會在驅動程式的 Unload 例程之前呼叫 MmUnlockPagableImageSection。 也就是說,具有可分頁區段的驅動程式在呼叫 Unload 例程之前,可能會有其 DispatchClose 和/或 DispatchShutdown 例程呼叫 MmUnlockPagableImageSection。 不過,在從系統卸除驅動程式本身之前,應該小心卸除可卸除的驅動程式,以釋放任何可分頁的區段。
如需分頁程式代碼和數據的詳細資訊,請參閱 讓驅動程式可分頁。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <=APC_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIS (storport) 、 IrqlMmApcLte (wdm) |