RtlCaptureStackBackTrace 함수(ntifs.h)
RtlCaptureStackBackTrace 루틴은 스택을 걷고 각 프레임에 대한 정보를 기록하여 스택 추적을 캡처합니다.
구문
NTSYSAPI USHORT RtlCaptureStackBackTrace(
[in] ULONG FramesToSkip,
[in] ULONG FramesToCapture,
[out] PVOID *BackTrace,
[out, optional] PULONG BackTraceHash
);
매개 변수
[in] FramesToSkip
백 추적의 시작(현재 호출 지점)에서 건너뛸 프레임 수입니다.
[in] FramesToCapture
캡처할 프레임 수입니다.
[out] BackTrace
현재 스택 추적에서 캡처된 반환 주소에 대한 포인터가 반환되는 호출자 할당 배열입니다.
[out, optional] BackTraceHash
해시 테이블을 구성하는 데 사용할 수 있는 선택적 값입니다. 이 매개 변수가 NULL인 경우 RtlCaptureStackBackTrace 는 해시 값을 계산하고 반환하지 않습니다.
이 해시 값은 BackTrace 배열에서 반환된 포인터의 값을 기반으로 계산됩니다. 두 개의 동일한 스택 추적은 동일한 해시 값을 생성합니다.
반환 값
캡처된 프레임의 수입니다.
설명
RtlCaptureStackBackTrace 는 스택을 걷고(호출 시간에서 뒤로) 각 프레임에 대한 정보를 기록하여 호출자에 대한 스택 추적을 캡처합니다. 특히 RtlCaptureStackBackTrace 는 스택에서 각 호출의 반환 주소에 대한 포인터를 반환합니다. 여기서 BackTrace 배열의 첫 번째 포인터는 가장 최근 호출의 반환 주소를 가리킵니다.
백 추적 해시 값을 사용하여 두 스택 추적이 동일하거나 다른지 여부를 빠르게 확인할 수 있습니다. BackTraceHash에서 반환된 해시를 사용하여 스택 추적을 비교할 수 있습니다. 해시를 사용하지 않거나 고유한 해시 값을 계산하려는 경우 BackTraceHash 를 NULL로 설정합니다.
일반적으로 64비트 컴퓨터에서는 페이지 오류가 허용되지 않는 경우 특정 컨텍스트에서 커널 스택을 캡처할 수 없습니다. x64에서 커널 스택을 탐색할 수 있도록 하려면 DisablePagingExecutive Memory Management 레지스트리 값을 1로 설정합니다. DisablePagingExecutive 레지스트리 값은 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management 레지스트리 키 아래에 있습니다. 시스템의 메모리 사용량이 증가하므로 임시 진단 목적으로만 수행해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP |
대상 플랫폼 | 유니버설 |
헤더 | ntifs.h(Ntifs.h, FltKernel.h 포함) |
라이브러리 | NtosKrnl.lib; Windows 10 OneCoreUAP.lib |
DLL | NtDll.dll(사용자 모드); NtosKrnl.exe(커널 모드) |
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기