RtlInstallFunctionTableCallback 함수(winnt.h)
동적 함수 테이블 목록에 동적 함수 테이블을 추가합니다.
구문
NTSYSAPI BOOLEAN RtlInstallFunctionTableCallback(
[in] DWORD64 TableIdentifier,
[in] DWORD64 BaseAddress,
[in] DWORD Length,
[in] PGET_RUNTIME_FUNCTION_CALLBACK Callback,
[in] PVOID Context,
[in] PCWSTR OutOfProcessCallbackDll
);
매개 변수
[in] TableIdentifier
동적 함수 테이블 콜백의 식별자입니다. 두 개의 낮은 순서 비트를 설정해야 합니다. 예를 들어 BaseAddress|0x3.
[in] BaseAddress
콜백 함수에서 관리하는 메모리 영역의 기본 주소입니다.
[in] Length
콜백 함수에서 관리하는 메모리 영역의 크기(바이트)입니다.
[in] Callback
지정된 메모리 영역의 함수에 대한 함수 테이블 항목을 검색하기 위해 호출되는 콜백 함수에 대한 포인터입니다. PGET_RUNTIME_FUNCTION_CALLBACK 형식에 대한 정의는 WinNT.h를 참조하세요.
[in] Context
콜백 함수에 전달할 사용자 정의 데이터에 대한 포인터입니다.
[in] OutOfProcessCallbackDll
프로세스 외부에 있는 함수 테이블 항목을 제공하는 DLL의 경로를 지정하는 문자열에 대한 선택적 포인터입니다.
디버거가 콜백 함수에서 관리하는 주소 범위의 함수로 해제되면 이 DLL을 로드하고 형식이 POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME 함수를 호출합니다. 자세한 내용은 WinNT.h에서 이러한 항목의 정의를 참조하세요.
반환 값
함수가 성공하면 반환 값은 TRUE입니다. 함수가 실패하면 반환 값은 FALSE입니다.
설명
함수 테이블은 64비트 Windows에서 스택을 해제하거나 탐색하는 방법을 결정하는 데 사용됩니다. 이러한 테이블은 일반적으로 컴파일러에서 생성되고 이미지의 일부로 저장됩니다. 그러나 애플리케이션은 동적으로 생성된 코드에 대한 함수 테이블을 제공해야 합니다. 함수 테이블에 대한 자세한 내용은 시스템에 대한 아키텍처 가이드를 참조하세요.
이 함수는 매우 동적 코드에 유용합니다. 애플리케이션은 생성된 코드의 메모리 범위를 지정하지만 해제 요청에 필요할 때까지 테이블을 생성할 필요가 없습니다. 이때 시스템은 컨텍스트 및 컨트롤 주소를 사용하여 콜백 함수를 호출합니다. 콜백 함수는 지정된 주소에 대한 런타임 함수 항목을 반환해야 합니다. 콜백 함수와 코드 생성기 간에 교착 상태가 발생하지 않도록 해야 합니다.
템플릿에서 생성되거나 프로세스 수명 동안 한 번만 생성된 코드의 경우 RtlAddFunctionTable 함수를 사용합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | winnt.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |