다음을 통해 공유


C28110

경고 C28110: 드라이버는 부동 소수점 하드웨어 상태를 보호해야 합니다. float 사용 참조

추가 정보

부동 소수점 작업에 KeSaveFloatingPointStateKeRestoreFloatingPointState 를 사용합니다. 디스플레이 드라이버는 해당 Eng... 루틴을 사용해야 합니다.

이 경고는 커널 모드에서만 적용됩니다. 코드가 KeSaveFloatingPointState 및 KeRestoreFloatingPointState 또는 EngSaveFloatingPointStateEngRestoreFloatingPointState로 보호되지 않는 경우 드라이버는 float 형식의 변수 또는 상수를 사용하려고 합니다.

일반적으로 드라이버는 최신 애플리케이션의 부동 소수점 컨텍스트로 실행되며 KeSaveFloatingPointStateKeRestoreFloatingPointState 로 보호되지 않는 부동 소수점을 사용하면 다른 프로세스에 대한 결과가 변경될 수 있으며 드라이버에서 잘못되거나 예기치 않은 결과가 발생할 수 있습니다.

디스플레이 드라이버는 EngSaveFloatingPointStateEngRestoreFloatingPointState를 사용해야 합니다.

이 오류의 instance 특정 흐름 경로를 따라 검색된 후 코드 분석 도구는 후속 유사한 오류를 표시하지 않습니다. 코드 분석 도구는 부동 형식 인수를 사용하거나 부동 형식을 반환하는 함수 정의에 대해 이 오류를 보고하지 않습니다. 호출자가 사용을 보고하기 때문입니다.

이 경고는 프로그램이 함수 호출을 중심으로 부동 소수점 상태를 저장하고 복원하고 호출된 함수가 부동 소수점 작업을 수행할 때 오류 발생 시 트리거될 수 있습니다.

함수가 의도적으로 부동 소수점 연산을 사용하고 부동 소수점이 안전한 컨텍스트에서 호출될 것으로 예상되는 경우 _Kernel_float_used_ 함수에 주석을 추가해야 합니다. 이 주석은 함수 본문의 경고를 표시하지 않으며 호출 컨텍스트가 부동 소수점 작업에 대해 호출이 안전하게 보호된다는 검사 발생합니다. 부동 소수점 연산이 인수 또는 반환 값에 표시되는 경우 효과는 _Kernel_float_used_ 사용하는 것과 동일합니다.

경고가 남아 있지 않을 때까지 부동 소수점을 사용하는 모든 함수에 _Kernel_float_used_ 사용하거나 적절한 저장 및 복원 호출을 추가하면 드라이버는 부동 소수점 하드웨어의 오용을 방지할 수 있습니다. 자세한 내용은 드라이버에 대한 부동 소수점 주석을 참조하세요.