Regla CriticalRegions (wdm)

La regla CriticalRegions especifica que el controlador debe llamar a KeEnterCriticalRegion antes de llamar a KeLeaveCriticalRegion y que el controlador llama a KeLeaveCriticalRegion antes de cualquier llamada posterior a KeEnterCriticalRegion. (Se permiten llamadas anidadas).

Esta regla también especifica que el controlador llama a KeLeaveCriticalRegion para volver a habilitar la entrega de llamadas a procedimientos asincrónicos (APC) normales del kernel antes de que se devuelva.

La documentación de WDK de KeEnterCriticalRegion y KeLeaveCriticalRegion explica que el autor de la llamada de estas funciones se puede ejecutar en IRQL<=APC_LEVEL. En esta situación, esta regla aplica una recomendación de procedimiento recomendado.

Modelo de controlador: WDM

Comprobaciones de errores encontradas con esta regla: Comprobación de errores 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040003)

Cómo probar

En tiempo de compilación

Ejecute el Comprobador de controladores estáticos y especifique la regla CriticalRegions .

Usa los pasos siguientes para ejecutar un análisis de tu código:
  1. Prepara el código (usa declaraciones de tipos de rol).
  2. Ejecuta el comprobador de controlador estático.
  3. Consulta y analiza los resultados.

Para obtener más información, vea Usar comprobador de controladores estáticos para buscar defectos en controladores.

En tiempo de ejecución

Ejecute comprobador de controladores y seleccione la opción comprobación de cumplimiento de DDI (adicional).

Se aplica a

ExEnterCriticalRegionAndAcquireResourceExclusiveExReleaseResourceAndLeaveCriticalRegionKeEnterCriticalRegionKeLeaveCriticalRegion