다음을 통해 공유


EngSaveFloatingPointState 함수(winddi.h)

EngSaveFloatingPointState 함수는 현재 Windows 2000 이상 커널 부동 소수점 상태를 저장합니다.

구문

ULONG EngSaveFloatingPointState(
            VOID  *pBuffer,
  [in, out] ULONG cjBufferSize
);

매개 변수

pBuffer

부동 소수점 상태를 수신하는 버퍼에 대한 포인터입니다. 이 버퍼는 초기화되지 않아야 하며 페이지가 없는 메모리에 있어야 합니다.

[in, out] cjBufferSize

pBuffer가 가리키는 버퍼의 크기(바이트)를 지정합니다.

반환 값

pBufferNULL이 아닌 경우 상태가 성공적으로 저장되면 EngSaveFloatingPointStateTRUE를 반환합니다. 지정된 버퍼가 너무 작거나 상태를 저장할 수 없는 경우 FALSE 를 반환합니다.

pBufferNULL이거나 cjBufferSize가 0이면 EngSaveFloatingPointState는 부동 소수점 상태를 저장하는 데 필요한 버퍼의 크기를 반환합니다. 반환 값이 0이면 프로세서에 하드웨어 부동 소수점 기능이 없습니다. 이 경우 드라이버는 부동 소수점 명령을 사용하면 안 됩니다.

설명

드라이버는 부동 소수점 하드웨어 지침을 사용하기 전에 현재 커널 부동 소수점 상태를 저장해야 합니다. Intel 아키텍처 시스템에서는 프로세서에서 지원하는 경우 MMX 명령을 사용할 수 있습니다. 부동 소수점 또는 MMX 하드웨어를 사용할 때 EngSaveFloatingPointStateEngRestoreFloatingPointState 를 제대로 사용하지 않는 드라이버로 인해 호출 애플리케이션에서 임의의 부동 소수점 또는 MMX 손상이 발생합니다.

드라이버에 대한 모든 호출에서 드라이버는 부동 소수점 또는 MMX 작업을 사용하기 전에 커널 상태를 유지하기 위해 EngSaveFloatingPointState 를 한 번 호출해야 합니다. 또한 커널 상태를 다시 설정하기 위해 모든 부동 소수점 또는 MMX 작업이 완료된 후 EngRestoreFloatingPointState 를 한 번 호출해야 합니다.

GDI는 이스케이프가 OPENGL_CMD, OPENGL_GETINFO 또는 MCDFUNCS일 때 드라이버의 DrvEscape 루틴에 대한 호출에 대한 부동 소수점 상태를 자동으로 저장합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 winddi.h(Winddi.h 포함)
라이브러리 Win32k.lib
DLL Win32k.sys

추가 정보

DrvEscape

EngRestoreFloatingPointState