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.