C28110
Warnung C28110: Treiber müssen den Gleitkommazustand der Hardware schützen. Siehe Verwendung von float
Zusätzliche Informationen |
Verwenden Sie KeSaveFloatingPointState und KeRestoreFloatingPointState um Gleitkommavorgänge. Anzeigetreiber sollten die entsprechenden Eng...- Routinen verwenden. |
Diese Warnung gilt nur im Kernelmodus. Der Treiber versucht, eine Variable oder Konstante eines float-Typs zu verwenden, wenn der Code nicht durch KeSaveFloatingPointState und KeRestoreFloatingPointState oder EngSaveFloatingPointState und EngRestoreFloatingPointState geschützt ist.
In der Regel werden Treiber mit dem Gleitkommakontext der neuesten Anwendung ausgeführt, und jede Verwendung eines Gleitkommapunkts, der nicht durch KeSaveFloatingPointState und KeRestoreFloatingPointState geschützt ist, kann die Ergebnisse für andere Prozesse ändern und häufig zu falschen oder unerwarteten Ergebnissen im Treiber führen.
Anzeigetreiber sollten EngSaveFloatingPointState und EngRestoreFloatingPointState verwenden.
Nachdem eine instance dieses Fehlers entlang eines bestimmten Flusspfads erkannt wurde, unterdrückt das Codeanalysetool nachfolgende ähnliche Fehler. Das Codeanalysetool meldet diesen Fehler nicht für Funktionsdefinitionen, die Gleitkommatypargumente annehmen oder einen gleitenden Typ zurückgeben, da der Aufrufer die Verwendung meldet.
Diese Warnung kann fehlerbehaftet ausgelöst werden, wenn ein Programm den Gleitkommazustand um einen Funktionsaufruf speichert und wiederhergestellt und die aufgerufene Funktion Gleitkommavorgänge ausführt.
Wenn eine Funktion absichtlich Gleitkommavorgänge verwendet und erwartet, dass sie in einem Kontext aufgerufen wird, in dem gleitkommasicher ist, sollten Sie die Funktion mit _Kernel_float_used_ versehen. Diese Anmerkung unterdrückt die Warnungen im Funktionstext und bewirkt, dass der aufrufende Kontext überprüft, ob der Aufruf sicher für Gleitkommavorgänge geschützt ist. Wenn Gleitkommavorgänge in den Argumenten oder dem Rückgabewert angezeigt werden, ist der Effekt identisch mit der Verwendung von _Kernel_float_used_.
Durch Die Verwendung _Kernel_float_used_ für alle Funktionen, die Gleitkommapunkte verwenden, bis keine Warnungen vorhanden sind, kann sichergestellt werden, dass ein Treiber frei von Missbrauch der Gleitkommahardware ist. Weitere Informationen finden Sie unter Gleitkommaanmerkungen für Treiber.