C28167

警告 C28167:函数更改 IRQL,在退出前不会还原 IRQL。 应对其进行批注以反映更改,否则应还原 IRQL。

此警告指示满足以下条件:

  • 函数更改运行驱动程序的 IRQL。

  • 至少有一个通过函数的路径,该路径不会通过函数退出将 IRQL 还原到驱动程序在函数入口处运行的原始 IRQL。

需要函数上的 IRQL 批注,但不存在时,会出现此警告。

若要避免此警告,驱动程序必须正确保存初始 IRQL 值,并在函数退出时还原相同的 IRQL 值(如果它不打算更改 IRQL)。

有意将 IRQL 更改为与驱动程序在函数入口处运行的 IRQL 不同的值的函数应进行批注以指示此行为。 例如,可以使用 _IRQL_raises_ (irql) 注释来指示函数从调用函数的 IRQL 更改 IRQL。 还可以保存和还原 IRQL 值,并 (_IRQL_saves_应用相应的注释, _IRQL_restores_) 。 批注将禁止显示此警告。 有关详细信息,请参阅 驱动程序的 IRQL 注释。 错误地更改 IRQL 的函数应得到修复。