RtlVirtualUnwind 함수(winnt.h)
지정된 함수 컨텍스트 앞에 오는 함수의 호출 컨텍스트를 검색합니다.
참고
이 함수는 모든 프로세서 플랫폼에서 구현되지 않으며 구현은 이를 지원하는 각 플랫폼에서 다릅니다. 다음 프로토타입은 모든 잠재적 매개 변수 및 해당 애플리케이션을 나열합니다. 프로세서별 함수 프로토타입에 대해 자세히 읽어보세요.
구문
NTSYSAPI PEXCEPTION_ROUTINE RtlVirtualUnwind(
[in] DWORD HandlerType,
[in] DWORD64 ImageBase,
[in] DWORD64 ControlPc,
[in] PRUNTIME_FUNCTION FunctionEntry,
[in, out] PCONTEXT ContextRecord,
[out] PVOID *HandlerData,
[out] PDWORD64 EstablisherFrame,
[in, out, optional] PKNONVOLATILE_CONTEXT_POINTERS ContextPointers
);
매개 변수
[in] HandlerType
처리기 형식입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
이 매개 변수는 x64에만 존재합니다.
[in] ImageBase
함수가 속한 모듈의 기본 주소입니다.
[in] ControlPc
컨트롤이 지정된 함수를 떠난 가상 주소입니다.
[in] FunctionEntry
지정된 함수에 대한 함수 테이블 항목의 주소입니다. 함수 테이블 항목을 가져오려면 RtlLookupFunctionEntry 함수를 호출합니다.
[in, out] ContextRecord
이전 프레임의 컨텍스트를 나타내는 CONTEXT 구조체에 대한 포인터입니다.
[out] HandlerData
PC의 위치입니다. 이 매개 변수가 0이면 PC가 함수의 프롤로그, 에필로그 또는 null 프레임 영역에 있습니다. 이 매개 변수가 1이면 PC가 함수 본문에 있습니다.
이 매개 변수는 x64에 없습니다.
[out] EstablisherFrame
설정자 프레임 포인터 값을 수신하는 FRAME_POINTERS 구조체에 대한 포인터입니다. 실제 프레임 포인터는 InFunction 이 인 경우에만 정의됩니다 1
.
이 매개 변수는 x64에서 PULONG64 형식입니다.
[in, out, optional] ContextPointers
컨텍스트 포인터 구조에 대한 선택적 포인터입니다.
반환 값
이 함수는 EXCEPTION_ROUTINE 콜백 함수에 대한 포인터를 반환합니다.
설명
x64에 대한 에필로그 마커의 전체 목록은 다음과 같습니다.
- ret
- ret n
- rep ret
- 대상이 해제되는 함수 외부에 있는 jmp imm8 | imm32
- jmp qword ptr imm32
- rex.w jmp reg
요구 사항
대상 플랫폼 | Windows |
헤더 | winnt.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |