Teilen über


C28110

Warnung C28110: Treiber müssen Gleitkommahardwarestatus schützen. Anzeigen der Verwendung von Float

Zusätzliche Informationen

Verwenden Sie KeSaveFloatingPointState und KeRestoreFloatingPointState um Gleitkommavorgänge. Anzeigetreiber sollten die entsprechenden Eng verwenden... Routinen.

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 KeRestoreFloatingPointStateoder EngSaveFloatingPointState und EngRestoreFloatingPointStategeschützt ist.

In der Regel werden Treiber mit dem Gleitkommakontext der letzten Anwendung ausgeführt, und jede Verwendung eines Gleitkommapunkts, der nicht durch KeSaveFloatingPointState geschützt ist, und KeRestoreFloatingPointState können 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 Instanz 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 Gleitkommaargumente verwenden oder einen unverankerten Typ zurückgeben, da der Aufrufer die Verwendung meldet.

Diese Warnung kann im Fehler ausgelöst werden, wenn ein Programm den Gleitkommazustand um einen Funktionsaufruf speichert und wiederhergestellt, und die aufgerufene Funktion führt Gleitkommavorgänge aus.

Wenn eine Funktion Gleitkommavorgänge absichtlich verwendet und erwartet, dass sie in einem Kontext aufgerufen werden, in dem Gleitkomma sicher ist, sollten Sie die Funktion mit _Kernel_float_used_kommentieren. Diese Anmerkung unterdrückt sowohl die Warnungen im Funktionstext als auch den aufrufenden Kontext, um zu überprüfen, ob der Aufruf sicher für Gleitkommavorgänge geschützt ist. Wenn Gleitkommavorgänge in den Argumenten oder rückgabewerten angezeigt werden, entspricht der Effekt der Verwendung von _Kernel_float_used_.

Wenn Sie _Kernel_float_used_ verwenden (oder die entsprechenden Speicher- und Wiederherstellungsaufrufe hinzufügen) alle Funktionen verwenden, die Gleitkommapunkte verwenden, bis keine Warnungen verbleiben, kann ein Treiber sicher sein, dass er frei von Missbrauch der Gleitkommahardware ist. Weitere Informationen finden Sie unter Gleitkommaanmerkungen für Treiber.