KeSaveFloatingPointState 함수(wdm.h)
KeSaveFloatingPointState 루틴은 호출자가 부동 소수점 작업을 수행할 수 있도록 비휘발성 부동 소수점 컨텍스트를 저장합니다.
통사론
NTSTATUS KeSaveFloatingPointState(
[out] PKFLOATING_SAVE FloatSave
);
매개 변수
[out] FloatSave
호출자가 할당한 상주 버퍼에 대한 포인터로, (KFLOATING_SAVE)보다이상이어야 합니다.
반환 값
KeSaveFloatingPointState 현재 스레드의 부동 소수점 컨텍스트를 저장하고 호출자에 대한 새 부동 소수점 컨텍스트를 설정하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 다음 오류 상태 코드 중 하나를 반환합니다.
반환 코드 | 묘사 |
---|---|
|
시스템은 프로세서에서 부동 소수점 작업을 수행하는 대신 부동 소수점 에뮬레이션을 사용하도록 구성됩니다. |
|
KeSaveFloatingPointState 현재 스레드의 부동 소수점 컨텍스트를 저장할 충분한 메모리를 할당할 수 없습니다. |
발언
KeSaveFloatingPointState 성공적으로 호출하면 호출자가 자체의 부동 소수점 작업을 수행할 수 있지만 이러한 호출자는 부동 소수점 작업이 완료되는 즉시 이전의 비휘발성 부동 소수점 컨텍스트를 복원해야 합니다. KeSaveFloatingPointState 호출하는 루틴은 해당 루틴이 컨트롤을 반환하기 전에 KeRestoreFloatingPointState 호출해야 합니다.
KeSaveFloatingPointState 호출에 성공하면 FloatSave 데이터는 호출자에게 불투명합니다. 호출자는 KeRestoreFloatingPointState에 대한 호출이때까지 이 데이터에 할당된 메모리를 해제해서는 안 됩니다.
Windows Vista 및 이전 버전의 Windows에서는 KeSaveFloatingPointState 호출 및 해당 KeRestoreFloatingPointState 호출이 보호된 지역에서 발생해야 합니다. 즉, keSaveFloatingPointState 호출되기 전에KeEnterGuardedRegion 루틴을 호출해야 하며, KeRestoreFloatingPointState 호출된 후 KeLeaveGuardedRegion 루틴을 호출해야 합니다. Windows 7 이상 버전의 Windows에는 이러한 요구 사항이 없습니다.
성능상의 이유로 드라이버는 반드시 필요한 경우가 아니면 부동 소수점 작업을 수행하지 않아야 합니다. 현재 스레드의 비휘발성 부동 소수점 상태를 저장하고 복원하는 오버헤드는 부동 소수점 작업을 수행하는 모든 드라이버의 성능을 저하합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm) |