다음을 통해 공유


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

참고 항목

CONTEXT

RtlCaptureContext