C28167
警告 C28167:函式會變更 IRQL,且不會在 IRQL 結束之前還原 IRQL。 應該加上批注以反映變更,或應該還原 IRQL。
此警告表示下列條件成立:
函式會變更驅動程序執行所在的 IRQL。
至少有一個路徑可透過函式結束,將 IRQL 還原至驅動程式在函式專案上執行的原始 IRQL。
需要函式上的 IRQL 註釋但不存在時,就會發生這個警告。
若要避免這個警告,如果驅動程式不想要變更 IRQL,則驅動程式必須正確儲存初始 IRQL 值,並在函式結束時還原相同的 IRQL 值。
刻意將 IRQL 變更為與驅動程式在函式項目上執行之 IRQL 不同的值,應該加上批注,以指出此行為。 例如,您可以使用 _IRQL_raises_ (irql) 註釋,指出函式會從呼叫函式的 IRQL 變更 IRQL。 您也可以儲存和還原 IRQL 值,並套用對應的批注 (_IRQL_saves_, _IRQL_restores_) 。 批註將會隱藏這個警告。 如需詳細資訊,請參閱 驅動程式的 IRQL 批注。 應該修正不小心變更 IRQL 的函式。