警告 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 的函式。