Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
aviso C28111: O IRQL onde o estado de ponto flutuante foi salvo não corresponde ao IRQL atual (para esta operação de restauração).
Informações adicionais |
As funções flutuantes Save/Restore exigem que o IRQL seja o mesmo no momento do salvamento e da restauração correspondente. |
O IRQL no qual o driver está executando quando restaura um estado de ponto flutuante é diferente do IRQL no qual estava sendo executado quando salvou o estado de ponto flutuante.
Como o IRQL no qual o driver é executado determina como o estado de ponto flutuante é salvo, o driver deve estar executando no mesmo IRQL quando chama as funções para salvar e restaurar o estado de ponto flutuante.
Exemplo
O exemplo de código a seguir provoca esse aviso.
void driver_utility()
{
// running at APC level
KFLOATING_SAVE FloatBuf;
if (KeSaveFloatingPointState(&FloatBuf))
{
KeLowerIrql(PASSIVE_LEVEL);
...
KeRestoreFloatingPointState(&FloatBuf);
}
}
O exemplo de código a seguir evita esse aviso.
void driver_utility()
{
// running at APC level
KFLOATING_SAVE FloatBuf;
if (KeSaveFloatingPointState(&FloatBuf))
{
KeLowerIrql(PASSIVE_LEVEL);
...
KeRaiseIrql(APC_LEVEL, &old);
KeRestoreFloatingPointState(&FloatBuf);
}
}