C28111
avviso C28111: IRQL in cui è stato salvato lo stato a virgola mobile non corrisponde all'IRQL corrente (per questa operazione di ripristino).
Informazioni aggiuntive |
Le funzioni di salvataggio/ripristino mobile richiedono che IRQL sia lo stesso al momento del salvataggio e del ripristino corrispondente. |
IrQL in corrispondenza del quale il driver viene eseguito quando ripristina uno stato a virgola mobile è diverso da IRQL in corrispondenza del quale è stato eseguito durante il salvataggio dello stato a virgola mobile.
Poiché irQL in corrispondenza del quale viene eseguito il driver determina la modalità di salvataggio dello stato a virgola mobile, il driver deve essere in esecuzione nello stesso IRQL quando chiama le funzioni per salvare e ripristinare lo stato a virgola mobile.
Esempio
Nell'esempio di codice seguente viene generato questo avviso.
void driver_utility()
{
// running at APC level
KFLOATING_SAVE FloatBuf;
if (KeSaveFloatingPointState(&FloatBuf))
{
KeLowerIrql(PASSIVE_LEVEL);
...
KeRestoreFloatingPointState(&FloatBuf);
}
}
Nell'esempio di codice seguente viene evitato questo avviso.
void driver_utility()
{
// running at APC level
KFLOATING_SAVE FloatBuf;
if (KeSaveFloatingPointState(&FloatBuf))
{
KeLowerIrql(PASSIVE_LEVEL);
...
KeRaiseIrql(APC_LEVEL, &old);
KeRestoreFloatingPointState(&FloatBuf);
}
}