Функция MmUnlockPagableImageSection (wdm.h)

Подпрограмма MmUnlockPagableImageSection освобождает раздел кода драйвера или данных драйвера, ранее заблокированных в системном пространстве с помощью MmLockPagableCodeSection, MmLockPagableDataSection или MmLockPagableSectionByHandle, чтобы раздел можно было снова вывести на страницу.

Синтаксис

void MmUnlockPagableImageSection(
  [in] PVOID ImageSectionHandle
);

Параметры

[in] ImageSectionHandle

Указывает дескриптор, возвращаемый вызовом mmLockPagableCodeSection или MmLockPagableDataSection.

Возвращаемое значение

None

Remarks

Дескриптор для раздела драйвера, доступного для страницы, не должен освобождаться, если драйвер имеет какие-либо невыполненные IRP в очередях устройств или внутренних очередях. При вызове MmUnlockPagableImageSection восстанавливается возможность просмотра всего раздела при отсутствии ссылок на дескриптор для этого раздела.

Диспетчер памяти поддерживает количество ссылок на дескриптор для раздела. Раздел, доступный для страницы, доступен только в том случае, если количество ссылок равно нулю. Каждый запрос на блокировку увеличивает число; каждый запрос на разблокировку уменьшает количество. Драйвер должен разблокировать раздел столько раз, сколько он блокирует раздел, чтобы сделать раздел доступным для вывода на страницу.

Дескриптор всегда действителен, независимо от количества. Если число дескрипторов равно нулю и выполняется вызов MmLockPagableSectionByHandle, то счетчик устанавливается в единицу, а если раздел был выгружен, он будет разгружается.

В большинстве случаев mmUnlockPagableImageSection вызывается перед подпрограммой выгрузки драйвера. То есть драйвер с разделом с поддержкой страницы, скорее всего, будет иметь подпрограмму DispatchClose и (или ) DispatchShutdown вызов mmUnlockPagableImageSection перед вызовом процедуры Unload . Однако в разгрузочных драйверах следует соблюдать осторожность, чтобы освободить любой доступный для страницы раздел, прежде чем сам драйвер будет выгружен из системы.

Дополнительные сведения о коде и данных подкачки см. в статье Создание драйверов для страниц.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlMmApcLte(wdm)

См. также раздел

MmLockPagableCodeSection

MmLockPagableDataSection

MmLockPagableSectionByHandle

MmPageEntireDriver

MmResetDriverPaging