Deshabilitación de LAS API

El sistema proporciona tres mecanismos para deshabilitar las API del subproceso actual:

  • Regiones críticas. Cuando un subproceso está dentro de una región crítica, no se ejecutan sus API de usuario y las API de kernel normales. Las API de kernel especiales todavía se ejecutan. Para obtener más información sobre estos tipos de APC, consulte Tipos de API.

  • Regiones protegidas. Cuando un subproceso está dentro de una región protegida, no se ejecuta ninguna de sus API.

  • Elevar el IRQL actual a APC_LEVEL o superior. Un subproceso que se ejecuta en IRQL >= APC_LEVEL se ejecuta con todas las API deshabilitadas.

Tenga en cuenta que esta configuración se aplica al subproceso actual y no afecta al comportamiento de ningún otro subproceso.

Se debe llamar a algunas rutinas de compatibilidad de controladores con determinados tipos de API deshabilitadas. Por ejemplo, las rutinas que adquieren un recurso ejecutivo (como ExAcquireResourceSharedLite) deben llamarse con las API de kernel normales deshabilitadas. Se debe llamar a otras rutinas con determinados tipos de API habilitadas. Por ejemplo, cualquier rutina que se base en una rutina de finalización de E/S (como IoVolumeDeviceToDosName) debe llamarse con las API de kernel especiales habilitadas. La documentación de cada rutina especifica si la rutina tiene restricciones concretas sobre el estado de ejecución de APC.

Un controlador puede especificar explícitamente una región crítica o protegida llamando a la rutina adecuada. Para obtener más información, consulte Regiones críticas y Regiones protegidas. Un controlador también puede generar explícitamente el IRQL actual para APC_LEVEL mediante una llamada a KeRaiseIrql. Posteriormente, el controlador debe reducir el IRQL a su valor original llamando a KeLowerIrql. El uso de una región protegida es más rápido que generar y reducir el IRQL actual, pero las regiones protegidas solo están disponibles en Windows Server 2003 y versiones posteriores de Windows.

Las siguientes operaciones de exclusión mutua tienen el mismo efecto que entrar o dejar una región crítica o protegida, o elevar o reducir el IRQL actual:

  • Mantener un objeto de exclusión mutua coloca implícitamente el titular dentro de una región crítica.

  • Mantener una exclusión mutua protegida coloca implícitamente el titular dentro de una región protegida.

  • Mantener una exclusión mutua rápida aumenta implícitamente el IRQL actual para APC_LEVEL.

Para obtener más información sobre los objetos de exclusión mutua, vea Objetos de exclusión mutua. Para obtener más información sobre las exclusión mutuas rápidas y protegidas, consulte Exclusión mutua rápida y Exclusión mutua protegida.