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