Функция KeEnterCriticalRegion (ntddk.h)
Программа KeEnterCriticalRegion временно отключает выполнение обычных API ядра, но не предотвращает выполнение специальных API ядра.
Синтаксис
void KeEnterCriticalRegion();
Возвращаемое значение
Никакой
Замечания
Драйвер вызывает эту подпрограмму, чтобы ввести критически важный регион, в котором выполнение обычных API ядра откладывается до тех пор, пока этот драйвер не выйдет из критической области, вызвав подпрограмму KeLeaveCriticalRegion. Любой вызывающий объект KeEnterCriticalRegion должен вызывать KeLeaveCriticalRegion как можно быстрее после ввода критического региона.
Драйверы высокого уровня могут вызывать KeEnterCriticalRegion во время выполнения в контексте потока, запрашивающего текущую операцию ввода-вывода.
Поток, который находится в критическом регионе, имеет как пользовательские API, так и обычные API ядра отключены, но не специальные API ядра. Дополнительные сведения об этих типах APC см. в типах API.
Критически важные регионы можно вводить рекурсивно, и каждый вызов KeEnterCriticalRegion должен иметь соответствующий вызов KeLeaveCriticalRegion.
Драйвер может использовать критически важный регион для получения и освобождения эксклюзивного доступа к общему ресурсу. В этом случае подпрограммы ExEnterCriticalRegionAndAcquireResourceExclusive и ExReleaseResourceAndLeaveCriticalRegion можно использовать вместо подпрограмм KeEnterCriticalRegion и KeLeaveCriticalRegion. Дополнительные сведения см. в примере кода в ExEnterCriticalRegionAndAcquireResourceExclusive.
Дополнительные сведения об API см. в вызовы асинхронных процедур.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 2000. |
целевая платформа | Всеобщий |
заголовка | ntddk.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
правил соответствия DDI | CriticalRegions(wdm), HwStorPortProhibitedDDIs(storport), IrqlKeApcLte2(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm) |
См. также
ExEnterCriticalRegionAndAcquireResourceExclusive