Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
предупреждение 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);
}
}