Функция ExEnterCriticalRegionAndAcquireResourceExclusive (wdm.h)
Подпрограмма ExEnterCriticalRegionAndAcquireResourceExclusive сначала входит в критически важный регион, а затем получает монопольный доступ к указанному ресурсу.
Синтаксис
PVOID ExEnterCriticalRegionAndAcquireResourceExclusive(
PERESOURCE Resource
);
Параметры
Resource
[вход, выход] Указатель на ресурс, который требуется получить для монопольного доступа. Этот параметр указывает на структуру ERESOURCE , выделенную вызывающим объектом. Вызывающий объект ранее выделил эту структуру из непагированного пула и инициализировал ее, вызвав подпрограмму ExInitializeResourceLite или ExReinitializeResourceLite .
Возвращаемое значение
Указатель на непрозрачную системную структуру. Драйверы должны игнорировать это возвращаемое значение.
Комментарии
Если эта подпрограмма вызывается, когда указанный ресурс не сразу доступен для монопольного доступа, вызывающий поток блокируется до тех пор, пока ресурс не будет доступен.
Хотя поток драйвера выполняется в критическом регионе, пользовательские APC драйвера и обычные ПТР ядра не выполняются. Специальные APC ядра по-прежнему выполняются. Дополнительные сведения об этих типах APC см. в разделе Типы APC.
Временно отключив обычные APC ядра, ExEnterCriticalRegionAndAcquireResourceExclusive предотвращает вытесняние вызывающего потока пассивного уровня с помощью APC, в то время как поток содержит общий ресурс, к которому APC может попытаться получить доступ.
Вызывающий поток должен оставаться в критическом регионе и хранить указанный ресурс не дольше, чем это необходимо. Чтобы освободить указанный ресурс и покинуть критический регион, вызовите подпрограмму ExReleaseResourceAndLeaveCriticalRegion .
Дополнительные сведения об использовании структуры ERESOURCE для синхронизации монопольного доступа к ресурсу см. в статье Введение в подпрограммы ERESOURCE. Дополнительные сведения о входе и выходе из критического региона см. в разделе Критические регионы и Защищенные регионы.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2003 с пакетом обновления 1 (SP1) |
Верхняя часть | wdm.h |
IRQL | <= APC_LEVEL |
Правила соответствия DDI | CriticalRegions(wdm), HwStorPortProhibitedDIs(storport) |
См. также раздел
ExAcquireResourceExclusiveLite