C28110

avviso C28110: i driver devono proteggere lo stato hardware a virgola mobile. Vedere l'uso di float

Informazioni aggiuntive

Usare KeSaveFloatingPointState e KeRestoreFloatingPointState per le operazioni a virgola mobile. I driver di visualizzazione devono usare le routine Eng... corrispondenti.

Questo avviso è applicabile solo in modalità kernel. Il driver sta tentando di usare una variabile o una costante di un tipo float quando il codice non è protetto da KeSaveFloatingPointState e KeRestoreFloatingPointState o EngSaveFloatingPointState e EngRestoreFloatingPointState.

In genere, i driver vengono eseguiti con il contesto a virgola mobile dell'applicazione più recente e qualsiasi uso di un punto mobile non protetto da KeSaveFloatingPointState e KeRestoreFloatingPointState può modificare i risultati per altri processi e può spesso causare risultati non corretti o imprevisti nel driver.

I driver di visualizzazione devono usare EngSaveFloatingPointState e EngRestoreFloatingPointState.

Dopo che un'istanza di questo errore viene rilevata lungo qualsiasi percorso di flusso specifico, lo strumento di analisi del codice elimina gli errori simili successivi. Lo strumento Analisi codice non segnala questo errore per le definizioni di funzione che accettano argomenti di tipo mobile o che restituiscono un tipo mobile, perché il chiamante segnala l'utilizzo.

Questo avviso può essere attivato in caso di errore quando un programma salva e ripristina lo stato a virgola mobile intorno a una chiamata di funzione e la funzione chiamata esegue operazioni a virgola mobile.

Se una funzione usa operazioni a virgola mobile intenzionalmente e prevede di essere chiamate in un contesto in cui la virgola mobile è sicura, è necessario annotare la funzione con _Kernel_float_used_. Questa annotazione elimina entrambi gli avvisi nel corpo della funzione e fa sì che il contesto chiamante controlli che la chiamata sia protetta in modo sicuro per le operazioni a virgola mobile. Se le operazioni a virgola mobile vengono visualizzate negli argomenti o nel valore restituito, l'effetto corrisponde all'uso di _Kernel_float_used_.

Usando _Kernel_float_used_ su (o aggiungendo le chiamate di salvataggio e ripristino appropriate a) tutte le funzioni che usano la virgola mobile fino a quando non rimangono avvisi, un driver può essere assicurato di non essere utilizzato in modo improprio dell'hardware a virgola mobile. Per altre informazioni, vedere Annotazioni a virgola mobile per i driver.