RtlRestoreContext 함수(winnt.h)
호출자의 컨텍스트를 지정된 컨텍스트 레코드로 복원합니다.
구문
NTSYSAPI VOID __cdecl RtlRestoreContext(
PCONTEXT ContextRecord,
_EXCEPTION_RECORD *ExceptionRecord
);
매개 변수
[in] ContextRecord
CONTEXT 구조체에 대한 포인터입니다.
[in] ExceptionRecord
EXCEPTION_RECORD 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 일반적으로 NULL이어야 합니다.
예외 레코드는 주로 긴 점프 및 C++ catch-throw 지원과 함께 사용됩니다. ExceptionCode 멤버가 STATUS_LONGJUMP 경우 ExceptionInformation 멤버는 점프 버퍼에 대한 포인터를 포함합니다. RtlRestoreContext 는 컨텍스트 레코드가 복원되기 전에 의 점프 버퍼에서 컨텍스트 레코드로 비휘발성 상태를 복사합니다.
ExceptionCode 멤버가 STATUS_UNWIND_CONSOLIDATE 경우 ExceptionInformation 멤버는 catch 처리기와 같은 콜백 함수에 대한 포인터를 포함합니다. RtlRestoreContext 는 콜백 함수를 호출하기 전에 해당 프레임과 컨텍스트 레코드에 지정된 프레임 간에 호출 프레임을 통합합니다. 이렇게 하면 콜백 함수에서 발생할 수 있는 예외 처리에서 프레임이 숨겨질 수 있습니다. 이 데이터와 일반적인 해제의 차이점은 스택의 데이터가 여전히 존재하므로 throw 개체와 같은 프레임 데이터를 계속 사용할 수 있다는 것입니다. 콜백 함수는 컨텍스트 레코드에서 업데이트할 새 프로그램 카운터를 반환한 다음 일반 복원 컨텍스트에서 사용됩니다.
반환 값
이 함수는 값을 반환하지 않습니다.
요구 사항
대상 플랫폼 | Windows |
헤더 | winnt.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |