C28167

警告 C28167:该函数更改 IRQL,并且不会在 IRQL 退出之前还原 IRQL。 应添加注释以反映更改或应还原 IRQL。

此警告指示以下条件为 true:

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

  • 至少有一个路径通过函数退出,不通过函数退出将 IRQL 还原到驱动程序在函数条目中运行的原始 IRQL。

当需要函数上的 IRQL 注释但不存在时,将发生此警告。

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

有意将 IRQL 更改为不同于在函数条目中运行驱动程序的 IRQL 的值的函数应批注以指示此行为。 例如,可以使用 _IRQL_raises_irql) 注释来指示函数从调用函数的 IRQL 更改 IRQL。 还可以保存和还原 IRQL 值并应用相应的批注(_IRQL_saves__IRQL_restores_)。 批注将禁止显示此警告。 有关详细信息,请参阅驱动程序 IRQL 注释。 应修复错误地更改 IRQL 的函数。