KeRestoreFloatingPointState 함수(wdm.h)
KeRestoreFloatingPointState 루틴은 KeSaveFloatingPointState에 대한 이전 호출에 의해 저장된 비휘발성 부동 소수점 컨텍스트를 복원합니다.
구문
NTSTATUS KeRestoreFloatingPointState(
[in] PKFLOATING_SAVE FloatSave
);
매개 변수
[in] FloatSave
KeSaveFloatingPointState에 대한 이전 호출에서 전달된 KFLOATING_SAVE 구조체에 대한 포인터입니다.
반환 값
KeRestoreFloatingPointState는 STATUS_SUCCESS 반환합니다.
설명
KeRestoreFloatingPointState 는 KeSaveFloatingPointState의 상호입니다.
KeSaveFloatingPointState를 호출하는 모든 루틴은 해당 루틴이 컨트롤을 반환하기 전에 KeRestoreFloatingPointState를 호출 해야 하며, KeSaveFloatingPointState에 대한 이전 호출이 발생한 것과 동일한 IRQL에서 실행되어야 합니다. 이러한 조건 중 하나를 충족하지 못하면 시스템 버그 검사 발생합니다.
커널 모드 드라이버 코드는 KeSaveFloatingPointState 및 KeRestoreFloatingPointState 에 대한 호출이 제대로 중첩되었는지 확인해야 합니다. 이는 각 중첩 수준에서 KeRestoreFloatingPointState 호출에 의해 복원된 상태가 해당 KeSaveFloatingPointState 호출에 의해 저장된 상태와 동일하도록 하는 데 필요합니다. 적절한 중첩을 보장하려면 커널 모드 드라이버 코드가 다음 규칙을 따라야 합니다.
- 저장된 상태를 복원 하는 KeRestoreFloatingPointState 호출은 상태를 저장한 KeSaveFloatingPointState 호출과 동일한 IRQL에서 실행되어야 합니다.
- KeSaveFloatingPointState 및 KeRestoreFloatingPointState 호출 쌍이 주변 KeSaveFloatingPointState 및 KeRestoreFloatingPointState 호출 쌍 내에 중첩된 경우 중첩된 호출에 대한 IRQL은 주변 호출에 대한 IRQL보다 낮지 않아야 합니다.
- 일반적으로 KeSaveFloatingPointState에서 저장한 상태를 포함하는 호출자가 할당한 KFLOATING_SAVE 구조체가 스택에 상주합니다. 스택은 저장된 상태 정보의 중첩을 자연스럽게 유지합니다. 드라이버 코드가 스택 이외의 위치에 상태를 저장하는 경우 드라이버 작성기는 KeSaveFloatingPointState 및 KeRestoreFloatingPointState 호출의 중첩을 유지하기 위해 특별히 주의해야 합니다.
- 저장된 상태를 복원 하는 KeRestoreFloatingPointState 호출은 상태를 저장한 KeSaveFloatingPointState 호출과 동일한 스레드에서 실행되어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL(설명 섹션 참조) |