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:
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