Partilhar via


C28110

aviso C28110: Os drivers devem proteger o estado do hardware de ponto flutuante. Ver utilização do flutuador

Informações adicionais

Use KeSaveFloatingPointState e KeRestoreFloatingPointState em torno de operações de ponto flutuante. Os drivers de vídeo devem usar o correspondente Eng... rotinas.

Este aviso só é aplicável no modo kernel. O driver está tentando usar uma variável ou constante de um tipo float quando o código não está protegido por KeSaveFloatingPointState e KeRestoreFloatingPointStateou EngSaveFloatingPointState e EngRestoreFloatingPointState.

Normalmente, os drivers são executados com o contexto de ponto flutuante do aplicativo mais recente e qualquer uso de um ponto flutuante que não é protegido por KeSaveFloatingPointState e KeRestoreFloatingPointState pode alterar os resultados de outros processos e muitas vezes pode causar resultados incorretos ou inesperados no driver.

Os drivers de vídeo devem usar EngSaveFloatingPointState e EngRestoreFloatingPointState.

Depois que uma instância desse erro é detetada ao longo de qualquer caminho de fluxo específico, a ferramenta Análise de Código suprime erros semelhantes subsequentes. A ferramenta Análise de Código não relata esse erro para definições de função que usam argumentos de tipo flutuante ou que retornam um tipo flutuante, porque o chamador relatará o uso.

Esse aviso pode ser acionado por erro quando um programa salva e restaura o estado de ponto flutuante em torno de uma chamada de função e a função chamada executa operações de ponto flutuante.

Se uma função usa operações de ponto flutuante intencionalmente e espera ser chamada em um contexto onde o ponto flutuante é seguro, você deve anotar a função com _Kernel_float_used_. Essa anotação suprimirá os avisos no corpo da função e fará com que o contexto de chamada verifique se a chamada está protegida com segurança para operações de ponto flutuante. Se as operações de ponto flutuante aparecerem nos argumentos ou no valor de retorno, o efeito será o mesmo que usar _Kernel_float_used_.

Usando _Kernel_float_used_ em (ou adicionando as chamadas de salvamento e restauração apropriadas para) todas as funções que usam ponto flutuante até que nenhum aviso permaneça, um driver pode ter certeza de estar livre de uso indevido do hardware de ponto flutuante. Para obter mais informações, consulte Anotações de ponto flutuante para drivers.