Compartir a través de


C28167

advertencia C28167: la función cambia el IRQL y no restaura irQL antes de salir. Debe anotarse para reflejar el cambio o se debe restaurar el IRQL.

Esta advertencia indica que se cumplen las siguientes condiciones:

  • La función cambia el IRQL en el que se ejecuta el controlador.

  • Hay al menos una ruta de acceso a través de una función que no, por salida de función, restaure IRQL al IRQL original que el controlador estaba ejecutando en la entrada de la función.

Esta advertencia se produce cuando se requiere una anotación IRQL en una función, pero no existe.

Para evitar esta advertencia, el controlador debe guardar correctamente el valor de IRQL inicial y restaurar el mismo valor IRQL en la salida de la función si no tenía previsto cambiar el IRQL.

Funciones que cambian intencionadamente el IRQL a un valor distinto del IRQL en el que se estaba ejecutando el controlador en la entrada de la función se deben anotar para indicar este comportamiento. Por ejemplo, podría usar la anotación _IRQL_raises_(irql) para indicar que la función cambia el IRQL desde irQL en el que se llamó a la función. También puede guardar y restaurar el valor de IRQL y aplicar las anotaciones correspondientes (_IRQL_saves_, _IRQL_restores_). La anotación suprimirá esta advertencia. Para obtener más información, consulte Anotaciones irQL para controladores. Las funciones que cambian irQL por error deben corregirse.