Функция KeEnterCriticalRegion (ntddk.h)

Подпрограмма KeEnterCriticalRegion временно отключает выполнение обычных ПТР ядра, но не препятствует запуску специальных БПП ядра.

Синтаксис

void KeEnterCriticalRegion();

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

None

Remarks

Драйвер вызывает эту подпрограмму, чтобы войти в критический регион, в котором выполнение обычных api ядра откладывается до тех пор, пока этот драйвер не выйдет из критической области, вызвав подпрограмму KeLeaveCriticalRegion . Любой вызывающий объект KeEnterCriticalRegion должен вызывать KeLeaveCriticalRegion как можно быстрее после ввода критического региона.

Драйверы самого высокого уровня могут вызывать KeEnterCriticalRegion при выполнении в контексте потока, запрашивающего текущую операцию ввода-вывода.

В потоке, который находится внутри критической области, отключены как пользовательские, так и обычные ПСП ядра, но не специальные ПСП ядра. Дополнительные сведения об этих типах APC см. в разделе Типы APC.

Критические регионы можно ввести рекурсивно, и каждый вызов KeEnterCriticalRegion должен иметь соответствующий вызов KeLeaveCriticalRegion.

Драйвер может использовать критически важный регион для получения и освобождения монопольного доступа к общему ресурсу. В этом случае вместо подпрограмм KeEnterCriticalRegionAndAcquireResourceExclusive и ExReleaseResourceAndLeaveCriticalRegion можно использовать вместо подпрограмм KeEnterCriticalRegion и KeLeaveCriticalRegion . Дополнительные сведения см. в примере кода в exEnterCriticalRegionAndAcquireResourceExclusive.

Дополнительные сведения о APC см. в разделе Асинхронные вызовы процедур.

Требования

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

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

ExEnterCriticalRegionAndAcquireResourceExclusive

ExReleaseResourceAndLeaveCriticalRegion

KeAreApcsDisabled

KeLeaveCriticalRegion