Condividi tramite


C28110

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

Informazioni aggiuntive

Usare KeSaveFloatingPointState e KeRestoreFloatingPointState operazioni a virgola mobile. I driver di visualizzazione devono usare il Eng corrispondente... routine.

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 KeRestoreFloatingPointStateo 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 spesso causare risultati errati 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 analisi 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 intenzionalmente operazioni a virgola mobile e prevede di essere chiamata in un contesto in cui il virgola mobile è sicuro, è 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 verifichi 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 equivale a usare _Kernel_float_used_.

Usando _Kernel_float_used_ su (o aggiungendo le chiamate di salvataggio e ripristino appropriate a) tutte le funzioni che usano il virgola mobile fino a quando non rimangono avvisi, un driver può essere sicuro di essere privo di uso improprio dell'hardware a virgola mobile. Per altre informazioni, vedere annotazioni a virgola mobile per i driver.