C28111
avertissement C28111 : L’IRQL où l’état à virgule flottante a été enregistré ne correspond pas à l’IRQL actuel (pour cette opération de restauration).
Informations supplémentaires |
Les fonctions d’enregistrement/restauration flottantes nécessitent que l’IRQL soit identique au moment de l’enregistrement et de la restauration correspondante. |
L’IRQL auquel le pilote s’exécute lorsqu’il restaure un état à virgule flottante est différent de l’IRQL auquel il s’exécutait lorsqu’il a enregistré l’état à virgule flottante.
Étant donné que l’IRQL auquel le pilote s’exécute détermine la façon dont l’état à virgule flottante est enregistré, le pilote doit s’exécuter au même IRQL lorsqu’il appelle les fonctions pour enregistrer et restaurer l’état à virgule flottante.
Exemple
L’exemple de code suivant déclenche cet avertissement.
void driver_utility()
{
// running at APC level
KFLOATING_SAVE FloatBuf;
if (KeSaveFloatingPointState(&FloatBuf))
{
KeLowerIrql(PASSIVE_LEVEL);
...
KeRestoreFloatingPointState(&FloatBuf);
}
}
L’exemple de code suivant évite cet avertissement.
void driver_utility()
{
// running at APC level
KFLOATING_SAVE FloatBuf;
if (KeSaveFloatingPointState(&FloatBuf))
{
KeLowerIrql(PASSIVE_LEVEL);
...
KeRaiseIrql(APC_LEVEL, &old);
KeRestoreFloatingPointState(&FloatBuf);
}
}