Функция 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