Share via

What does the .fptable section represent in an executable file?

Xiao, Yuting 25 Reputation points
2025-11-03T03:51:45.8033333+00:00

After upgrading the Windows SDK to 10.0.26100.0, I noticed a new section named .fptable when dumping sections using dumpbin [executable file path]. This section did not appear before and is absent when switching back to 10.0.19041.0. I could not find any description of this section in the official Windows documentation or other online resources. Could you provide insight into what this section represents? If there is an official Microsoft reference or documentation link, that would be greatly appreciated.

Windows development | Windows API - Win32

Locked Question. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

Answer accepted by question author

Danny Nguyen (WICLOUD CORPORATION) 6,865 Reputation points Microsoft External Staff Moderator
2025-11-05T09:06:47.76+00:00

Hi,

Just responding again to clarify some information.

Thanks to Viorel response, we can find the .fptable section comes from the Universal CRT (UCRT). In winapi_thunks.cpp the CRT places a single array of pointers into that custom section:


#pragma data_seg(push, almostro, ".fptable")

#pragma bss_seg(push, almostro, ".fptable")

static void* function_pointers[function_id_count];

#pragma bss_seg(pop, almostro)

#pragma data_seg(pop, almostro)

From the code and the comments, it seems to be populated cache of Windows API function addresses. Each slot starts as 0, and on first use the runtime attempts to locate the function in one of several candidate DLLs. If found, the slot is set to the function’s address; if not, it’s set to a sentinel (void*)-1 so it won’t be retried. The table is normally page‑protected as read‑only. This makes the section a read‑mostly compatibility cache that lets the CRT adapt to different Windows versions without hard link failures.

Was this answer helpful?

1 additional answer

Sort by: Most helpful
  1. Viorel 126.9K Reputation points
    2025-11-03T08:41:07.4066667+00:00

    Before obtaining the official information, see if the file “C:\Program Files (x86)\Windows Kits\10\Source\10.0.26100.0\ucrt\internal\winapi_thunks.cpp” exists. It contains:

    . . .
    //
    // Definitions of wrappers for Windows API functions that cannot be called
    // directly because they are not available on all supported operating systems.
    //
    . . .
    // This table stores the function pointers that we have loaded dynamically. 
    // If a function pointer is a null pointer, we have not yet attempted to
    // get that function pointer.  If a function pointer is an -1, we have
    // attempted to get that function pointer but the attempt failed.
    #pragma data_seg(push, almostro, ".fptable")
    #pragma bss_seg(push, almostro, ".fptable")
    static void* function_pointers[function_id_count];
    . . .
    

    There are various places that are related to this table.

    Was this answer helpful?