Функция KeEnterCriticalRegion (wdm.h)
Подпрограмма KeEnterCriticalRegion временно отключает выполнение обычных ПТР ядра, но не препятствует запуску специальных БТР ядра.
Синтаксис
void KeEnterCriticalRegion();
Возвращаемое значение
None
Remarks
Драйвер вызывает эту подпрограмму, чтобы войти в критический регион, в котором выполнение обычных APC ядра откладывается до тех пор, пока этот драйвер не выйдет из критической области путем вызова подпрограммы KeLeaveCriticalRegion . Любой вызывающий объект KeEnterCriticalRegion должен вызывать KeLeaveCriticalRegion как можно быстрее после входа в критический регион.
Драйверы самого высокого уровня могут вызывать KeEnterCriticalRegion при выполнении в контексте потока, запрашивающего текущую операцию ввода-вывода.
В потоке, который находится внутри критического региона, отключены как пользовательские, так и обычные АСП ядра, но не специальные АСП ядра. Дополнительные сведения об этих типах APC см. в разделе Типы APC.
Критические регионы можно вводить рекурсивно, и каждый вызов KeEnterCriticalRegion должен иметь соответствующий вызов KeLeaveCriticalRegion.
Драйвер может использовать критически важный регион для получения и освобождения монопольного доступа к общему ресурсу. В этом случае вместо процедур KeEnterCriticalRegionAndAcquireResourceExclusive и ExReleaseResourceAndLeaveCriticalRegion можно использовать вместо процедур KeEnterCriticalRegion и KeLeaveCriticalRegion . Дополнительные сведения см. в примере кода в exEnterCriticalRegionAndAcquireResourceExclusive.
Дополнительные сведения о APC см. в разделе Асинхронные вызовы процедур.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.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