Função KeEnterCriticalRegion (wdm.h)

A rotina KeEnterCriticalRegion desabilita temporariamente a execução de APCs de kernel normais, mas não impede que APCs de kernel especiais sejam executadas.

Sintaxe

void KeEnterCriticalRegion();

Retornar valor

Nenhum

Comentários

Um driver chama essa rotina para entrar em uma região crítica na qual a execução de APCs de kernel normais é adiada até que esse driver saia da região crítica chamando a rotina KeLeaveCriticalRegion . Qualquer chamador de KeEnterCriticalRegion deve chamar KeLeaveCriticalRegion o mais rápido possível depois de entrar em uma região crítica.

Os drivers de nível mais alto podem chamar KeEnterCriticalRegion durante a execução no contexto do thread que solicitou a operação de E/S atual.

Um thread que está dentro de uma região crítica tem APCs de usuário e APCs de kernel normais desabilitadas, mas não APCs de kernel especiais. Para obter mais informações sobre esses tipos de APC, consulte Tipos de APCs.

Regiões críticas podem ser inseridas recursivamente e cada chamada para KeEnterCriticalRegion deve ter uma chamada correspondente para KeLeaveCriticalRegion.

Um driver pode usar uma região crítica para adquirir e liberar acesso exclusivo a um recurso compartilhado. Nesse caso, as rotinas ExEnterCriticalRegionAndAcquireResourceExclusive e ExReleaseResourceAndLeaveCriticalRegion podem ser usadas em vez das rotinas KeEnterCriticalRegion e KeLeaveCriticalRegion . Para obter mais informações, consulte o exemplo de código em ExEnterCriticalRegionAndAcquireResourceExclusive.

Para obter mais informações sobre APCs, consulte Chamadas de procedimento assíncrono.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
Regras de conformidade de DDI CriticalRegions(wdm), HwStorPortProhibitedDIs(storport), IrqlKeApcLte2(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

Confira também

ExEnterCriticalRegionAndAcquireResourceExclusive

ExReleaseResourceAndLeaveCriticalRegion

KeAreApcsDisabled

KeLeaveCriticalRegion