C28111
警告 C28111:儲存浮點狀態的 IRQL 不符合此還原作業的目前 IRQL () 。
其他資訊 |
浮動儲存/還原函式需要 IRQL 在儲存和對應的還原時相同。 |
當驅動程式還原浮點狀態時所執行的 IRQL,與儲存浮點狀態時所執行的 IRQL 不同。
由於執行驅動程式的 IRQL 會決定浮點狀態的儲存方式,因此當驅動程式呼叫函式以儲存和還原浮點狀態時,必須在相同的 IRQL 上執行。
範例
下列程式代碼範例會引發這個警告。
void driver_utility()
{
// running at APC level
KFLOATING_SAVE FloatBuf;
if (KeSaveFloatingPointState(&FloatBuf))
{
KeLowerIrql(PASSIVE_LEVEL);
...
KeRestoreFloatingPointState(&FloatBuf);
}
}
下列程式代碼範例會避免這個警告。
void driver_utility()
{
// running at APC level
KFLOATING_SAVE FloatBuf;
if (KeSaveFloatingPointState(&FloatBuf))
{
KeLowerIrql(PASSIVE_LEVEL);
...
KeRaiseIrql(APC_LEVEL, &old);
KeRestoreFloatingPointState(&FloatBuf);
}
}
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應