Comparteix via


C28167

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

Esta advertencia indica que se cumplen las condiciones siguientes:

  • 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 una.

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 intención de cambiar irQL.

Las funciones que cambian intencionadamente irQL a un valor distinto del IRQL en el que el controlador se estaba ejecutando en la entrada de la función deben anotarse 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 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.