RtlAddFunctionTable - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
#ifndef _NTRTL_H
#if defined(_M_AMD64) && defined(_M_ARM64EC)

NTSYSAPI
BOOLEAN
STDAPIVCALLTYPE
RtlAddFunctionTable(
    _In_reads_(EntryCount) PRUNTIME_FUNCTION FunctionTable,
    _In_ ULONG EntryCount,
    _In_ ULONG64 BaseAddress
    );

#endif
#endif

View code on GitHub
// winnt.h

NTSYSAPI BOOLEAN RtlAddFunctionTable(
  [in] PRUNTIME_FUNCTION FunctionTable,
  [in] DWORD             EntryCount,
  [in] DWORD64           BaseAddress
);
View the official Win32 API reference

NtDoc

No description available.

Win32 API reference (nf-winnt-rtladdfunctiontable)

RtlAddFunctionTable function

Description

Adds a dynamic function table to the dynamic function table list.

Parameters

FunctionTable [in]

A pointer to an array of function entries. For a definition of the PRUNTIME_FUNCTION type, see WinNT.h. For more information on runtime function entries, see the calling convention documentation for the processor.

EntryCount [in]

The number of entries in the FunctionTable array.

BaseAddress [in]

The base address to use when computing full virtual addresses from relative virtual addresses of function table entries.

- TargetGp [in]

The target global pointer. This is part of the Intel IPF calling convention. It is a pointer to a data area in an image.

This parameter does not exist on x64.

Return value

If the function succeeds, the return value is TRUE. Otherwise, the return value is FALSE.

Remarks

Function tables are used on 64-bit Windows to determine how to unwind or walk the stack. These tables are usually generated by the compiler and stored as part of the image. However, applications must provide the function table for dynamically generated code. For more information about function tables, see the architecture guide for your system.

This function is useful for code that is generated from a template or generated only once during the life of the process. For more dynamically generated code, use the RtlInstallFunctionTableCallback function.

See also

RtlDeleteFunctionTable

RtlInstallFunctionTableCallback