다음을 통해 공유


KeRestoreFloatingPointState 함수(wdm.h)

KeRestoreFloatingPointState 루틴은 KeSaveFloatingPointState에 대한 이전 호출에 의해 저장된 비휘발성 부동 소수점 컨텍스트를 복원합니다.

구문

NTSTATUS KeRestoreFloatingPointState(
  [in] PKFLOATING_SAVE FloatSave
);

매개 변수

[in] FloatSave

KeSaveFloatingPointState에 대한 이전 호출에서 전달된 KFLOATING_SAVE 구조체에 대한 포인터입니다.

반환 값

KeRestoreFloatingPointState는 STATUS_SUCCESS 반환합니다.

설명

KeRestoreFloatingPointStateKeSaveFloatingPointState의 상호입니다.

KeSaveFloatingPointState를 호출하는 모든 루틴은 해당 루틴이 컨트롤을 반환하기 전에 KeRestoreFloatingPointState를 호출 해야 하며, KeSaveFloatingPointState에 대한 이전 호출이 발생한 것과 동일한 IRQL에서 실행되어야 합니다. 이러한 조건 중 하나를 충족하지 못하면 시스템 버그 검사 발생합니다.

커널 모드 드라이버 코드는 KeSaveFloatingPointStateKeRestoreFloatingPointState 에 대한 호출이 제대로 중첩되었는지 확인해야 합니다. 이는 각 중첩 수준에서 KeRestoreFloatingPointState 호출에 의해 복원된 상태가 해당 KeSaveFloatingPointState 호출에 의해 저장된 상태와 동일하도록 하는 데 필요합니다. 적절한 중첩을 보장하려면 커널 모드 드라이버 코드가 다음 규칙을 따라야 합니다.

  • 저장된 상태를 복원 하는 KeRestoreFloatingPointState 호출은 상태를 저장한 KeSaveFloatingPointState 호출과 동일한 IRQL에서 실행되어야 합니다.
  • KeSaveFloatingPointStateKeRestoreFloatingPointState 호출 쌍이 주변 KeSaveFloatingPointStateKeRestoreFloatingPointState 호출 쌍 내에 중첩된 경우 중첩된 호출에 대한 IRQL은 주변 호출에 대한 IRQL보다 낮지 않아야 합니다.
  • 일반적으로 KeSaveFloatingPointState에서 저장한 상태를 포함하는 호출자가 할당한 KFLOATING_SAVE 구조체가 스택에 상주합니다. 스택은 저장된 상태 정보의 중첩을 자연스럽게 유지합니다. 드라이버 코드가 스택 이외의 위치에 상태를 저장하는 경우 드라이버 작성기는 KeSaveFloatingPointStateKeRestoreFloatingPointState 호출의 중첩을 유지하기 위해 특별히 주의해야 합니다.
  • 저장된 상태를 복원 하는 KeRestoreFloatingPointState 호출은 상태를 저장한 KeSaveFloatingPointState 호출과 동일한 스레드에서 실행되어야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL(설명 섹션 참조)

추가 정보

KFLOATING_SAVE

KeSaveFloatingPointState