From 7f89b5860c765b76c0ef4f07c214e5110ed59bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 2 Jul 2026 11:56:43 +0200 Subject: [PATCH] libc: update MinGW-w64 sources to 31bd54ab7d5fe03c67ed2bb1a57e531b9c7f8cc4 --- lib/libc/mingw/crt/crt_handler.c | 237 +- lib/libc/mingw/crt/crtdll.c | 5 +- lib/libc/mingw/crt/crtexe.c | 263 +- lib/libc/mingw/crt/crtexewin.c | 6 +- lib/libc/mingw/crt/gccmain.c | 1 + lib/libc/mingw/crt/pseudo-reloc.c | 8 +- lib/libc/mingw/ctype/_iscsym_l.c | 22 + lib/libc/mingw/ctype/_iscsymf_l.c | 22 + lib/libc/mingw/ctype/iswctype.c | 43 + lib/libc/mingw/ctype/towctrans.c | 33 + lib/libc/mingw/def-include/crt-aliases.def.in | 63 +- lib/libc/mingw/def-include/func.def.in | 20 +- lib/libc/mingw/gdtoa/dtoa.c | 2 +- lib/libc/mingw/gdtoa/g__fmt.c | 2 +- lib/libc/mingw/include/oscalls.h | 60 - lib/libc/mingw/include/sect_attribs.h | 93 +- .../api-ms-win-crt-convert-l1-1-0.def.in | 4 +- .../api-ms-win-crt-filesystem-l1-1-0.def.in | 3 + .../api-ms-win-crt-math-l1-1-0.def.in | 2 +- .../api-ms-win-crt-private-l1-1-0.def.in | 6 +- .../api-ms-win-crt-runtime-l1-1-0.def.in | 3 +- .../api-ms-win-crt-stdio-l1-1-0.def | 11 + .../api-ms-win-crt-string-l1-1-0.def | 4 +- lib/libc/mingw/lib-common/kernel32.def.in | 7 + lib/libc/mingw/lib-common/ntdll.def.in | 14 +- lib/libc/mingw/lib-common/ntdllcrt.def.in | 308 +- lib/libc/mingw/lib-common/oleacc.def | 15 +- .../mingw/lib-common/ucrtbase-common.def.in | 18 +- .../lib-common/vcruntime140-common.def.in | 4 +- lib/libc/mingw/lib32/advapi32.def | 1442 +++--- lib/libc/mingw/lib32/kernel32.def | 3002 +++++++----- lib/libc/mingw/lib32/ntdll.def | 4097 ++++++++++------- lib/libc/mingw/lib32/odbc32.def | 4 + lib/libc/mingw/lib32/oleacc.def | 15 +- lib/libc/mingw/libsrc/ativscp-uuid.c | 16 - lib/libc/mingw/libsrc/uuid.c | 1 + .../mingw/{stdio/fopen64.c => math/acospi.c} | 9 +- .../{misc/mb_wc_common.h => math/acospif.c} | 9 +- .../mingw/{stdio/lseek64.c => math/acospil.c} | 10 +- .../mingw/{stdio/ftello64.c => math/asinpi.c} | 14 +- lib/libc/mingw/math/asinpif.c | 14 + lib/libc/mingw/math/asinpil.c | 14 + lib/libc/mingw/math/atan2pi.c | 14 + lib/libc/mingw/math/atan2pif.c | 14 + lib/libc/mingw/math/atan2pil.c | 14 + lib/libc/mingw/math/atanpi.c | 14 + lib/libc/mingw/math/atanpif.c | 14 + lib/libc/mingw/math/atanpil.c | 14 + lib/libc/mingw/math/cospi.c | 15 + lib/libc/mingw/math/cospif.c | 15 + lib/libc/mingw/math/cospil.c | 15 + lib/libc/mingw/math/pi_const.h | 17 + lib/libc/mingw/math/sinpi.c | 15 + lib/libc/mingw/math/sinpif.c | 15 + lib/libc/mingw/math/sinpil.c | 15 + lib/libc/mingw/math/tanpi.c | 15 + lib/libc/mingw/math/tanpif.c | 15 + lib/libc/mingw/math/tanpil.c | 15 + lib/libc/mingw/misc/__mingw_filename_cp.c | 33 + lib/libc/mingw/misc/__mingw_isleadbyte_cp.c | 42 + lib/libc/mingw/misc/_assert.c | 46 + lib/libc/mingw/misc/btowc.c | 32 + lib/libc/mingw/misc/dirent.c | 16 +- lib/libc/mingw/misc/dirname.c | 7 +- lib/libc/mingw/misc/dllmain.c | 2 +- lib/libc/mingw/misc/fedisableexcept.c | 11 + lib/libc/mingw/misc/feenableexcept.c | 11 + lib/libc/mingw/misc/fegetenv.c | 5 +- lib/libc/mingw/misc/fegetexcept.c | 8 + lib/libc/mingw/misc/fegetexceptflag.c | 5 +- lib/libc/mingw/misc/ftime32.c | 38 + lib/libc/mingw/misc/ftime64.c | 19 + lib/libc/mingw/misc/ftruncate.c | 8 - lib/libc/mingw/misc/getopt.c | 3 +- lib/libc/mingw/misc/memalignment.c | 14 + lib/libc/mingw/misc/memset_explicit.c | 16 + lib/libc/mingw/misc/mingw_controlfp.c | 24 +- lib/libc/mingw/misc/mingw_mbwc_convert.c | 69 +- lib/libc/mingw/misc/mingw_setfp.c | 76 +- lib/libc/mingw/misc/mingw_wcstold.c | 2 - lib/libc/mingw/misc/mkdtemp.c | 83 + lib/libc/mingw/misc/mkstemp.c | 3 +- lib/libc/mingw/misc/ucrt_mbsinit.c | 14 + lib/libc/mingw/misc/wctob.c | 39 + .../mingw/stdio/__mingw_fix_fstat_finish.c | 18 + lib/libc/mingw/stdio/__mingw_fix_stat.h | 65 + .../stdio/__mingw_fix_stat_fallback_fd.c | 44 + .../mingw/stdio/__mingw_fix_stat_finish.c | 36 + lib/libc/mingw/stdio/__mingw_fix_stat_path.c | 42 +- .../stdio/__mingw_fix_wstat_fallback_fd.c | 2 + lib/libc/mingw/stdio/__mingw_fix_wstat_path.c | 6 +- lib/libc/mingw/stdio/fseeko32.c | 7 - lib/libc/mingw/stdio/fseeko64.c | 34 - lib/libc/mingw/stdio/ftello.c | 5 - .../{ftruncate64.c => mingw_ftruncate64.c} | 21 +- lib/libc/mingw/stdio/mingw_pformat.c | 151 +- lib/libc/mingw/stdio/mingw_sformat.c | 4 + lib/libc/mingw/stdio/mingw_vsnprintf.c | 7 +- .../mingw/stdio/msvcr80plus_ftruncate64.c | 30 + lib/libc/mingw/stdio/truncate.c | 11 - lib/libc/mingw/stdio/truncate64.c | 14 + .../stdio/ucrt___local_stdio_printf_options.c | 2 +- .../stdio/ucrt___local_stdio_scanf_options.c | 2 +- lib/libc/mingw/stdio/ucrt__scwprintf.c | 21 + lib/libc/mingw/stdio/ucrt__snwprintf.c | 3 +- lib/libc/mingw/stdio/ucrt__swprintf.c | 21 + lib/libc/mingw/stdio/ucrt__vscwprintf.c | 15 + lib/libc/mingw/stdio/ucrt__vsnwprintf.c | 1 + lib/libc/mingw/stdio/ucrt__vswprintf.c | 15 + lib/libc/mingw/winpthreads/misc.c | 26 +- lib/libc/mingw/winpthreads/misc.h | 32 +- lib/libc/mingw/winpthreads/mutex.c | 11 +- lib/libc/mingw/winpthreads/sem.c | 11 +- lib/libc/mingw/winpthreads/thread.c | 170 +- lib/libc/mingw/winpthreads/wpth_ver.h | 3 +- src/libs/mingw.zig | 59 +- 116 files changed, 7097 insertions(+), 4580 deletions(-) create mode 100644 lib/libc/mingw/ctype/_iscsym_l.c create mode 100644 lib/libc/mingw/ctype/_iscsymf_l.c create mode 100644 lib/libc/mingw/ctype/iswctype.c create mode 100644 lib/libc/mingw/ctype/towctrans.c delete mode 100644 lib/libc/mingw/include/oscalls.h delete mode 100644 lib/libc/mingw/libsrc/ativscp-uuid.c rename lib/libc/mingw/{stdio/fopen64.c => math/acospi.c} (67%) rename lib/libc/mingw/{misc/mb_wc_common.h => math/acospif.c} (66%) rename lib/libc/mingw/{stdio/lseek64.c => math/acospil.c} (64%) rename lib/libc/mingw/{stdio/ftello64.c => math/asinpi.c} (59%) create mode 100644 lib/libc/mingw/math/asinpif.c create mode 100644 lib/libc/mingw/math/asinpil.c create mode 100644 lib/libc/mingw/math/atan2pi.c create mode 100644 lib/libc/mingw/math/atan2pif.c create mode 100644 lib/libc/mingw/math/atan2pil.c create mode 100644 lib/libc/mingw/math/atanpi.c create mode 100644 lib/libc/mingw/math/atanpif.c create mode 100644 lib/libc/mingw/math/atanpil.c create mode 100644 lib/libc/mingw/math/cospi.c create mode 100644 lib/libc/mingw/math/cospif.c create mode 100644 lib/libc/mingw/math/cospil.c create mode 100644 lib/libc/mingw/math/pi_const.h create mode 100644 lib/libc/mingw/math/sinpi.c create mode 100644 lib/libc/mingw/math/sinpif.c create mode 100644 lib/libc/mingw/math/sinpil.c create mode 100644 lib/libc/mingw/math/tanpi.c create mode 100644 lib/libc/mingw/math/tanpif.c create mode 100644 lib/libc/mingw/math/tanpil.c create mode 100644 lib/libc/mingw/misc/__mingw_filename_cp.c create mode 100644 lib/libc/mingw/misc/__mingw_isleadbyte_cp.c create mode 100644 lib/libc/mingw/misc/_assert.c create mode 100644 lib/libc/mingw/misc/btowc.c create mode 100644 lib/libc/mingw/misc/fedisableexcept.c create mode 100644 lib/libc/mingw/misc/feenableexcept.c create mode 100644 lib/libc/mingw/misc/fegetexcept.c create mode 100644 lib/libc/mingw/misc/ftime32.c create mode 100644 lib/libc/mingw/misc/ftime64.c delete mode 100644 lib/libc/mingw/misc/ftruncate.c create mode 100644 lib/libc/mingw/misc/memalignment.c create mode 100644 lib/libc/mingw/misc/memset_explicit.c create mode 100644 lib/libc/mingw/misc/mkdtemp.c create mode 100644 lib/libc/mingw/misc/ucrt_mbsinit.c create mode 100644 lib/libc/mingw/misc/wctob.c create mode 100644 lib/libc/mingw/stdio/__mingw_fix_fstat_finish.c create mode 100644 lib/libc/mingw/stdio/__mingw_fix_stat.h create mode 100644 lib/libc/mingw/stdio/__mingw_fix_stat_fallback_fd.c create mode 100644 lib/libc/mingw/stdio/__mingw_fix_stat_finish.c create mode 100644 lib/libc/mingw/stdio/__mingw_fix_wstat_fallback_fd.c delete mode 100644 lib/libc/mingw/stdio/fseeko32.c delete mode 100644 lib/libc/mingw/stdio/fseeko64.c delete mode 100644 lib/libc/mingw/stdio/ftello.c rename lib/libc/mingw/stdio/{ftruncate64.c => mingw_ftruncate64.c} (95%) create mode 100644 lib/libc/mingw/stdio/msvcr80plus_ftruncate64.c create mode 100644 lib/libc/mingw/stdio/truncate64.c create mode 100644 lib/libc/mingw/stdio/ucrt__scwprintf.c create mode 100644 lib/libc/mingw/stdio/ucrt__swprintf.c create mode 100644 lib/libc/mingw/stdio/ucrt__vscwprintf.c create mode 100644 lib/libc/mingw/stdio/ucrt__vswprintf.c diff --git a/lib/libc/mingw/crt/crt_handler.c b/lib/libc/mingw/crt/crt_handler.c index 6e0f85af568e726d4b3ffcc8b7265517c61c2d6d..191c2da657519456febda9ffbe2582f7556e32d1 100644 --- a/lib/libc/mingw/crt/crt_handler.c +++ b/lib/libc/mingw/crt/crt_handler.c @@ -13,9 +13,14 @@ #include #include +EXCEPTION_DISPOSITION __cdecl __mingw_SEH_error_handler(struct _EXCEPTION_RECORD *, void *, struct _CONTEXT *, void *); + +#if defined(__x86_64__) && !defined(_MSC_VER) && !defined(__SEH__) + #pragma pack(push,1) typedef struct _UNWIND_INFO { - BYTE VersionAndFlags; + BYTE Version:3; + BYTE Flags:5; BYTE PrologSize; BYTE CountOfUnwindCodes; BYTE FrameRegisterAndOffset; @@ -27,16 +32,11 @@ PIMAGE_SECTION_HEADER _FindPESectionByName (const char *); PIMAGE_SECTION_HEADER _FindPESectionExec (size_t); PBYTE _GetPEImageBase (void); -int __mingw_init_ehandler (void); -extern void _fpreset (void); - -#if defined(__x86_64__) && !defined(_MSC_VER) && !defined(__SEH__) -EXCEPTION_DISPOSITION __mingw_SEH_error_handler(struct _EXCEPTION_RECORD *, void *, struct _CONTEXT *, void *); - #define MAX_PDATA_ENTRIES 32 static RUNTIME_FUNCTION emu_pdata[MAX_PDATA_ENTRIES]; static UNWIND_INFO emu_xdata[MAX_PDATA_ENTRIES]; +int __mingw_init_ehandler (void); int __mingw_init_ehandler (void) { @@ -55,7 +55,8 @@ __mingw_init_ehandler (void) /* Fill tables and entries. */ while (e < MAX_PDATA_ENTRIES && (pSec = _FindPESectionExec (e)) != NULL) { - emu_xdata[e].VersionAndFlags = 9; /* UNW_FLAG_EHANDLER | UNW_VERSION */ + emu_xdata[e].Version = 1; + emu_xdata[e].Flags = UNW_FLAG_EHANDLER; emu_xdata[e].AddressOfExceptionHandler = (DWORD)(size_t) ((LPBYTE)__mingw_SEH_error_handler - _ImageBase); emu_pdata[e].BeginAddress = pSec->VirtualAddress; @@ -74,203 +75,45 @@ __mingw_init_ehandler (void) return 1; } -extern void _fpreset (void); +#endif -EXCEPTION_DISPOSITION +#if defined(__i386__) +/* We need to make sure that we align the stack to 16 bytes for the sake of SSE */ +__attribute__((force_align_arg_pointer)) +#endif +EXCEPTION_DISPOSITION __cdecl __mingw_SEH_error_handler (struct _EXCEPTION_RECORD* ExceptionRecord, void *EstablisherFrame __attribute__ ((unused)), - struct _CONTEXT* ContextRecord __attribute__ ((unused)), + struct _CONTEXT* ContextRecord, void *DispatcherContext __attribute__ ((unused))) { - EXCEPTION_DISPOSITION action = ExceptionContinueSearch; /* EXCEPTION_CONTINUE_SEARCH; */ - void (*old_handler) (int); - int reset_fpu = 0; - - switch (ExceptionRecord->ExceptionCode) + long action; + + if (ExceptionRecord->ExceptionFlags & EXCEPTION_UNWINDING) + return ExceptionContinueSearch; + + /* Despite that the CRT _XcptFilter() function is SEH __except filter function, + * it directly executes the handler registered by CRT signal() function. Normally + * the SEH __except handler is called based on the SEH __except filter result. + * + * If the CRT signal handler function (called by _XcptFilter() function) returns + * then the CRT _XcptFilter() returns back to us and the action is set to: + * EXCEPTION_CONTINUE_EXECUTION - execution of the process should continue + * EXCEPTION_EXECUTE_HANDLER - execution of the process should be aborted + * EXCEPTION_CONTINUE_SEARCH - parent SEH handler should be called + */ + action = _XcptFilter(ExceptionRecord->ExceptionCode, &(EXCEPTION_POINTERS){.ExceptionRecord = ExceptionRecord, .ContextRecord = ContextRecord}); + switch (action) { - case EXCEPTION_ACCESS_VIOLATION: - /* test if the user has set SIGSEGV */ - old_handler = signal (SIGSEGV, SIG_DFL); - if (old_handler == SIG_IGN) - { - /* this is undefined if the signal was raised by anything other - than raise (). */ - signal (SIGSEGV, SIG_IGN); - action = 0; //EXCEPTION_CONTINUE_EXECUTION; - } - else if (old_handler != SIG_DFL) - { - /* This means 'old' is a user defined function. Call it */ - (*old_handler) (SIGSEGV); - action = 0; // EXCEPTION_CONTINUE_EXECUTION; - } - else - action = 4; /* EXCEPTION_EXECUTE_HANDLER; */ - break; - case EXCEPTION_ILLEGAL_INSTRUCTION: - case EXCEPTION_PRIV_INSTRUCTION: - /* test if the user has set SIGILL */ - old_handler = signal (SIGILL, SIG_DFL); - if (old_handler == SIG_IGN) - { - /* this is undefined if the signal was raised by anything other - than raise (). */ - signal (SIGILL, SIG_IGN); - action = 0; // EXCEPTION_CONTINUE_EXECUTION; - } - else if (old_handler != SIG_DFL) - { - /* This means 'old' is a user defined function. Call it */ - (*old_handler) (SIGILL); - action = 0; // EXCEPTION_CONTINUE_EXECUTION; - } - else - action = 4; /* EXCEPTION_EXECUTE_HANDLER;*/ - break; - case EXCEPTION_FLT_INVALID_OPERATION: - case EXCEPTION_FLT_DIVIDE_BY_ZERO: - case EXCEPTION_FLT_DENORMAL_OPERAND: - case EXCEPTION_FLT_OVERFLOW: - case EXCEPTION_FLT_UNDERFLOW: - case EXCEPTION_FLT_INEXACT_RESULT: - reset_fpu = 1; - /* fall through. */ - - case EXCEPTION_INT_DIVIDE_BY_ZERO: - /* test if the user has set SIGFPE */ - old_handler = signal (SIGFPE, SIG_DFL); - if (old_handler == SIG_IGN) - { - signal (SIGFPE, SIG_IGN); - if (reset_fpu) - _fpreset (); - action = 0; // EXCEPTION_CONTINUE_EXECUTION; - } - else if (old_handler != SIG_DFL) - { - /* This means 'old' is a user defined function. Call it */ - (*old_handler) (SIGFPE); - action = 0; // EXCEPTION_CONTINUE_EXECUTION; - } - break; - case EXCEPTION_DATATYPE_MISALIGNMENT: - case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: - case EXCEPTION_FLT_STACK_CHECK: - case EXCEPTION_INT_OVERFLOW: - case EXCEPTION_INVALID_HANDLE: - /*case EXCEPTION_POSSIBLE_DEADLOCK: */ - action = 0; // EXCEPTION_CONTINUE_EXECUTION; - break; - default: - break; - } - return action; -} - -#endif - -LPTOP_LEVEL_EXCEPTION_FILTER __mingw_oldexcpt_handler = NULL; - -long CALLBACK -_gnu_exception_handler (EXCEPTION_POINTERS *exception_data); - -#define GCC_MAGIC (('G' << 16) | ('C' << 8) | 'C' | (1U << 29)) + case EXCEPTION_CONTINUE_SEARCH: + return ExceptionContinueSearch; -long CALLBACK -_gnu_exception_handler (EXCEPTION_POINTERS *exception_data) -{ - void (*old_handler) (int); - long action = EXCEPTION_CONTINUE_SEARCH; - int reset_fpu = 0; + case EXCEPTION_CONTINUE_EXECUTION: + return ExceptionContinueExecution; -#ifdef __SEH__ - if ((exception_data->ExceptionRecord->ExceptionCode & 0x20ffffff) == GCC_MAGIC) - { - if ((exception_data->ExceptionRecord->ExceptionFlags & EXCEPTION_NONCONTINUABLE) == 0) - return EXCEPTION_CONTINUE_EXECUTION; - } -#endif - - switch (exception_data->ExceptionRecord->ExceptionCode) - { - case EXCEPTION_ACCESS_VIOLATION: - /* test if the user has set SIGSEGV */ - old_handler = signal (SIGSEGV, SIG_DFL); - if (old_handler == SIG_IGN) - { - /* this is undefined if the signal was raised by anything other - than raise (). */ - signal (SIGSEGV, SIG_IGN); - action = EXCEPTION_CONTINUE_EXECUTION; - } - else if (old_handler != SIG_DFL) - { - /* This means 'old' is a user defined function. Call it */ - (*old_handler) (SIGSEGV); - action = EXCEPTION_CONTINUE_EXECUTION; - } - break; - - case EXCEPTION_ILLEGAL_INSTRUCTION: - case EXCEPTION_PRIV_INSTRUCTION: - /* test if the user has set SIGILL */ - old_handler = signal (SIGILL, SIG_DFL); - if (old_handler == SIG_IGN) - { - /* this is undefined if the signal was raised by anything other - than raise (). */ - signal (SIGILL, SIG_IGN); - action = EXCEPTION_CONTINUE_EXECUTION; - } - else if (old_handler != SIG_DFL) - { - /* This means 'old' is a user defined function. Call it */ - (*old_handler) (SIGILL); - action = EXCEPTION_CONTINUE_EXECUTION; - } - break; - - case EXCEPTION_FLT_INVALID_OPERATION: - case EXCEPTION_FLT_DIVIDE_BY_ZERO: - case EXCEPTION_FLT_DENORMAL_OPERAND: - case EXCEPTION_FLT_OVERFLOW: - case EXCEPTION_FLT_UNDERFLOW: - case EXCEPTION_FLT_INEXACT_RESULT: - reset_fpu = 1; - /* fall through. */ - - case EXCEPTION_INT_DIVIDE_BY_ZERO: - /* test if the user has set SIGFPE */ - old_handler = signal (SIGFPE, SIG_DFL); - if (old_handler == SIG_IGN) - { - signal (SIGFPE, SIG_IGN); - if (reset_fpu) - _fpreset (); - action = EXCEPTION_CONTINUE_EXECUTION; - } - else if (old_handler != SIG_DFL) - { - /* This means 'old' is a user defined function. Call it */ - (*old_handler) (SIGFPE); - action = EXCEPTION_CONTINUE_EXECUTION; - } - break; -#ifdef _WIN64 - case EXCEPTION_DATATYPE_MISALIGNMENT: - case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: - case EXCEPTION_FLT_STACK_CHECK: - case EXCEPTION_INT_OVERFLOW: - case EXCEPTION_INVALID_HANDLE: - /*case EXCEPTION_POSSIBLE_DEADLOCK: */ - action = EXCEPTION_CONTINUE_EXECUTION; - break; -#endif + case EXCEPTION_EXECUTE_HANDLER: default: - break; + /* msvc CRT EXE exception handler just exit process with exception code */ + _exit(ExceptionRecord->ExceptionCode); } - - if (action == EXCEPTION_CONTINUE_SEARCH && __mingw_oldexcpt_handler) - action = (*__mingw_oldexcpt_handler)(exception_data); - return action; } diff --git a/lib/libc/mingw/crt/crtdll.c b/lib/libc/mingw/crt/crtdll.c index 6bee08f596ab4c93557061ba75f785d9d5c14e41..18e831ef952582efb2ad6d6877302b93e11d0606 100644 --- a/lib/libc/mingw/crt/crtdll.c +++ b/lib/libc/mingw/crt/crtdll.c @@ -4,7 +4,6 @@ * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#include #include #include #include @@ -147,7 +146,9 @@ DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) { WINBOOL retcode = TRUE; - __mingw_app_type = 0; + if (dwReason == DLL_PROCESS_ATTACH) + __mingw_app_type = 0; + __native_dllmain_reason = dwReason; if (dwReason == DLL_PROCESS_DETACH && __proc_attached <= 0) { diff --git a/lib/libc/mingw/crt/crtexe.c b/lib/libc/mingw/crt/crtexe.c index 4bc8a92f497aec11ddfcbbf37a46c91c7ae9991d..86c3842f6162720599419fe207c0a2444649f6bd 100644 --- a/lib/libc/mingw/crt/crtexe.c +++ b/lib/libc/mingw/crt/crtexe.c @@ -4,25 +4,37 @@ * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#include #include +#include #include #include #include #include +#include #include #include #include +#include #include #if defined(__SEH__) && (!defined(__clang__) || __clang_major__ >= 7) #define SEH_INLINE_ASM +#ifdef __arm__ +#define ASM_SEH_EXCEPT "%%except" +#else +#define ASM_SEH_EXCEPT "@except" +#endif +#ifdef __arm64ec__ +#define ASM_SEH_PREFIX "\"#" +#define ASM_SEH_SUFFIX "\"" +#else +#define ASM_SEH_PREFIX "" +#define ASM_SEH_SUFFIX "" +#endif #endif extern IMAGE_DOS_HEADER __ImageBase; -extern void _fpreset (void); - int *__cdecl __p__commode(void); #undef _fmode @@ -30,8 +42,7 @@ extern int _fmode; #undef _commode extern int _commode; extern int _dowildcard; - -extern _CRTIMP void __cdecl _initterm(_PVFV *, _PVFV *); +extern int __globallocalestatus; static int __cdecl check_managed_app (void); @@ -51,19 +62,15 @@ extern void __main(void); static _TCHAR **argv; static _TCHAR **envp; -static int mainret=0; static int managedapp; static int has_cctor = 0; -extern LPTOP_LEVEL_EXCEPTION_FILTER __mingw_oldexcpt_handler; extern void _pei386_runtime_relocator (void); -long CALLBACK _gnu_exception_handler (EXCEPTION_POINTERS * exception_data); -static void duplicate_ppstrings (int ac, _TCHAR ***av); - -static int __cdecl pre_c_init (void); -static void __cdecl pre_cpp_init (void); -_CRTALLOC(".CRT$XIAA") _PIFV __mingw_pcinit = pre_c_init; -_CRTALLOC(".CRT$XCAA") _PVFV __mingw_pcppinit = pre_cpp_init; +EXCEPTION_DISPOSITION __cdecl __mingw_SEH_error_handler (struct _EXCEPTION_RECORD *, void *, struct _CONTEXT *, void *); +#if defined(__x86_64__) && !defined(SEH_INLINE_ASM) +int __mingw_init_ehandler (void); +#endif +static int duplicate_ppstrings (int ac, _TCHAR ***av); extern int _MINGW_INSTALL_DEBUG_MATHERR; @@ -85,112 +92,58 @@ __mingw_invalidParameterHandler (const wchar_t * __UNUSED_PARAM_1(expression), #endif } -static int __cdecl -pre_c_init (void) -{ - int ret; - managedapp = check_managed_app (); - if (__mingw_app_type) - __set_app_type(_GUI_APP); - else - __set_app_type (_CONSOLE_APP); +#define GCC_MAGIC (('G' << 16) | ('C' << 8) | 'C' | (1U << 29)) - * __p__fmode() = _fmode; - * __p__commode() = _commode; - -#ifdef _UNICODE - ret = _wsetargv(); -#else - ret = _setargv(); +#if defined(__i386__) || defined(_X86_) +/* We need to make sure that we align the stack to 16 bytes for the sake of SSE */ +__attribute__((force_align_arg_pointer)) #endif - if (ret < 0) - _amsg_exit(8); /* _RT_SPACEARG */ - if (_MINGW_INSTALL_DEBUG_MATHERR == 1) - { - __setusermatherr (_matherr); - } +static LONG WINAPI +cpp_unhandled_exception_filter (EXCEPTION_POINTERS *exception_data) +{ + /* C++ gcc SEH exception is thrown by the libgcc __cxa_throw() function + * (which calls _Unwind_RaiseException()) or _Unwind_ForcedUnwind() function + * as a normal continuable SEH exception with the STATUS_GCC_THROW (0x20474343) + * or STATUS_GCC_FORCED (0x22474343) exception code via the WinAPI RaiseException() + * call. Both _Unwind_RaiseException() and _Unwind_ForcedUnwind() are expected + * to return back to the caller (for example __cxa_throw()) if the exception + * was not handled. So if the gcc SEH exception reaches the application + * top-level exception handler then handler needs to return execution back to + * the place which called the RaiseException(). This is done by returning the + * EXCEPTION_CONTINUE_EXECUTION value from the handler itself. + * This is needed for proper propagation of unhandled C++ gcc exceptions + * into the std::terminate() call or into the application handler + * registered by the std::set_terminate() call. + */ + if ((exception_data->ExceptionRecord->ExceptionCode & 0x20ffffff) == GCC_MAGIC && + !(exception_data->ExceptionRecord->ExceptionFlags & EXCEPTION_NONCONTINUABLE)) + return EXCEPTION_CONTINUE_EXECUTION; - if (__globallocalestatus == -1) - { - } - return 0; + return EXCEPTION_CONTINUE_SEARCH; } -static void __cdecl -pre_cpp_init (void) +static void +safe_flush (void) { - _startupinfo startinfo; - int argret; - - startinfo.newmode = _newmode; - -#ifdef _UNICODE - argret = __wgetmainargs(&argc,&argv,&envp,_dowildcard,&startinfo); -#else - argret = __getmainargs(&argc,&argv,&envp,_dowildcard,&startinfo); -#endif - if (argret < 0) - _amsg_exit(8); /* _RT_SPACEARG */ + fflush (NULL); } static int __tmainCRTStartup (void); int WinMainCRTStartup (void); - __attribute__((used)) /* required due to GNU LD bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30300 */ int WinMainCRTStartup (void) { - int ret = 255; -#ifdef SEH_INLINE_ASM - asm ("\t.l_startw:\n"); -#endif __mingw_app_type = 1; - ret = __tmainCRTStartup (); -#ifdef SEH_INLINE_ASM - asm ("\tnop\n" - "\t.l_endw: nop\n" -#ifdef __arm__ - "\t.seh_handler __C_specific_handler, %except\n" -#else - "\t.seh_handler __C_specific_handler, @except\n" -#endif - "\t.seh_handlerdata\n" - "\t.long 1\n" - "\t.rva .l_startw, .l_endw, _gnu_exception_handler ,.l_endw\n" - "\t.text"); -#endif - return ret; + return __tmainCRTStartup (); } int mainCRTStartup (void); - -#if defined(__x86_64__) && !defined(__SEH__) -int __mingw_init_ehandler (void); -#endif - __attribute__((used)) /* required due to GNU LD bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30300 */ int mainCRTStartup (void) { - int ret = 255; -#ifdef SEH_INLINE_ASM - asm ("\t.l_start:\n"); -#endif __mingw_app_type = 0; - ret = __tmainCRTStartup (); -#ifdef SEH_INLINE_ASM - asm ("\tnop\n" - "\t.l_end: nop\n" -#ifdef __arm__ - "\t.seh_handler __C_specific_handler, %except\n" -#else - "\t.seh_handler __C_specific_handler, @except\n" -#endif - "\t.seh_handlerdata\n" - "\t.long 1\n" - "\t.rva .l_start, .l_end, _gnu_exception_handler ,.l_end\n" - "\t.text"); -#endif - return ret; + return __tmainCRTStartup (); } static @@ -202,9 +155,27 @@ __attribute__((force_align_arg_pointer)) __declspec(noinline) int __tmainCRTStartup (void) { + /* Registration of SEH error handler __mingw_SEH_error_handler used for + * delivering SEH exceptions to registered CRT signal handlers. */ +#if defined(__i386__) + EXCEPTION_REGISTRATION_RECORD exception_record = { + .Next = (EXCEPTION_REGISTRATION_RECORD *)__readfsdword (0), + .Handler = (PEXCEPTION_ROUTINE)(INT_PTR)__mingw_SEH_error_handler, + }; + __writefsdword (0, (DWORD)&exception_record); /* dynamically register SEH error handler, it is active until manually unregistered */ +#elif defined(SEH_INLINE_ASM) + asm volatile (".seh_handler " ASM_SEH_PREFIX "%c0" ASM_SEH_SUFFIX ", " ASM_SEH_EXCEPT :: "i" (__mingw_SEH_error_handler)); /* statically register SEH error handler, it is active only in the current function */ +#elif defined(__x86_64__) + __mingw_init_ehandler (); /* dynamically register SEH error handler for all functions, it is active until program terminates */ +#else +#error unsupported platform +#endif + void *lock_free = NULL; void *fiberid = ((PNT_TIB)NtCurrentTeb())->StackBase; BOOL nested = FALSE; + _startupinfo startinfo; + int ret = 0; while((lock_free = InterlockedCompareExchangePointer (&__native_startup_lock, fiberid, NULL)) != 0) { @@ -222,48 +193,97 @@ __tmainCRTStartup (void) else if (__native_startup_state == __uninitialized) { __native_startup_state = __initializing; + + /* Before the UCRT stderr could be opened in full buffering + * mode, for example when output goes to a pipe. + * + * The C standard disallows full buffering on stderr. Note + * that line buffering is the same as full buffering in the + * Windows CRT, so we have to disable buffering altogether. + */ + setvbuf (stderr, NULL, _IONBF, 0); + + /* The C RunTime library flushes stdio streams in response to + * DLL_PROCESS_DETACH. This is not entirely safe; other DLLs + * may cause instant termination during process shutdown. + * Here we add an exit handler to flush streams safely. + */ + if (atexit (safe_flush) != 0) + abort (); + + _pei386_runtime_relocator (); + _set_invalid_parameter_handler (__mingw_invalidParameterHandler); + _fpreset (); + + managedapp = check_managed_app (); + if (__mingw_app_type) + __set_app_type (_GUI_APP); + else + __set_app_type (_CONSOLE_APP); + + *__p__fmode () = _fmode; + *__p__commode () = _commode; + +#ifdef _UNICODE + ret = _wsetargv (); +#else + ret = _setargv (); +#endif + if (ret < 0) + _amsg_exit (8); /* _RT_SPACEARG */ + + if (_MINGW_INSTALL_DEBUG_MATHERR == 1) + __setusermatherr (_matherr); + + if (__globallocalestatus == -1) + _configthreadlocale (-1); + if (_initterm_e (__xi_a, __xi_z) != 0) - return 255; - } - else - has_cctor = 1; + _amsg_exit (10); /* _RT_ABORT */ - if (__native_startup_state == __initializing) - { + startinfo.newmode = _newmode; +#ifdef _UNICODE + ret = __wgetmainargs (&argc, &argv, &envp, _dowildcard, &startinfo); +#else + ret = __getmainargs (&argc, &argv, &envp, _dowildcard, &startinfo); +#endif + if (ret < 0) + _amsg_exit (8); /* _RT_SPACEARG */ + + ret = duplicate_ppstrings (argc, &argv); + if (ret != 0) + _amsg_exit (8); /* _RT_SPACEARG */ + + SetUnhandledExceptionFilter (cpp_unhandled_exception_filter); _initterm (__xc_a, __xc_z); + __main (); /* C++ initialization. */ + __native_startup_state = __initialized; } - _ASSERTE(__native_startup_state == __initialized); + else + has_cctor = 1; if (! nested) (VOID)InterlockedExchangePointer (&__native_startup_lock, NULL); if (__dyn_tls_init_callback != NULL) __dyn_tls_init_callback (NULL, DLL_THREAD_ATTACH, NULL); - - _pei386_runtime_relocator (); - __mingw_oldexcpt_handler = SetUnhandledExceptionFilter (_gnu_exception_handler); -#if defined(__x86_64__) && !defined(__SEH__) - __mingw_init_ehandler (); -#endif - _set_invalid_parameter_handler (__mingw_invalidParameterHandler); - - _fpreset (); - duplicate_ppstrings (argc, &argv); - __main (); /* C++ initialization. */ #ifdef _UNICODE __winitenv = envp; #else __initenv = envp; #endif - mainret = _tmain (argc, argv, envp); + ret = _tmain (argc, argv, envp); if (!managedapp) - exit (mainret); + exit (ret); if (has_cctor == 0) _cexit (); - return mainret; +#if defined(__i386__) + __writefsdword (0, (DWORD)exception_record.Next); /* dynamically unregister SEH error handler */ +#endif + return ret; } extern int __mingw_initltsdrot_force; @@ -307,21 +327,24 @@ check_managed_app (void) return 0; } -static void duplicate_ppstrings (int ac, _TCHAR ***av) +static int duplicate_ppstrings (int ac, _TCHAR ***av) { _TCHAR **avl; int i; _TCHAR **n = (_TCHAR **) malloc (sizeof (_TCHAR *) * (ac + 1)); + if (!n) return 1; avl=*av; for (i=0; i < ac; i++) { size_t l = sizeof (_TCHAR) * (_tcslen (avl[i]) + 1); n[i] = (_TCHAR *) malloc (l); + if (!n[i]) return 1; memcpy (n[i], avl[i], l); } n[i] = NULL; *av = n; + return 0; } int __cdecl atexit (_PVFV func) diff --git a/lib/libc/mingw/crt/crtexewin.c b/lib/libc/mingw/crt/crtexewin.c index af860f3e76dadf1445235e24d7582c9a414b6bff..52d12bd1202987c442760d57ed9b70dffdff223d 100644 --- a/lib/libc/mingw/crt/crtexewin.c +++ b/lib/libc/mingw/crt/crtexewin.c @@ -7,10 +7,6 @@ #include #include -#ifndef _UNICODE -#include -#endif - #define SPACECHAR _T(' ') #define DQUOTECHAR _T('\"') @@ -40,7 +36,7 @@ int _tmain (int __UNUSED_PARAM(argc), if (*lpCmdLine == DQUOTECHAR) inDoubleQuote = !inDoubleQuote; #ifndef _UNICODE - if (_ismbblead (*lpCmdLine)) + if (IsDBCSLeadByte (*lpCmdLine)) { if (lpCmdLine[1]) ++lpCmdLine; diff --git a/lib/libc/mingw/crt/gccmain.c b/lib/libc/mingw/crt/gccmain.c index fc0e35003cd10cfa95b22fe8d50bdd31f980a12a..13ef04fdba2009b9992ed944f355174201c03c1f 100644 --- a/lib/libc/mingw/crt/gccmain.c +++ b/lib/libc/mingw/crt/gccmain.c @@ -49,6 +49,7 @@ __do_global_ctors (void) static int initialized = 0; +__attribute__((used)) /* required for gcc -flto -Ofast */ void __main (void) { diff --git a/lib/libc/mingw/crt/pseudo-reloc.c b/lib/libc/mingw/crt/pseudo-reloc.c index d6eb089d461ead610244c5b91f0cbc76b2be8dbb..dd08e718aeef55d48bdf0d19ef35a173f8fb8840 100644 --- a/lib/libc/mingw/crt/pseudo-reloc.c +++ b/lib/libc/mingw/crt/pseudo-reloc.c @@ -141,8 +141,7 @@ __report_error (const char *msg, ...) cygwin_internal (CW_EXIT_PROCESS, STATUS_ILLEGAL_DLL_PSEUDO_RELOCATION, 1); - /* not reached, but silences noreturn warning */ - abort (); + __builtin_unreachable (); #else va_list argp; va_start (argp, msg); @@ -196,7 +195,6 @@ mark_section_writable (LPVOID addr) if (!h) { __report_error ("Address %p has no image-section", addr); - return; } the_secs[i].hash = h; the_secs[i].old_protect = 0; @@ -206,7 +204,6 @@ mark_section_writable (LPVOID addr) { __report_error (" VirtualQuery failed for %d bytes at address %p", (int) h->Misc.VirtualSize, the_secs[i].sec_start); - return; } if (b.Protect != PAGE_EXECUTE_READWRITE && b.Protect != PAGE_READWRITE @@ -380,7 +377,6 @@ do_pseudo_reloc (void * start, void * end, void * base) { __report_error (" Unknown pseudo relocation protocol version %d.\n", (int) v2_hdr->version); - return; } /************************* @@ -480,7 +476,7 @@ do_pseudo_reloc (void * start, void * end, void * base) } } -__attribute__((used)) /* required due to bug in gcc / ld */ +__attribute__((used)) /* required due to GNU LD bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30343 */ void _pei386_runtime_relocator (void) { diff --git a/lib/libc/mingw/ctype/_iscsym_l.c b/lib/libc/mingw/ctype/_iscsym_l.c new file mode 100644 index 0000000000000000000000000000000000000000..f2aab0460a09436646225f610742c31ce13c5f6b --- /dev/null +++ b/lib/libc/mingw/ctype/_iscsym_l.c @@ -0,0 +1,22 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#undef __MSVCRT_VERSION__ +#define __MSVCRT_VERSION__ 0x0800 + +#define _CTYPE_DISABLE_MACROS +#include + +/** + * See ctype.h for rationale. + * + * Note that import symbol __MINGW_IMP_SYMBOL(_iscsym_l) is not provided on + * purpose. + */ + +int __cdecl _iscsym_l (wint_t _C, _locale_t _Locale) { + return (_isalnum_l (_C, _Locale) || _C == '_'); +} diff --git a/lib/libc/mingw/ctype/_iscsymf_l.c b/lib/libc/mingw/ctype/_iscsymf_l.c new file mode 100644 index 0000000000000000000000000000000000000000..45aa8848cb68d51c994922e29a78e12d6430ee30 --- /dev/null +++ b/lib/libc/mingw/ctype/_iscsymf_l.c @@ -0,0 +1,22 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#undef __MSVCRT_VERSION__ +#define __MSVCRT_VERSION__ 0x0800 + +#define _CTYPE_DISABLE_MACROS +#include + +/** + * See ctype.h for rationale. + * + * Note that import symbol __MINGW_IMP_SYMBOL(_iscsymf_l) is not provided on + * purpose. + */ + +int __cdecl _iscsymf_l (wint_t _C, _locale_t _Locale) { + return (_isalpha_l (_C, _Locale) || _C == '_'); +} diff --git a/lib/libc/mingw/ctype/iswctype.c b/lib/libc/mingw/ctype/iswctype.c new file mode 100644 index 0000000000000000000000000000000000000000..c1773349674a234ce8e89163ee399fe74e1ea01d --- /dev/null +++ b/lib/libc/mingw/ctype/iswctype.c @@ -0,0 +1,43 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#define _CTYPE_DISABLE_MACROS +#include + +/** + * CRT's `iswctype` has inconsistent behavior for TAB character when used with + * `wctype_t` objects returned by `wctype` function which contain `_BLANK` bit. + * + * In all CRTs up to msvcrt.dll version 6.1, it returns zero in "C" locale + * and non-zero otherwise. + * + * Since msvcr70.dll up to msvcr110.dll it always returns non-zero; + * OS-specific versions of msvcrt.dll follow this behavior. + * + * In msvcr120.dll and UCRT it always returns zero. + * + * This behavior affects both `iswblank` and `iswprint` functions; + * either or both of them have non-conforming behavior. + */ + +/** + * This is CRT's `iswctype` renamed to `__msvcrt_iswctype`. + */ +extern int (__cdecl *__MINGW_IMP_SYMBOL(__msvcrt_iswctype)) (wint_t, wctype_t); + +int iswctype (wint_t _C, wctype_t _Type) { + /** + * `wctype_t` object returned for "print" character class contains _BLANK; + * make sure TAB is handled correctly. + */ + if (_C == L'\t' && (_Type & _BLANK)) { + return (_Type == _BLANK ? _BLANK : 0); + } + + return __MINGW_IMP_SYMBOL (__msvcrt_iswctype) (_C, _Type); +} + +int (__cdecl *__MINGW_IMP_SYMBOL (iswctype)) (wint_t, wctype_t) = iswctype; diff --git a/lib/libc/mingw/ctype/towctrans.c b/lib/libc/mingw/ctype/towctrans.c new file mode 100644 index 0000000000000000000000000000000000000000..bc4bf6019d9d4df72a3b87f1ab21d676e2fcd522 --- /dev/null +++ b/lib/libc/mingw/ctype/towctrans.c @@ -0,0 +1,33 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#define _CTYPE_DISABLE_MACROS +#include + +/** + * Both `wctrans` and `towctrans` functions were added in msvcr120.dll. + * + * CRT's `towctrans` does not properly handle case when second argument is + * `(wctrans_t)0`. + */ + +/** + * This is CRT's `towctrans` renamed to `__msvcrt_towctrans`. + */ +extern wint_t (__cdecl *__MINGW_IMP_SYMBOL (__msvcrt_towctrans)) (wint_t, wctrans_t); + +wint_t __cdecl towctrans (wint_t _C, wctrans_t _Type) { + /** + * POSIX requires that if `_Type` is zero, `_C` is returned unchanged. + */ + if (_Type == (wctrans_t) 0) { + return _C; + } + + return __MINGW_IMP_SYMBOL (__msvcrt_towctrans) (_C, _Type); +} + +wint_t (__cdecl *__MINGW_IMP_SYMBOL (towctrans)) (wint_t, wctrans_t) = towctrans; diff --git a/lib/libc/mingw/def-include/crt-aliases.def.in b/lib/libc/mingw/def-include/crt-aliases.def.in index 2c9090b9e13031ea6d68324e8f508a2a8e5a84cf..1dd30d0a2d00c7c6f67f2dd683970f85586af963 100644 --- a/lib/libc/mingw/def-include/crt-aliases.def.in +++ b/lib/libc/mingw/def-include/crt-aliases.def.in @@ -64,20 +64,13 @@ ADD_UNDERSCORE(filelength) ADD_UNDERSCORE(fileno) ; ADD_UNDERSCORE(flushall) ADD_UNDERSCORE(fputchar) -#ifdef FIXED_SIZE_SYMBOLS -#ifndef CRTDLL -ADD_UNDERSCORE(fstat) -#endif -#else +#if defined(UCRTBASE) F32(fstat == _fstat32) F64(fstat == _fstat64i32) -#endif -#ifdef FIXED_SIZE_SYMBOLS -ADD_UNDERSCORE(ftime) #else -F32(ftime == _ftime32) -F64(ftime == _ftime64) +; fstat for non-UCRT is provided by mingw to workaround S_IFDIR issue in _fstat #endif +; ftime is provided in misc/ftime32.c or misc/ftime64.c as MS _ftime is not ABI compatible with POSIX ftime #if defined(UCRTBASE) ; HUGE alias and _HUGE variable are provided by math/_huge.c #elif defined(CRTDLL) @@ -232,7 +225,7 @@ ADD_UNDERSCORE(wcsupr) #ifdef UCRTBASE ; hypot is natively exported from UCRT #else -ADD_UNDERSCORE(hypot) +; hypot is provided by math/hypot.c as a wrapper around _hypot #endif ADD_UNDERSCORE(j0) ADD_UNDERSCORE(j1) @@ -248,9 +241,6 @@ getwchar == _fgetwchar putwc == fputwc putwchar == _fputwchar #endif -#ifdef USE_WCSTOK_S_FOR_WCSTOK -wcstok == wcstok_s -#endif ; This is list of symbol aliases for C99 functions ; ADD_UNDERSCORE(logb) @@ -292,29 +282,46 @@ ADD_DOUBLE_UNDERSCORE(toascii) ADD_UNDERSCORE(pclose) ADD_UNDERSCORE(popen) #endif +fseeko == fseek +ftello == ftell +ftruncate == _chsize ; ADD_UNDERSCORE(scalb) ; This is list of symbol aliases for Large File Specification (extension to Single UNIX Specification) +; https://unix.org/version2/whatsnew/lfs20mar.html#3.1 section 3.1 Transitional Extensions +creat64 == _creat +open64 == _open +fopen64 == fopen +freopen64 == freopen +#ifndef NO_TMPFILE_ALIAS +tmpfile64 == tmpfile +#endif #ifndef NO_FPOS64_ALIASES ; fgetpos and fsetpos are already 64-bit fgetpos64 == fgetpos fsetpos64 == fsetpos +lseek64 == _lseeki64 #endif #ifdef UCRTBASE +fstat32 == _fstat32 +fstat32i64 == _fstat32i64 +fstat64 == _fstat64 +fstat64i32 == _fstat64i32 stat32 == _stat32 stat32i64 == _stat32i64 stat64 == _stat64 stat64i32 == _stat64i32 #else +; fstat for non-UCRT is provided by mingw to workaround S_IFDIR issue in _fstat ; stat for non-UCRT is provided by mingw to workaround trailing slash issue in _stat #endif #ifdef FIXED_SIZE_SYMBOLS -// NO_FIXED_SIZE_64_ALIAS means that DLL provides the native _fstat64 symbol -#if defined(NO_FIXED_SIZE_64_ALIAS) && !defined(NO_FSTAT64_ALIAS) -fstat64 == _fstat64 +#ifdef WITH_FSEEKO64_ALIAS +fseeko64 == _fseeki64 #endif #else -fstat64 == _fstat64 +fseeko64 == _fseeki64 +ftello64 == _ftelli64 #endif ; This is list of symbol aliases for GNU functions which are not part of POSIX or ISO C @@ -325,6 +332,25 @@ strncasecmp == _strnicmp ; Some symbols in some version of CRT library were added and some other symbols were removed or renamed ; This list provides some level of backward and forward compatibility +#ifdef WITH_SETJMP3_ALIAS +; crtdll.dll and msvcrt10.dll have only old _setjmp function which does not take +; additional variadic arguments and uses smaller jmpbuf structure. +; mingw-w64 calls _setjmp3 only with zero additional arguments and because number +; of additional arguments is passed on the stack which is cleanup by the caller, +; it means that the mingw-w64 usage of _setjmp3 is ABI compatible with the old +; _setjmp function which is available also in crtdll.dll and msvcrt10.dll libs. +; It heavily depends on the mingw-w64-headers/crt/setjmp.h implementation. +; So this definition allows crtdll.dll and msvcrt10.dll applications to call +; setjmp() macro from setjmp.h, which expands to _setjmp3() function call and +; which is aliased to _setjmp symbol for crtdll.dll and msvcrt10.dll libraries. +F_I386(_setjmp3 == _setjmp) +#endif + +#ifdef UCRTBASE +F_NON_ARM64(_setjmp == __intrinsic_setjmp) +F64(_setjmpex == __intrinsic_setjmpex) +#endif + #ifndef NO_STRCMPI_ALIAS _strcmpi == _stricmp #endif @@ -551,6 +577,7 @@ __p__daylight == __daylight __p__dstbias == __dstbias __p__timezone == __timezone __p__tzname == __tzname +_XcptFilter == _seh_filter_exe #endif ; This is list of printf/scanf symbol aliases with __ms_ prefix diff --git a/lib/libc/mingw/def-include/func.def.in b/lib/libc/mingw/def-include/func.def.in index 1d542a1f47a7b6f20c8fb0966344e05af89881f5..7663e01b63a9cfbd47a907f613baba0ece33fe90 100644 --- a/lib/libc/mingw/def-include/func.def.in +++ b/lib/libc/mingw/def-include/func.def.in @@ -16,29 +16,35 @@ #define F64(x) x #define F_X64(x) x #define F_X86_ANY(x) x +#define F_X86_NATIVE(x) x #define F_NON_I386(x) x #define F_NON_ARM64(x) x +#if defined(__arm64ec__) +#define F_ARM_ANY(x) x +#undef F_X86_NATIVE +#endif #elif defined(__i386__) #define F32(x) x #define F_I386(x) x #define F_X86_ANY(x) x +#define F_X86_NATIVE(x) x #define F_NON_X64(x) x #define F_NON_ARM64(x) x #elif defined(__arm__) #define F32(x) x #define F_ARM32(x) x -#define F_ARM_ANY(x) x +#define F_ARM_NATIVE(x) x #define F_NON_I386(x) x #define F_NON_X64(x) x #define F_NON_ARM64(x) x #elif defined(__aarch64__) #define F64(x) x #define F_ARM64(x) x -#define F_ARM_ANY(x) x +#define F_ARM_NATIVE(x) x #define F_NON_I386(x) x #define F_NON_X64(x) x #else -#error No DEF_ is defined +#error Unrecognized architecture #endif #ifndef F32 @@ -50,14 +56,20 @@ #ifndef F_X86_ANY #define F_X86_ANY(x) #endif +#ifndef F_X86_NATIVE(x) +#define F_X86_NATIVE(x) +#endif #ifndef F_I386 #define F_I386(x) #endif #ifndef F_X64 #define F_X64(x) #endif +#ifndef F_ARM_NATIVE +#define F_ARM_NATIVE(x) +#endif #ifndef F_ARM_ANY -#define F_ARM_ANY(x) +#define F_ARM_ANY(x) F_ARM_NATIVE(x) #endif #ifndef F_ARM32 #define F_ARM32(x) diff --git a/lib/libc/mingw/gdtoa/dtoa.c b/lib/libc/mingw/gdtoa/dtoa.c index 6c8711303d9f5d9bebe00444f6c8e9a1ea6159be..ffbc39487f9ca1706fd32339c19ffd0cf631a1ef 100644 --- a/lib/libc/mingw/gdtoa/dtoa.c +++ b/lib/libc/mingw/gdtoa/dtoa.c @@ -109,7 +109,7 @@ char *__dtoa (double d0, int mode, int ndigits, int *decpt, int *sign, char **rv */ int bbits, b2, b5, be, dig, i, ieps, ilim, ilim0, ilim1, - j, j2, k, k0, k_check, leftright, m2, m5, s2, s5, + j, j2 = 0, k, k0, k_check, leftright, m2, m5, s2, s5, spec_case, try_quick; Long L; #ifndef Sudden_Underflow diff --git a/lib/libc/mingw/gdtoa/g__fmt.c b/lib/libc/mingw/gdtoa/g__fmt.c index 98ef7be140c9952bf85325951875c4f578a64c74..762589d183416a6e4c76528508082026836d0099 100644 --- a/lib/libc/mingw/gdtoa/g__fmt.c +++ b/lib/libc/mingw/gdtoa/g__fmt.c @@ -172,7 +172,7 @@ __add_nanbits_D2A(char *b, size_t blen, ULong *bits, int nb) char *rv; int i, j; size_t L; - static char Hexdig[16] = "0123456789abcdef"; + static char Hexdig[17] = "0123456789abcdef"; while(!bits[--nb]) if (!nb) diff --git a/lib/libc/mingw/include/oscalls.h b/lib/libc/mingw/include/oscalls.h deleted file mode 100644 index 670a6f7485347d6be94946964736b970c6f4e190..0000000000000000000000000000000000000000 --- a/lib/libc/mingw/include/oscalls.h +++ /dev/null @@ -1,60 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ - -#ifndef _INC_OSCALLS -#define _INC_OSCALLS - -#ifndef _CRTBLD -#error ERROR: Use of C runtime library internal header file. -#endif - -#include - -#ifdef NULL -#undef NULL -#endif - -#define NOMINMAX - -#define _WIN32_FUSION 0x0100 -#include - -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else -#define NULL ((void *)0) -#endif -#endif - -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable:4214) -#endif - -typedef struct _FTIME -{ - unsigned short twosecs : 5; - unsigned short minutes : 6; - unsigned short hours : 5; -} FTIME; - -typedef FTIME *PFTIME; - -typedef struct _FDATE -{ - unsigned short day : 5; - unsigned short month : 4; - unsigned short year : 7; -} FDATE; - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -typedef FDATE *PFDATE; - -#endif diff --git a/lib/libc/mingw/include/sect_attribs.h b/lib/libc/mingw/include/sect_attribs.h index 66087d7827fdf8a388a9e70a796b84982d2fb175..7621e0494d1b744da0b1dc0e8b053a6bc85a8ab5 100644 --- a/lib/libc/mingw/include/sect_attribs.h +++ b/lib/libc/mingw/include/sect_attribs.h @@ -6,60 +6,54 @@ #if defined(_MSC_VER) -#if defined(_M_IA64) || defined(_M_AMD64) -#define _ATTRIBUTES -#else -#define _ATTRIBUTES shared -#endif - /* Reference list of existing section for msvcrt. */ -#pragma section(".CRTMP$XCA",long,_ATTRIBUTES) -#pragma section(".CRTMP$XCZ",long,_ATTRIBUTES) -#pragma section(".CRTMP$XIA",long,_ATTRIBUTES) -#pragma section(".CRTMP$XIZ",long,_ATTRIBUTES) +#pragma section(".CRTMP$XCA", long, read) +#pragma section(".CRTMP$XCZ", long, read) +#pragma section(".CRTMP$XIA", long, read) +#pragma section(".CRTMP$XIZ", long, read) -#pragma section(".CRTMA$XCA",long,_ATTRIBUTES) -#pragma section(".CRTMA$XCZ",long,_ATTRIBUTES) -#pragma section(".CRTMA$XIA",long,_ATTRIBUTES) -#pragma section(".CRTMA$XIZ",long,_ATTRIBUTES) +#pragma section(".CRTMA$XCA", long, read) +#pragma section(".CRTMA$XCZ", long, read) +#pragma section(".CRTMA$XIA", long, read) +#pragma section(".CRTMA$XIZ", long, read) -#pragma section(".CRTVT$XCA",long,_ATTRIBUTES) -#pragma section(".CRTVT$XCZ",long,_ATTRIBUTES) +#pragma section(".CRTVT$XCA", long, read) +#pragma section(".CRTVT$XCZ", long, read) -#pragma section(".CRT$XCA",long,_ATTRIBUTES) -#pragma section(".CRT$XCAA",long,_ATTRIBUTES) -#pragma section(".CRT$XCC",long,_ATTRIBUTES) -#pragma section(".CRT$XCZ",long,_ATTRIBUTES) -#pragma section(".CRT$XDA",long,_ATTRIBUTES) -#pragma section(".CRT$XDC",long,_ATTRIBUTES) -#pragma section(".CRT$XDZ",long,_ATTRIBUTES) -#pragma section(".CRT$XIA",long,_ATTRIBUTES) -#pragma section(".CRT$XIAA",long,_ATTRIBUTES) -#pragma section(".CRT$XIC",long,_ATTRIBUTES) -#pragma section(".CRT$XID",long,_ATTRIBUTES) -#pragma section(".CRT$XIY",long,_ATTRIBUTES) -#pragma section(".CRT$XIZ",long,_ATTRIBUTES) -#pragma section(".CRT$XLA",long,_ATTRIBUTES) -#pragma section(".CRT$XLC",long,_ATTRIBUTES) -#pragma section(".CRT$XLD",long,_ATTRIBUTES) -#pragma section(".CRT$XLZ",long,_ATTRIBUTES) -#pragma section(".CRT$XPA",long,_ATTRIBUTES) -#pragma section(".CRT$XPX",long,_ATTRIBUTES) -#pragma section(".CRT$XPXA",long,_ATTRIBUTES) -#pragma section(".CRT$XPZ",long,_ATTRIBUTES) -#pragma section(".CRT$XTA",long,_ATTRIBUTES) -#pragma section(".CRT$XTB",long,_ATTRIBUTES) -#pragma section(".CRT$XTX",long,_ATTRIBUTES) -#pragma section(".CRT$XTZ",long,_ATTRIBUTES) -#pragma section(".rdata$T",long,read) -#pragma section(".rtc$IAA",long,read) -#pragma section(".rtc$IZZ",long,read) -#pragma section(".rtc$TAA",long,read) -#pragma section(".rtc$TZZ",long,read) +#pragma section(".CRT$XCA", long, read) +#pragma section(".CRT$XCAA", long, read) +#pragma section(".CRT$XCC", long, read) +#pragma section(".CRT$XCZ", long, read) +#pragma section(".CRT$XDA", long, read) +#pragma section(".CRT$XDC", long, read) +#pragma section(".CRT$XDZ", long, read) +#pragma section(".CRT$XIA", long, read) +#pragma section(".CRT$XIAA", long, read) +#pragma section(".CRT$XIC", long, read) +#pragma section(".CRT$XID", long, read) +#pragma section(".CRT$XIY", long, read) +#pragma section(".CRT$XIZ", long, read) +#pragma section(".CRT$XLA", long, read) +#pragma section(".CRT$XLC", long, read) +#pragma section(".CRT$XLD", long, read) +#pragma section(".CRT$XLZ", long, read) +#pragma section(".CRT$XPA", long, read) +#pragma section(".CRT$XPX", long, read) +#pragma section(".CRT$XPXA", long, read) +#pragma section(".CRT$XPZ", long, read) +#pragma section(".CRT$XTA", long, read) +#pragma section(".CRT$XTB", long, read) +#pragma section(".CRT$XTX", long, read) +#pragma section(".CRT$XTZ", long, read) +#pragma section(".rdata$T", long, read) +#pragma section(".rtc$IAA", long, read) +#pragma section(".rtc$IZZ", long, read) +#pragma section(".rtc$TAA", long, read) +#pragma section(".rtc$TZZ", long, read) /* for tlssup.c: */ -#pragma section(".tls",long,read,write) -#pragma section(".tls$AAA",long,read,write) -#pragma section(".tls$ZZZ",long,read,write) +#pragma section(".tls", long) +#pragma section(".tls$AAA", long) +#pragma section(".tls$ZZZ", long) #endif /* _MSC_VER */ #if defined(_MSC_VER) @@ -69,4 +63,3 @@ #else #error Your compiler is not supported. #endif - diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-convert-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-convert-l1-1-0.def.in index d5e4f259c1a8ba7c0edf4828a821a6488e44074b..55426497a2a73562953a7b889ff4c11f7555cf0f 100644 --- a/lib/libc/mingw/lib-common/api-ms-win-crt-convert-l1-1-0.def.in +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-convert-l1-1-0.def.in @@ -93,7 +93,7 @@ atof atoi atol atoll -btowc +; btowc ; replaced for consistency with wctob c16rtomb c32rtomb mbrtoc16 @@ -128,7 +128,7 @@ wcstombs_s wcstoul wcstoull wcstoumax -wctob +; wctob ; replaced, CRT version may sign-extend its return value wctomb wctomb_s wctrans diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def.in index a0665a3a3d3112ae808b50bf7d9ef57d039df6bc..bdaa9bcd8dc5cb45cdfe08e34ffb24b11ebe2ba0 100644 --- a/lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def.in +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def.in @@ -37,10 +37,13 @@ F64(_fstat == _fstat64i32) F32(_fstati64 == _fstat32i64) F64(_fstati64 == _fstat64) _fstat32 +fstat32 == _fstat32 _fstat32i64 +fstat32i64 == _fstat32i64 _fstat64 fstat64 == _fstat64 _fstat64i32 +fstat64i32 == _fstat64i32 _fullpath _getdiskfree _getdrive diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-math-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-math-l1-1-0.def.in index 33b4f37cc83209ec1feb86669ce6a9d96101817a..17446e597d6a10f2e98736bc3196b15e319653b5 100644 --- a/lib/libc/mingw/lib-common/api-ms-win-crt-math-l1-1-0.def.in +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-math-l1-1-0.def.in @@ -266,7 +266,7 @@ expm1 expm1f F_LD64(expm1l) ; Can't use long double functions from the CRT on x86 fabs -F_ARM_ANY(fabsf) +F_ARM_NATIVE(fabsf) fdim fdimf F_LD64(fdiml) ; Can't use long double functions from the CRT on x86 diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-private-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-private-l1-1-0.def.in index ce9ff54afd3f306b14ac4d345ef0149e85315ef8..a2bce9fcafb799697184dd341b115f810360f622 100644 --- a/lib/libc/mingw/lib-common/api-ms-win-crt-private-l1-1-0.def.in +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-private-l1-1-0.def.in @@ -12,8 +12,8 @@ _FindAndUnlinkFrame F_X64(_GetImageBase) F_X64(_GetThrowImageBase) _IsExceptionObjectToBeDestroyed -F_I386(_NLG_Dispatch2@4) -F_I386(_NLG_Return@12) +F_I386(_NLG_Dispatch2) ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +F_I386(_NLG_Return) ; msvc symbol is without decoration but callee pop stack (like stdcall @12) F_I386(_NLG_Return2) F_X64(_SetImageBase) F_X64(_SetThrowImageBase) @@ -46,7 +46,9 @@ __dcrt_get_wide_environment_from_os __dcrt_initial_narrow_environment DATA F_I386(__intrinsic_abnormal_termination) F_NON_ARM64(__intrinsic_setjmp) +F_NON_ARM64(_setjmp == __intrinsic_setjmp) F64(__intrinsic_setjmpex) +F64(_setjmpex == __intrinsic_setjmpex) __processing_throw __report_gsfailure __std_exception_copy diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-runtime-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-runtime-l1-1-0.def.in index 06a8f3790bf62aad0a685e25d203958a497debb7..ef0aa03bad9b7757583da5d91d1cef812aaec9d1 100644 --- a/lib/libc/mingw/lib-common/api-ms-win-crt-runtime-l1-1-0.def.in +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-runtime-l1-1-0.def.in @@ -24,7 +24,7 @@ __threadid __wcserror __wcserror_s ; DATA set manually -_assert +__msvcrt_assert DATA == _assert ; mingw-w64 provides _assert() function as wrapper around renamed __msvcrt_assert symbol _beginthread _beginthreadex _c_exit @@ -73,6 +73,7 @@ _register_thread_local_exe_atexit_callback _resetstkoflw _seh_filter_dll _seh_filter_exe +_XcptFilter == _seh_filter_exe _set_abort_behavior _set_app_type __set_app_type == _set_app_type diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-stdio-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-stdio-l1-1-0.def index d23469ac26abbc3c036d489101b55c355e4fdd64..5c1669134dc054667061f9bf356313094ec87a6d 100644 --- a/lib/libc/mingw/lib-common/api-ms-win-crt-stdio-l1-1-0.def +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-stdio-l1-1-0.def @@ -25,12 +25,14 @@ __stdio_common_vswprintf_s __stdio_common_vswscanf _chsize chsize == _chsize +ftruncate == _chsize _chsize_s _close close == _close _commit _creat creat == _creat +creat64 == _creat _dup dup == _dup _dup2 @@ -63,10 +65,12 @@ _fread_nolock _fread_nolock_s _fseek_nolock _fseeki64 +fseeko64 == _fseeki64 _fseeki64_nolock _fsopen _ftell_nolock _ftelli64 +ftello64 == _ftelli64 _ftelli64_nolock _fwrite_nolock _get_fmode @@ -91,11 +95,13 @@ _locking _lseek lseek == _lseek _lseeki64 +lseek64 == _lseeki64 _mktemp mktemp == _mktemp _mktemp_s _open open == _open +open64 == _open _open_osfhandle _pclose pclose == _pclose @@ -160,6 +166,7 @@ fgets fgetwc fgetws fopen +fopen64 == fopen fopen_s fputc fputs @@ -168,11 +175,14 @@ fputws fread fread_s freopen +freopen64 == freopen freopen_s fseek +fseeko == fseek fsetpos fsetpos64 == fsetpos ftell +ftello == ftell fwrite getc getchar @@ -189,6 +199,7 @@ rewind setbuf setvbuf tmpfile +tmpfile64 == tmpfile tmpfile_s tmpnam tmpnam_s diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-string-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-string-l1-1-0.def index ebf681501baf3801e9983cb54fbf58914ba0b164..eab139bfd592788aa444e567ae1d74ca5ad6932e 100644 --- a/lib/libc/mingw/lib-common/api-ms-win-crt-string-l1-1-0.def +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-string-l1-1-0.def @@ -147,7 +147,7 @@ iswalpha iswascii iswblank iswcntrl -iswctype +__msvcrt_iswctype DATA == iswctype ; mingw-w64 provides real iswctype as a wrapper around renamed __msvcrt_iswctype iswdigit iswgraph iswlower @@ -183,7 +183,7 @@ strtok_s strxfrm tolower toupper -towctrans +__msvcrt_towctrans DATA == towctrans ; mingw-w64 provides real towctrans as a wrapper around renamed __msvcrt_towctrans towlower towupper wcscat diff --git a/lib/libc/mingw/lib-common/kernel32.def.in b/lib/libc/mingw/lib-common/kernel32.def.in index 2b7fffc7a159d3ffe0a7514ea56141bcd8d95f00..db5548f8c83373f5a4e106db5e004767a66c6dbc 100644 --- a/lib/libc/mingw/lib-common/kernel32.def.in +++ b/lib/libc/mingw/lib-common/kernel32.def.in @@ -203,6 +203,8 @@ CreateActCtxWWorker CreateBoundaryDescriptorA CreateBoundaryDescriptorW CreateConsoleScreenBuffer +CreateDirectory2A +CreateDirectory2W CreateDirectoryA CreateDirectoryExA CreateDirectoryExW @@ -217,6 +219,7 @@ CreateEventW CreateFiber CreateFiberEx CreateFile2 +CreateFile3 CreateFileA CreateFileMappingA CreateFileMappingFromApp @@ -302,6 +305,8 @@ DeleteAtom DeleteBoundaryDescriptor DeleteCriticalSection DeleteFiber +DeleteFile2A +DeleteFile2W DeleteFileA DeleteFileTransactedA DeleteFileTransactedW @@ -1290,6 +1295,8 @@ ReleaseSRWLockExclusive ReleaseSRWLockShared ReleaseSemaphore ReleaseSemaphoreWhenCallbackReturns +RemoveDirectory2A +RemoveDirectory2W RemoveDirectoryA RemoveDirectoryTransactedA RemoveDirectoryTransactedW diff --git a/lib/libc/mingw/lib-common/ntdll.def.in b/lib/libc/mingw/lib-common/ntdll.def.in index ee002c8689ad57da122137aa0a42f448fa3f902f..2ce55ce9e46313db3ab9a78a84dde51c5f404085 100644 --- a/lib/libc/mingw/lib-common/ntdll.def.in +++ b/lib/libc/mingw/lib-common/ntdll.def.in @@ -228,7 +228,7 @@ LdrSetMUICacheType LdrShutdownProcess LdrShutdownThread LdrStandardizeSystemPath -LdrSystemDllInitBlock F_ARM_ANY(DATA) +LdrSystemDllInitBlock DATA LdrUnloadAlternateResourceModule LdrUnloadAlternateResourceModuleEx LdrUnloadDll @@ -455,7 +455,7 @@ NtLoadDriver NtLoadEnclaveData NtLoadKey NtLoadKey2 -F_ARM_ANY(NtLoadKey3) +NtLoadKey3 NtLoadKeyEx NtLockFile NtLockProductActivationKeys @@ -1643,8 +1643,8 @@ F_X86_ANY(RtlUTF8StringToUnicodeString) RtlUTF8ToUnicodeN RtlUdiv128 F_X64(RtlUmsThreadYield) -F_ARM_ANY(RtlUlongByteSwap) -F_ARM_ANY(RtlUlonglongByteSwap) +F_ARM_NATIVE(RtlUlongByteSwap) +F_ARM_NATIVE(RtlUlonglongByteSwap) RtlUnhandledExceptionFilter RtlUnhandledExceptionFilter2 RtlUnicodeStringToAnsiSize @@ -1690,7 +1690,7 @@ RtlUpperString F_X86_ANY(RtlUsageHeap) RtlUserFiberStart RtlUserThreadStart -F_ARM_ANY(RtlUshortByteSwap) +F_ARM_NATIVE(RtlUshortByteSwap) RtlValidAcl RtlValidProcessProtection RtlValidRelativeSecurityDescriptor @@ -1758,7 +1758,7 @@ RtlpConvertRelativeToAbsoluteSecurityAttribute RtlpCreateProcessRegistryInfo RtlpEnsureBufferSize F_X64(RtlpExecuteUmsThread) -RtlpFreezeTimeBias F_ARM_ANY(DATA) +RtlpFreezeTimeBias DATA RtlpGetDeviceFamilyInfoEnum RtlpGetLCIDFromLangInfoNode RtlpGetNameFromLangInfoNode @@ -2114,7 +2114,7 @@ ZwLoadDriver ZwLoadEnclaveData ZwLoadKey ZwLoadKey2 -F_ARM_ANY(ZwLoadKey3) +ZwLoadKey3 ZwLoadKeyEx ZwLockFile ZwLockProductActivationKeys diff --git a/lib/libc/mingw/lib-common/ntdllcrt.def.in b/lib/libc/mingw/lib-common/ntdllcrt.def.in index b1f365e96c10421996e157256f82da5e039e9842..ab140a28e8e779f3493bcddb4d1d917952a05efd 100644 --- a/lib/libc/mingw/lib-common/ntdllcrt.def.in +++ b/lib/libc/mingw/lib-common/ntdllcrt.def.in @@ -1,225 +1,253 @@ #include "func.def.in" -LIBRARY "ntdll.dll" +LIBRARY "NTDLL.dll" EXPORTS -#ifdef __i386__ -_CIcos -_CIlog -_CIpow -_CIsin -_CIsqrt -#endif -F_NON_I386(__C_specific_handler) -F_NON_I386(;__chkstk) -__isascii -__iscsym -__iscsymf -F_X64(__misaligned_access) -F_ARM32(__jump_unwind) -__toascii -#ifdef __i386__ -_alldiv -_alldvrm@16 -_allmul@16 -_alloca_probe -_alloca_probe_16 -_alloca_probe_8 -_allrem@16 -_allshl -_allshr -#endif -_atoi64 -#ifdef __i386__ -_aulldiv@16 -_aulldvrm@16 -_aullrem@16 -_aullshr -;_chkstk -#endif -_errno -F_I386(_except_handler4_common) + +; This is list of symbols available since Windows NT 3.5 +; Windows NT 3.1, Win32s and Win9x versions do not contain any CRT symbol +F_I386(_CIpow) +; _abnormal_termination ; removed in Windows NT 3.51 +; F_I386(_chkstk) +; _except_handler2 ; removed in Windows NT 3.51 _fltused DATA -#ifdef __i386__ -_ftol -_ftol2 -_ftol2_sse -#endif -_i64toa -_i64toa_s -_i64tow -_i64tow_s +F_I386(_ftol) +; _global_unwind2 ; removed in Windows NT 3.51 _itoa -_itoa_s -_itow -_itow_s -_lfind -F64(_local_unwind) -F_I386(_local_unwind4) +; _local_unwind2 ; removed in Windows NT 3.51 _ltoa -_ltoa_s -_ltow -_ltow_s -_makepath_s _memccpy _memicmp -F_X64(_setjmp) -F_ARM32(_setjmp) -F_NON_I386(_setjmpex) _snprintf -_snprintf_s -_snscanf_s _snwprintf -_snwprintf_s -_snwscanf_s _splitpath -_splitpath_s _strcmpi _stricmp _strlwr -strlwr == _strlwr -_strlwr_s +strlwr == _strlwr ; manual alias _strnicmp -_strnset_s -_strset_s _strupr -_strupr_s -_swprintf -F_X86_ANY(_tolower) -F_X86_ANY(_toupper) -_ui64toa -_ui64toa_s -_ui64tow -_ui64tow_s _ultoa -_ultoa_s -_ultow -_ultow_s -_vscprintf -_vscwprintf _vsnprintf -_vsnprintf_s -_vsnwprintf -_vsnwprintf_s -_vswprintf _wcsicmp _wcslwr -wcslwr == _wcslwr -_wcslwr_s +wcslwr == _wcslwr ; manual alias _wcsnicmp -_wcsnset_s -_wcsset_s -_wcstoi64 -_wcstoui64 _wcsupr -_wcsupr_s -_wmakepath_s -_wsplitpath_s -_wtoi -_wtoi64 -_wtol abs -atan F_X86_ANY(DATA) -atan2 +atan F_X86_ANY(DATA) ; replaced by emu atoi atol -bsearch -bsearch_s ceil -cos F_X86_ANY(DATA) -fabs F_X86_ANY(DATA) -floor F_X86_ANY(DATA) -isalnum +cos F_X86_ANY(DATA) ; replaced by emu +fabs F_X86_ANY(DATA) ; replaced by emu +floor F_X86_ANY(DATA) ; replaced by emu isalpha -iscntrl isdigit -isgraph islower isprint -ispunct isspace isupper -iswalnum iswalpha -iswascii iswctype -iswdigit -iswgraph -iswlower -iswprint -iswspace -iswxdigit isxdigit labs log -F_NON_I386(longjmp) mbstowcs memchr memcmp memcpy -memcpy_s memmove -memmove_s memset pow qsort -qsort_s sin sprintf -sprintf_s sqrt sscanf -sscanf_s strcat -strcat_s strchr strcmp strcpy -strcpy_s strcspn strlen strncat -strncat_s strncmp strncpy -strncpy_s -strnlen strpbrk strrchr strspn strstr -strtok_s -strtol -strtoul swprintf -swprintf_s -swscanf_s tan tolower toupper towlower towupper vsprintf -vsprintf_s -vswprintf_s wcscat -wcscat_s wcschr wcscmp wcscpy -wcscpy_s wcscspn wcslen wcsncat -wcsncat_s wcsncmp wcsncpy -wcsncpy_s -wcsnlen wcspbrk wcsrchr wcsspn wcsstr -wcstok_s +; wcstok ; removed in Windows NT 4.0 wcstol wcstombs wcstoul + +; This is list of symbols added in Windows NT 3.51 +F_I386(_alloca_probe) + +; This is list of symbols added in Windows NT 4.0 +__isascii +__iscsym +__iscsymf +__toascii +F_I386(_alldiv@16) ; stdcall +F_I386(_allmul@16) ; stdcall +F_I386(_allrem@16) ; stdcall +F_I386(_allshl) +F_I386(_allshr) +_atoi64 +F_I386(_aulldiv@16) ; stdcall +F_I386(_aullrem@16) ; stdcall +F_I386(_aullshr) +_i64toa +_i64tow +_itow +_ltow +F_X86_ANY(_tolower) ; removed in Windows Vista +F_X86_ANY(_toupper) ; removed in Windows Vista +_ultow +_wtoi +_wtoi64 +_wtol +isalnum +iscntrl +isgraph +ispunct +strtol +strtoul + +; This is list of symbols added in Windows 2000 +_ui64toa +iswdigit +iswlower +iswspace +iswxdigit + +; This is list of symbols added in Windows XP +F_I386(_CIcos) +F_I386(_CIlog) +F_I386(_CIsin) +F_I386(_CIsqrt) +F_I386(_alldvrm@16) ; stdcall +F_I386(_aulldvrm@16) ; stdcall +_lfind +_ui64tow +_vsnwprintf +bsearch + +; This is list of symbols added in Windows Server 2003 +_vscwprintf +_wcstoui64 + +; This is list of symbols added in Windows Server 2003 SP1 / Windows XP x64 SP1 +F_NON_I386(__C_specific_handler) +; F_NON_I386(__chkstk) +F_X64(__misaligned_access) +F64(_local_unwind) +F_NON_I386(F_NON_ARM64(_setjmp)) +F_NON_I386(_setjmpex) +F_NON_I386(longjmp) + +; This is list of symbols added in Windows Vista +F_I386(_alloca_probe_16) +F_I386(_alloca_probe_8) +_swprintf +_vswprintf + +; This is list of symbols added in Windows 7 +_i64toa_s +_i64tow_s +_itoa_s +_itow_s +_ltoa_s +_ltow_s +_makepath_s +_snprintf_s +_snscanf_s +_snwprintf_s +_snwscanf_s +_splitpath_s +_strnset_s +_strset_s +_ui64toa_s +_ui64tow_s +_ultoa_s +_ultow_s +_vsnprintf_s +_vsnwprintf_s +_wcsnset_s +_wcsset_s +_wmakepath_s +_wsplitpath_s +memcpy_s +memmove_s +sprintf_s +sscanf_s +strcat_s +strcpy_s +strncat_s +strncpy_s +strnlen +strtok_s +swprintf_s +swscanf_s +vsprintf_s +vswprintf_s +wcscat_s +wcscpy_s +wcsncat_s +wcsncpy_s +wcsnlen + +; This is list of symbols added in Windows 8 +F_ARM32(__jump_unwind) +_errno +F_I386(_except_handler4_common) +F_I386(_ftol2) +F_I386(_ftol2_sse) +F_I386(_local_unwind4) +_strlwr_s +_strupr_s +_wcslwr_s +_wcstoi64 +_wcsupr_s +iswalnum +iswascii +iswgraph +iswprint +qsort_s +wcstok_s + +; This is list of symbols added in Windows 10 (Threshold / 1507) +atan2 + +; This is list of symbols added in Windows 10 Creators Update (Redstone 2 / 1703) +bsearch_s + +; This is list of symbols added in Windows 10 Fall Creators Update (Redstone 3 / 1709) +_vscprintf + +; This is list of symbols added in Windows 11 2024 Update (Hudson Valley / 24H2) (WoW64 version) +; _libm_sse2_cos_precise +; _libm_sse2_sin_precise +; _libm_sse2_sqrt_precise diff --git a/lib/libc/mingw/lib-common/oleacc.def b/lib/libc/mingw/lib-common/oleacc.def index 45dd4247abfc4e2774767f2a8a1ed535c9e43003..7d3448f3a0e11dc2c3ebc23a952e860435eeb0b5 100644 --- a/lib/libc/mingw/lib-common/oleacc.def +++ b/lib/libc/mingw/lib-common/oleacc.def @@ -1,10 +1,13 @@ ; ; Definition file of OLEACC.dll -; Automatic generated by gendef -; written by Kai Tietz 2008-2014 +; Automatic generated by gendef 1.1 +; written by Kai Tietz 2008 +; The def file has to be processed by --kill-at (-k) option of dlltool or ld ; LIBRARY "OLEACC.dll" EXPORTS +;DllRegisterServer +;DllUnregisterServer AccGetRunningUtilityState AccNotifyTouchInteraction AccSetRunningUtilityState @@ -16,15 +19,17 @@ AccessibleObjectFromWindowTimeout CreateStdAccessibleObject CreateStdAccessibleProxyA CreateStdAccessibleProxyW +;DllCanUnloadNow +;DllGetClassObject GetOleaccVersionInfo GetProcessHandleFromHwnd GetRoleTextA GetRoleTextW GetStateTextA GetStateTextW -IID_IAccessible -IID_IAccessibleHandler -LIBID_Accessibility +;IID_IAccessible DATA +;IID_IAccessibleHandler DATA +;LIBID_Accessibility DATA LresultFromObject ObjectFromLresult PropMgrClient_LookupProp diff --git a/lib/libc/mingw/lib-common/ucrtbase-common.def.in b/lib/libc/mingw/lib-common/ucrtbase-common.def.in index 24f47bcbc1a1059269f4146ccb01570a4aa7e0ba..377ceef2f789e8a216e1ec4a82d18848b8bc4564 100644 --- a/lib/libc/mingw/lib-common/ucrtbase-common.def.in +++ b/lib/libc/mingw/lib-common/ucrtbase-common.def.in @@ -75,8 +75,8 @@ _IsExceptionObjectToBeDestroyed _LCbuild _LCmulcc _LCmulcr -F_I386(_NLG_Dispatch2@4) -F_I386(_NLG_Return@12) +F_I386(_NLG_Dispatch2) ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +F_I386(_NLG_Return) ; msvc symbol is without decoration but callee pop stack (like stdcall @12) F_I386(_NLG_Return2) F_X64(_SetImageBase) F_X64(_SetThrowImageBase) @@ -246,7 +246,7 @@ _aligned_realloc F_DEBUG(_aligned_realloc_dbg) _aligned_recalloc F_DEBUG(_aligned_recalloc_dbg) -_assert +__msvcrt_assert DATA == _assert ; mingw-w64 provides _assert() function as wrapper around renamed __msvcrt_assert symbol _atodbl _atodbl_l _atof_l @@ -1656,7 +1656,7 @@ _o_exp2f F_LD64(_o_exp2l) ; Can't use long double functions from the CRT on x86 F_NON_I386(_o_expf) _o_fabs -F_ARM_ANY(_o_fabsf) +F_ARM_NATIVE(_o_fabsf) _o_fclose _o_feof _o_ferror @@ -2233,7 +2233,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc ; replaced for consistency with wctob c16rtomb c32rtomb cabs @@ -2338,7 +2338,7 @@ expm1 expm1f F_LD64(expm1l) ; Can't use long double functions from the CRT on x86 fabs -F_ARM_ANY(fabsf) +F_ARM_NATIVE(fabsf) fclose fdim fdimf @@ -2424,7 +2424,7 @@ iswalpha iswascii iswblank iswcntrl -iswctype +__msvcrt_iswctype DATA == iswctype ; mingw-w64 provides real iswctype as a wrapper around renamed __msvcrt_iswctype iswdigit iswgraph iswlower @@ -2609,7 +2609,7 @@ tmpnam tmpnam_s tolower toupper -towctrans +__msvcrt_towctrans DATA == towctrans ; mingw-w64 provides real towctrans as a wrapper around renamed __msvcrt_towctrans towlower towupper trunc @@ -2656,7 +2656,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob ; replaced, CRT version may sign-extend its return value wctomb wctomb_s wctrans diff --git a/lib/libc/mingw/lib-common/vcruntime140-common.def.in b/lib/libc/mingw/lib-common/vcruntime140-common.def.in index 6dc643f70635384a9b3d7e302262588db3110410..4a94a783e198f99d71f13eb183f560faf6f57fe5 100644 --- a/lib/libc/mingw/lib-common/vcruntime140-common.def.in +++ b/lib/libc/mingw/lib-common/vcruntime140-common.def.in @@ -4,8 +4,8 @@ F_NON_I386(_CxxThrowException) F_I386(_EH_prolog) _FindAndUnlinkFrame _IsExceptionObjectToBeDestroyed -F_I386(_NLG_Dispatch2@4) -F_I386(_NLG_Return@12) +F_I386(_NLG_Dispatch2) ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +F_I386(_NLG_Return) ; msvc symbol is without decoration but callee pop stack (like stdcall @12) F_I386(_NLG_Return2) _SetWinRTOutOfMemoryExceptionCallback __AdjustPointer diff --git a/lib/libc/mingw/lib32/advapi32.def b/lib/libc/mingw/lib32/advapi32.def index 5d9953bda84811c0dec34119feb9cfbdaa09d662..3110cbafb725f6ade8a22c2d1925a30ce2d39e1f 100644 --- a/lib/libc/mingw/lib32/advapi32.def +++ b/lib/libc/mingw/lib32/advapi32.def @@ -1,369 +1,80 @@ -; -; Definition file of ADVAPI32.dll -; Automatic generated by gendef -; written by Kai Tietz 2008 -; LIBRARY "ADVAPI32.dll" EXPORTS -ord_1000@8 @1000 -I_ScGetCurrentGroupStateW@12 -A_SHAFinal@8 -A_SHAInit@4 -A_SHAUpdate@12 + +; This file is a comprehensive documentation for 32-bit x86 advapi32.dll symbols. +; It covers all 3 platforms (Win32s, Win9x and WinNT) and contains information +; from native advapi32.dll libraries on 32-bit Windows systems and also from +; 32-bit WoW64 advapi32.dll libraries on 64-bit Windows systems. Symbols in this +; file are ordered by increasing Windows version in which they were introduced. +; First are Win32s versions, then followed by Win9x versions and then WinNT +; because logically Win32s symbols are a subset of Win9x symbols which are a +; subset of WinNT symbols. Comments contains additional information with exceptions. +; +; BEWARE that this file contains only information about symbol availability and +; whether it is possible to load an application or library which references these +; symbols. It does not contain information if the particular Windows version +; supports or implements corresponding API functions. Lots of -W functions are +; unimplemented on Win32s and Win9x platforms and simply signal +; ERROR_CALL_NOT_IMPLEMENTED. + +; This is list of symbols available in all Windows versions (Win32s since Win32s 1.1; +; Win9x since Windows 95; WinNT since Windows NT 3.1) AbortSystemShutdownA@4 AbortSystemShutdownW@4 AccessCheck@32 AccessCheckAndAuditAlarmA@44 AccessCheckAndAuditAlarmW@44 -AccessCheckByType@44 -AccessCheckByTypeAndAuditAlarmA@64 -AccessCheckByTypeAndAuditAlarmW@64 -AccessCheckByTypeResultList@44 -AccessCheckByTypeResultListAndAuditAlarmA@64 -AccessCheckByTypeResultListAndAuditAlarmByHandleA@68 -AccessCheckByTypeResultListAndAuditAlarmByHandleW@68 -AccessCheckByTypeResultListAndAuditAlarmW@64 AddAccessAllowedAce@16 -AddAccessAllowedAceEx@20 -AddAccessAllowedObjectAce@28 AddAccessDeniedAce@16 -AddAccessDeniedAceEx@20 -AddAccessDeniedObjectAce@28 AddAce@20 AddAuditAccessAce@24 -AddAuditAccessAceEx@28 -AddAuditAccessObjectAce@36 -AddConditionalAce@32 -AddMandatoryAce@20 -AddUsersToEncryptedFile@8 -AddUsersToEncryptedFileEx@16 AdjustTokenGroups@24 AdjustTokenPrivileges@24 AllocateAndInitializeSid@44 AllocateLocallyUniqueId@4 AreAllAccessesGranted@8 AreAnyAccessesGranted@8 -AuditComputeEffectivePolicyBySid@16 -AuditComputeEffectivePolicyByToken@16 -AuditEnumerateCategories@8 -AuditEnumeratePerUserPolicy@4 -AuditEnumerateSubCategories@16 -AuditFree@4 -AuditLookupCategoryGuidFromCategoryId@8 -AuditLookupCategoryIdFromCategoryGuid@8 -AuditLookupCategoryNameA@8 -AuditLookupCategoryNameW@8 -AuditLookupSubCategoryNameA@8 -AuditLookupSubCategoryNameW@8 -AuditQueryGlobalSaclA@8 -AuditQueryGlobalSaclW@8 -AuditQueryPerUserPolicy@16 -AuditQuerySecurity@8 -AuditQuerySystemPolicy@12 -AuditSetGlobalSaclA@8 -AuditSetGlobalSaclW@8 -AuditSetPerUserPolicy@12 -AuditSetSecurity@8 -AuditSetSystemPolicy@8 BackupEventLogA@8 BackupEventLogW@8 -BaseRegCloseKey@4 -BaseRegCreateKey@32 -BaseRegDeleteKeyEx@16 -BaseRegDeleteValue@8 -BaseRegFlushKey@4 -BaseRegGetVersion@8 -BaseRegLoadKey@12 -BaseRegOpenKey@20 -BaseRegRestoreKey@12 -BaseRegSaveKeyEx@16 -BaseRegSetKeySecurity@12 -BaseRegSetValue@20 -BaseRegUnLoadKey@8 -BuildExplicitAccessWithNameA@20 -BuildExplicitAccessWithNameW@20 -BuildImpersonateExplicitAccessWithNameA@24 -BuildImpersonateExplicitAccessWithNameW@24 -BuildImpersonateTrusteeA@8 -BuildImpersonateTrusteeW@8 -BuildSecurityDescriptorA@36 -BuildSecurityDescriptorW@36 -BuildTrusteeWithNameA@8 -BuildTrusteeWithNameW@8 -BuildTrusteeWithObjectsAndNameA@24 -BuildTrusteeWithObjectsAndNameW@24 -BuildTrusteeWithObjectsAndSidA@20 -BuildTrusteeWithObjectsAndSidW@20 -BuildTrusteeWithSidA@8 -BuildTrusteeWithSidW@8 -CancelOverlappedAccess@4 -ChangeServiceConfig2A@12 -ChangeServiceConfig2W@12 ChangeServiceConfigA@44 ChangeServiceConfigW@44 -CheckForHiberboot@8 -CheckTokenMembership@12 ClearEventLogA@8 ClearEventLogW@8 -CloseCodeAuthzLevel@4 -CloseEncryptedFileRaw@4 CloseEventLog@4 CloseServiceHandle@4 -CloseThreadWaitChainSession@4 -CloseTrace@8 -CommandLineFromMsiDescriptor@12 -ComputeAccessTokenFromCodeAuthzLevel@20 ControlService@12 -ControlServiceExA@16 -ControlServiceExW@16 -ControlTraceA@20 -ControlTraceW@20 -ConvertAccessToSecurityDescriptorA@20 -ConvertAccessToSecurityDescriptorW@20 -ConvertSDToStringSDDomainW@28 -ConvertSDToStringSDRootDomainA@24 -ConvertSDToStringSDRootDomainW@24 -ConvertSecurityDescriptorToAccessA@28 -ConvertSecurityDescriptorToAccessNamedA@28 -ConvertSecurityDescriptorToAccessNamedW@28 -ConvertSecurityDescriptorToAccessW@28 -ConvertSecurityDescriptorToStringSecurityDescriptorA@20 -ConvertSecurityDescriptorToStringSecurityDescriptorW@20 -ConvertSidToStringSidA@8 -ConvertSidToStringSidW@8 -ConvertStringSDToSDDomainA@24 -ConvertStringSDToSDDomainW@24 -ConvertStringSDToSDRootDomainA@20 -ConvertStringSDToSDRootDomainW@20 -ConvertStringSecurityDescriptorToSecurityDescriptorA@16 -ConvertStringSecurityDescriptorToSecurityDescriptorW@16 -ConvertStringSidToSidA@8 -ConvertStringSidToSidW@8 -ConvertToAutoInheritPrivateObjectSecurity@24 CopySid@12 -CreateCodeAuthzLevel@20 CreatePrivateObjectSecurity@24 -CreatePrivateObjectSecurityEx@32 -CreatePrivateObjectSecurityWithMultipleInheritance@36 -CreateProcessAsUserA@44 -CreateProcessAsUserW@44 -CreateProcessWithLogonW@44 -CreateProcessWithTokenW@36 -CreateRestrictedToken@36 CreateServiceA@52 CreateServiceW@52 -CreateTraceInstanceId@8 -CreateWellKnownSid@16 -CredBackupCredentials@20 -CredDeleteA@12 -CredDeleteW@12 -CredEncryptAndMarshalBinaryBlob@12 -CredEnumerateA@16 -CredEnumerateW@16 -CredFindBestCredentialA@16 -CredFindBestCredentialW@16 -CredFree@4 -CredGetSessionTypes@8 -CredGetTargetInfoA@12 -CredGetTargetInfoW@12 -CredIsMarshaledCredentialA@4 -CredIsMarshaledCredentialW@4 -CredIsProtectedA@8 -CredIsProtectedW@8 -CredMarshalCredentialA@12 -CredMarshalCredentialW@12 -CredProfileLoaded@0 -CredProfileUnloaded@0 -CredProtectA@24 -CredProtectW@24 -CredReadA@16 -CredReadByTokenHandle@20 -CredReadDomainCredentialsA@16 -CredReadDomainCredentialsW@16 -CredReadW@16 -CredRenameA@16 -CredRenameW@16 -CredRestoreCredentials@16 -CredUnmarshalCredentialA@12 -CredUnmarshalCredentialW@12 -CredUnprotectA@20 -CredUnprotectW@20 -CredWriteA@8 -CredWriteDomainCredentialsA@12 -CredWriteDomainCredentialsW@12 -CredWriteW@8 -CredpConvertCredential@16 -CredpConvertOneCredentialSize@8 -CredpConvertTargetInfo@16 -CredpDecodeCredential@4 -CredpEncodeCredential@4 -CredpEncodeSecret@20 -CryptAcquireContextA@20 -CryptAcquireContextW@20 -CryptContextAddRef@12 -CryptCreateHash@20 -CryptDecrypt@24 -CryptDeriveKey@20 -CryptDestroyHash@4 -CryptDestroyKey@4 -CryptDuplicateHash@16 -CryptDuplicateKey@16 -CryptEncrypt@28 -CryptEnumProviderTypesA@24 -CryptEnumProviderTypesW@24 -CryptEnumProvidersA@24 -CryptEnumProvidersW@24 -CryptExportKey@24 -CryptGenKey@16 -CryptGenRandom@12 -CryptGetDefaultProviderA@20 -CryptGetDefaultProviderW@20 -CryptGetHashParam@20 -CryptGetKeyParam@20 -CryptGetProvParam@20 -CryptGetUserKey@12 -CryptHashData@16 -CryptHashSessionKey@12 -CryptImportKey@24 -CryptReleaseContext@8 -CryptSetHashParam@16 -CryptSetKeyParam@16 -CryptSetProvParam@16 -CryptSetProviderA@8 -CryptSetProviderExA@16 -CryptSetProviderExW@16 -CryptSetProviderW@8 -CryptSignHashA@24 -CryptSignHashW@24 -CryptVerifySignatureA@24 -CryptVerifySignatureW@24 -CveEventWrite@8 -DecryptFileA@8 -DecryptFileW@8 DeleteAce@8 DeleteService@4 DeregisterEventSource@4 DestroyPrivateObjectSecurity@4 -DuplicateEncryptionInfoFile@20 DuplicateToken@12 -DuplicateTokenEx@24 -ElfBackupEventLogFileA@8 -ElfBackupEventLogFileW@8 -ElfChangeNotify@8 -ElfClearEventLogFileA@8 -ElfClearEventLogFileW@8 -ElfCloseEventLog@4 -ElfDeregisterEventSource@4 -ElfFlushEventLog@4 -ElfNumberOfRecords@8 -ElfOldestRecord@8 -ElfOpenBackupEventLogA@12 -ElfOpenBackupEventLogW@12 -ElfOpenEventLogA@12 -ElfOpenEventLogW@12 -ElfReadEventLogA@28 -ElfReadEventLogW@28 -ElfRegisterEventSourceA@12 -ElfRegisterEventSourceW@12 -ElfReportEventA@48 -ElfReportEventAndSourceW@60 -ElfReportEventW@48 -EnableTrace@24 -EnableTraceEx2@44 -EnableTraceEx@48 -EncryptFileA@4 -EncryptFileW@4 -EncryptedFileKeyInfo@12 -EncryptionDisable@8 EnumDependentServicesA@24 EnumDependentServicesW@24 -EnumDynamicTimeZoneInformation@8 -EnumServiceGroupW@36 EnumServicesStatusA@32 -EnumServicesStatusExA@40 -EnumServicesStatusExW@40 EnumServicesStatusW@32 -EnumerateTraceGuids@12 -EnumerateTraceGuidsEx@24 -EqualDomainSid@12 EqualPrefixSid@8 EqualSid@8 -EventAccessControl@20 -EventAccessQuery@12 -EventAccessRemove@4 -EventActivityIdControl@8 -EventEnabled@12 -EventProviderEnabled@20 -EventRegister@16 -EventSetInformation@20 -EventUnregister@8 -EventWrite@20 -EventWriteEndScenario@20 -EventWriteEx@40 -EventWriteStartScenario@20 -EventWriteString@24 -EventWriteTransfer@28 -FileEncryptionStatusA@8 -FileEncryptionStatusW@8 FindFirstFreeAce@8 -FlushEfsCache@4 -FlushTraceA@16 -FlushTraceW@16 -FreeEncryptedFileKeyInfo@4 -FreeEncryptedFileMetadata@4 -FreeEncryptionCertificateHashList@4 -FreeInheritedFromArray@12 FreeSid@4 -GetAccessPermissionsForObjectA@36 -GetAccessPermissionsForObjectW@36 GetAce@12 GetAclInformation@16 -GetAuditedPermissionsFromAclA@16 -GetAuditedPermissionsFromAclW@16 -GetCurrentHwProfileA@4 -GetCurrentHwProfileW@4 -GetDynamicTimeZoneInformationEffectiveYears@12 -GetEffectiveRightsFromAclA@12 -GetEffectiveRightsFromAclW@12 -GetEncryptedFileMetadata@12 -GetEventLogInformation@20 -GetExplicitEntriesFromAclA@12 -GetExplicitEntriesFromAclW@12 GetFileSecurityA@20 GetFileSecurityW@20 -GetInformationCodeAuthzLevelW@20 -GetInformationCodeAuthzPolicyW@24 -GetInheritanceSourceA@40 -GetInheritanceSourceW@40 GetKernelObjectSecurity@20 GetLengthSid@4 -GetLocalManagedApplicationData@12 -GetLocalManagedApplications@12 -GetManagedApplicationCategories@8 -GetManagedApplications@20 -GetMangledSiteSid@12 -GetMultipleTrusteeA@4 -GetMultipleTrusteeOperationA@4 -GetMultipleTrusteeOperationW@4 -GetMultipleTrusteeW@4 -GetNamedSecurityInfoA@32 -GetNamedSecurityInfoExA@36 -GetNamedSecurityInfoExW@36 -GetNamedSecurityInfoW@32 GetNumberOfEventLogRecords@8 GetOldestEventLogRecord@8 -GetOverlappedAccessResults@16 GetPrivateObjectSecurity@20 GetSecurityDescriptorControl@12 GetSecurityDescriptorDacl@16 GetSecurityDescriptorGroup@12 GetSecurityDescriptorLength@4 GetSecurityDescriptorOwner@12 -GetSecurityDescriptorRMControl@8 GetSecurityDescriptorSacl@16 -GetSecurityInfo@32 -GetSecurityInfoExA@36 -GetSecurityInfoExW@36 GetServiceDisplayNameA@16 GetServiceDisplayNameW@16 GetServiceKeyNameA@16 @@ -372,65 +83,20 @@ GetSidIdentifierAuthority@4 GetSidLengthRequired@4 GetSidSubAuthority@8 GetSidSubAuthorityCount@4 -GetStringConditionFromBinary@16 -GetSiteDirectoryA@12 -GetSiteDirectoryW@12 -GetSiteNameFromSid@8 -GetSiteSidFromToken@4 -GetSiteSidFromUrl@4 -GetThreadWaitChain@28 GetTokenInformation@20 -GetTraceEnableFlags@8 -GetTraceEnableLevel@8 -GetTraceLoggerHandle@4 -GetTrusteeFormA@4 -GetTrusteeFormW@4 -GetTrusteeNameA@4 -GetTrusteeNameW@4 -GetTrusteeTypeA@4 -GetTrusteeTypeW@4 GetUserNameA@8 GetUserNameW@8 -GetWindowsAccountDomainSid@12 -I_QueryTagInformation@12 -I_ScIsSecurityProcess@0 -I_ScPnPGetServiceName@12 -I_ScQueryServiceConfig@12 -I_ScSendPnPMessage@24 -I_ScSendTSMessage@16 -I_ScSetServiceBitsA@20 -I_ScSetServiceBitsW@20 -I_ScValidatePnPService@12 -IdentifyCodeAuthzLevelW@16 -ImpersonateAnonymousToken@4 -ImpersonateLoggedOnUser@4 ImpersonateNamedPipeClient@4 ImpersonateSelf@4 InitializeAcl@12 InitializeSecurityDescriptor@8 InitializeSid@12 -InitiateShutdownA@20 -InitiateShutdownW@20 InitiateSystemShutdownA@20 -InitiateSystemShutdownExA@24 -InitiateSystemShutdownExW@24 InitiateSystemShutdownW@20 -InstallApplication@4 -IsProcessRestricted@0 -IsTextUnicode@12 -IsTokenRestricted@4 -IsTokenUntrusted@4 IsValidAcl@4 -IsValidRelativeSecurityDescriptor@12 IsValidSecurityDescriptor@4 IsValidSid@4 -IsWellKnownSid@8 LockServiceDatabase@4 -LogonUserA@24 -LogonUserExA@40 -LogonUserExExW@44 -LogonUserExW@40 -LogonUserW@24 LookupAccountNameA@28 LookupAccountNameW@28 LookupAccountSidA@28 @@ -441,115 +107,18 @@ LookupPrivilegeNameA@16 LookupPrivilegeNameW@16 LookupPrivilegeValueA@12 LookupPrivilegeValueW@12 -LookupSecurityDescriptorPartsA@28 -LookupSecurityDescriptorPartsW@28 -LsaAddAccountRights@16 -LsaAddPrivilegesToAccount@8 -LsaClearAuditLog@4 -LsaClose@4 -LsaConfigureAutoLogonCredentials@0 -LsaCreateAccount@16 -LsaCreateSecret@16 -LsaCreateTrustedDomain@16 -LsaCreateTrustedDomainEx@20 -LsaDelete@4 -LsaDeleteTrustedDomain@8 -LsaDisableUserArso@4 -LsaEnableUserArso@4 -LsaEnumerateAccountRights@16 -LsaEnumerateAccounts@20 -LsaEnumerateAccountsWithUserRight@16 -LsaEnumeratePrivileges@20 -LsaEnumeratePrivilegesOfAccount@8 -LsaEnumerateTrustedDomains@20 -LsaEnumerateTrustedDomainsEx@20 -LsaFreeMemory@4 -LsaGetAppliedCAPIDs@12 -LsaGetDeviceRegistrationInfo@4 -LsaGetQuotasForAccount@8 -LsaGetRemoteUserName@12 -LsaGetSystemAccessAccount@8 -LsaGetUserName@8 -LsaICLookupNames@40 -LsaICLookupNamesWithCreds@48 -LsaICLookupSids@36 -LsaICLookupSidsWithCreds@48 -LsaInvokeTrustScanner@16 -LsaIsUserArsoAllowed@4 -LsaIsUserArsoEnabled@8 -LsaLookupNames2@24 -LsaLookupNames@20 -LsaLookupPrivilegeDisplayName@16 -LsaLookupPrivilegeName@12 -LsaLookupPrivilegeValue@12 -LsaLookupSids2@24 -LsaLookupSids@20 -LsaManageSidNameMapping@12 -LsaNtStatusToWinError@4 -LsaOpenAccount@16 -LsaOpenPolicy@16 -LsaOpenPolicySce@16 -LsaOpenSecret@16 -LsaOpenTrustedDomain@16 -LsaOpenTrustedDomainByName@16 -LsaProfileDeleted@4 -LsaQueryCAPs@16 -LsaQueryDomainInformationPolicy@12 -LsaQueryForestTrustInformation2@16 -LsaQueryForestTrustInformation@12 -LsaQueryInfoTrustedDomain@12 -LsaQueryInformationPolicy@12 -LsaQuerySecret@20 -LsaQuerySecurityObject@12 -LsaQueryTrustedDomainInfo@16 -LsaQueryTrustedDomainInfoByName@16 -LsaRemoveAccountRights@20 -LsaRemovePrivilegesFromAccount@12 -LsaRetrievePrivateData@12 -LsaSetCAPs@12 -LsaSetDomainInformationPolicy@12 -LsaSetForestTrustInformation2@24 -LsaSetForestTrustInformation@20 -LsaSetInformationPolicy@12 -LsaSetInformationTrustedDomain@12 -LsaSetQuotasForAccount@8 -LsaSetSecret@12 -LsaSetSecurityObject@12 -LsaSetSystemAccessAccount@8 -LsaSetTrustedDomainInfoByName@16 -LsaSetTrustedDomainInformation@16 -LsaStorePrivateData@12 -LsaValidateProcUniqueLuid@4 -MD4Final@4 -MD4Init@4 -MD4Update@12 -MD5Final@4 -MD5Init@4 -MD5Update@12 -MSChapSrvChangePassword2@28 -MSChapSrvChangePassword@28 -MakeAbsoluteSD2@8 MakeAbsoluteSD@44 MakeSelfRelativeSD@12 MapGenericMask@8 NotifyBootConfigStatus@4 -NotifyChangeEventLog@8 -NotifyServiceStatusChange@12 -NotifyServiceStatusChangeA@12 -NotifyServiceStatusChangeW@12 -NpGetUserName@12 ObjectCloseAuditAlarmA@12 ObjectCloseAuditAlarmW@12 -ObjectDeleteAuditAlarmA@12 -ObjectDeleteAuditAlarmW@12 ObjectOpenAuditAlarmA@48 ObjectOpenAuditAlarmW@48 ObjectPrivilegeAuditAlarmA@24 ObjectPrivilegeAuditAlarmW@24 OpenBackupEventLogA@8 OpenBackupEventLogW@8 -OpenEncryptedFileRawA@12 -OpenEncryptedFileRawW@12 OpenEventLogA@8 OpenEventLogW@8 OpenProcessToken@12 @@ -558,97 +127,28 @@ OpenSCManagerW@12 OpenServiceA@12 OpenServiceW@12 OpenThreadToken@16 -OpenThreadWaitChainSession@8 -OpenTraceA@4 -OpenTraceW@4 -OperationEnd@4 -OperationStart@4 -PerfAddCounters@12 -PerfCloseQueryHandle@4 -PerfCreateInstance@16 -PerfDecrementULongCounterValue@16 -PerfDecrementULongLongCounterValue@20 -PerfDeleteCounters@12 -PerfDeleteInstance@8 -PerfEnumerateCounterSet@16 -PerfEnumerateCounterSetInstances@20 -PerfIncrementULongCounterValue@16 -PerfIncrementULongLongCounterValue@20 -PerfOpenQueryHandle@8 -PerfQueryCounterData@16 -PerfQueryCounterInfo@16 -PerfQueryCounterSetRegistrationInfo@28 -PerfQueryInstance@16 -PerfRegCloseKey@4 -PerfRegEnumKey@24 -PerfRegEnumValue@32 -PerfRegQueryInfoKey@44 -PerfRegQueryValue@28 -PerfRegSetValue@24 -PerfSetCounterRefValue@16 -PerfSetCounterSetInfo@12 -PerfSetULongCounterValue@16 -PerfSetULongLongCounterValue@20 -PerfStartProvider@12 -PerfStartProviderEx@12 -PerfStopProvider@4 PrivilegeCheck@12 PrivilegedServiceAuditAlarmA@20 PrivilegedServiceAuditAlarmW@20 -ProcessIdleTasks@0 -ProcessIdleTasksW@16 -ProcessTrace@16 -QueryAllTracesA@12 -QueryAllTracesW@12 -QueryRecoveryAgentsOnEncryptedFile@8 -QuerySecurityAccessMask@8 -QueryServiceConfig2A@20 -QueryServiceConfig2W@20 QueryServiceConfigA@16 QueryServiceConfigW@16 -QueryServiceDynamicInformation@12 QueryServiceLockStatusA@16 QueryServiceLockStatusW@16 QueryServiceObjectSecurity@20 QueryServiceStatus@8 -QueryServiceStatusEx@20 -QueryTraceA@16 -QueryTraceProcessingHandle@32 -QueryTraceW@16 -QueryUsersOnEncryptedFile@8 -QueryWindows31FilesMigration@4 -ReadEncryptedFileRaw@12 ReadEventLogA@28 ReadEventLogW@28 RegCloseKey@4 RegConnectRegistryA@12 -RegConnectRegistryExA@16 -RegConnectRegistryExW@16 RegConnectRegistryW@12 -RegCopyTreeA@12 -RegCopyTreeW@12 RegCreateKeyA@12 RegCreateKeyExA@36 RegCreateKeyExW@36 -RegCreateKeyTransactedA@44 -RegCreateKeyTransactedW@44 RegCreateKeyW@12 RegDeleteKeyA@8 RegDeleteKeyW@8 -RegDeleteKeyExA@16 -RegDeleteKeyExW@16 -RegDeleteKeyTransactedA@24 -RegDeleteKeyTransactedW@24 -RegDeleteKeyValueA@12 -RegDeleteKeyValueW@12 -RegDeleteTreeA@8 -RegDeleteTreeW@8 RegDeleteValueA@8 RegDeleteValueW@8 -RegDisablePredefinedCache@0 -RegDisablePredefinedCacheEx@0 -RegDisableReflectionKey@4 -RegEnableReflectionKey@4 RegEnumKeyA@16 RegEnumKeyExA@32 RegEnumKeyExW@32 @@ -657,45 +157,26 @@ RegEnumValueA@32 RegEnumValueW@32 RegFlushKey@4 RegGetKeySecurity@16 -RegGetValueA@28 -RegGetValueW@28 -RegLoadAppKeyA@20 -RegLoadAppKeyW@20 RegLoadKeyA@12 RegLoadKeyW@12 -RegLoadMUIStringA@28 -RegLoadMUIStringW@28 RegNotifyChangeKeyValue@20 -RegOpenCurrentUser@8 RegOpenKeyA@12 RegOpenKeyExA@20 RegOpenKeyExW@20 -RegOpenKeyTransactedA@28 -RegOpenKeyTransactedW@28 RegOpenKeyW@12 -RegOpenUserClassesRoot@16 -RegOverridePredefKey@8 RegQueryInfoKeyA@48 RegQueryInfoKeyW@48 -RegQueryMultipleValuesA@20 -RegQueryMultipleValuesW@20 -RegQueryReflectionKey@8 RegQueryValueA@16 RegQueryValueExA@24 RegQueryValueExW@24 RegQueryValueW@16 -RegRenameKey@12 RegReplaceKeyA@16 RegReplaceKeyW@16 RegRestoreKeyA@12 RegRestoreKeyW@12 RegSaveKeyA@12 -RegSaveKeyExA@16 -RegSaveKeyExW@16 RegSaveKeyW@12 RegSetKeySecurity@12 -RegSetKeyValueA@24 -RegSetKeyValueW@24 RegSetValueA@20 RegSetValueExA@24 RegSetValueExW@24 @@ -704,88 +185,92 @@ RegUnLoadKeyA@8 RegUnLoadKeyW@8 RegisterEventSourceA@8 RegisterEventSourceW@8 -RegisterIdleTask@16 RegisterServiceCtrlHandlerA@8 -RegisterServiceCtrlHandlerExA@12 -RegisterServiceCtrlHandlerExW@12 RegisterServiceCtrlHandlerW@8 -RegisterTraceGuidsA@32 -RegisterTraceGuidsW@32 -RegisterWaitChainCOMCallback@8 -RemoteRegEnumKeyWrapper@20 -RemoteRegEnumValueWrapper@28 -RemoteRegQueryInfoKeyWrapper@40 -RemoteRegQueryMultipleValues2Wrapper@24 -RemoteRegQueryMultipleValuesWrapper@20 -RemoteRegQueryValueWrapper@24 -RemoveTraceCallback@4 -RemoveUsersFromEncryptedFile@8 ReportEventA@36 ReportEventW@36 RevertToSelf@0 -SafeBaseRegGetKeySecurity@16 -SaferCloseLevel@4 -SaferComputeTokenFromLevel@20 -SaferCreateLevel@20 -SaferGetLevelInformation@20 -SaferGetPolicyInformation@24 -SaferIdentifyLevel@16 -SaferRecordEventLogEntry@12 -SaferSetLevelInformation@16 -SaferSetPolicyInformation@20 -SaferiChangeRegistryScope@8 -SaferiCompareTokenLevels@12 -SaferiIsDllAllowed@12 -SaferiIsExecutableFileType@8 -SaferiPopulateDefaultsInRegistry@8 -SaferiRecordEventLogEntry@12 -SaferiSearchMatchingHashRules@24 SetAclInformation@16 -SetEncryptedFileMetadata@24 -SetEntriesInAccessListA@24 -SetEntriesInAccessListW@24 -SetEntriesInAclA@16 -SetEntriesInAclW@16 -SetEntriesInAuditListA@24 -SetEntriesInAuditListW@24 SetFileSecurityA@12 SetFileSecurityW@12 -SetInformationCodeAuthzLevelW@16 -SetInformationCodeAuthzPolicyW@20 SetKernelObjectSecurity@12 -SetNamedSecurityInfoA@28 -SetNamedSecurityInfoExA@36 -SetNamedSecurityInfoExW@36 -SetNamedSecurityInfoW@28 SetPrivateObjectSecurity@20 -SetPrivateObjectSecurityEx@24 -SetSecurityAccessMask@8 -SetSecurityDescriptorControl@12 SetSecurityDescriptorDacl@16 SetSecurityDescriptorGroup@12 SetSecurityDescriptorOwner@12 -SetSecurityDescriptorRMControl@8 SetSecurityDescriptorSacl@16 -SetSecurityInfo@28 -SetSecurityInfoExA@36 -SetSecurityInfoExW@36 -SetServiceBits@16 SetServiceObjectSecurity@12 SetServiceStatus@8 -SetThreadToken@8 SetTokenInformation@16 -SetTraceCallback@8 -SetUserFileEncryptionKey@4 -SetUserFileEncryptionKeyEx@16 StartServiceA@12 StartServiceCtrlDispatcherA@4 StartServiceCtrlDispatcherW@4 StartServiceW@12 -StartTraceA@12 -StartTraceW@12 -SynchronizeWindows31FilesAndWindowsNTRegistry@16 -StopTraceA@16 -StopTraceW@16 +UnlockServiceDatabase@4 + +; This is list of symbols added in Win32s 1.20 and available in all Win9x and WinNT versions +SetThreadToken@8 + +; This is list of symbols added in Win32s 1.20 and available in all WinNT versions, but not in Win9x +ElfBackupEventLogFileA@8 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfBackupEventLogFileW@8 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfChangeNotify@8 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfClearEventLogFileA@8 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfClearEventLogFileW@8 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfCloseEventLog@4 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfDeregisterEventSource@4 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfNumberOfRecords@8 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfOldestRecord@8 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfOpenBackupEventLogA@12 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfOpenBackupEventLogW@12 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfOpenEventLogA@12 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfOpenEventLogW@12 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfReadEventLogA@28 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfReadEventLogW@28 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfRegisterEventSourceA@12 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfRegisterEventSourceW@12 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfReportEventA@48 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +ElfReportEventW@48 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +I_ScSetServiceBitsA@20 +I_ScSetServiceBitsW@20 +LsaAddPrivilegesToAccount@8 +LsaClearAuditLog@4 +LsaClose@4 +LsaCreateAccount@16 +LsaCreateSecret@16 +LsaCreateTrustedDomain@16 +LsaDelete@4 +LsaEnumerateAccounts@20 +LsaEnumeratePrivileges@20 +LsaEnumeratePrivilegesOfAccount@8 +LsaEnumerateTrustedDomains@20 +LsaFreeMemory@4 +LsaGetQuotasForAccount@8 +LsaGetSystemAccessAccount@8 +LsaICLookupNames@40 ; Win32s has ABI "LsaICLookupNames@40", Windows NT 3.1-4.0 has ABI "LsaICLookupNames@28", Windows 2000 has ABI "LsaICLookupNames@32", Windows XP and new has ABI "LsaICLookupNames@40" +LsaICLookupSids@36 ; Win32s has ABI "LsaICLookupSids@36", Windows NT 3.1-4.0 has ABI "LsaICLookupSids@28", Windows 2000 has ABI "LsaICLookupSids@32", Windows XP and new has ABI "LsaICLookupSids@36" +LsaLookupNames@20 +LsaLookupPrivilegeDisplayName@16 +LsaLookupPrivilegeName@12 +LsaLookupPrivilegeValue@12 +LsaLookupSids@20 +LsaOpenAccount@16 +LsaOpenPolicy@16 +LsaOpenSecret@16 +LsaOpenTrustedDomain@16 +LsaQueryInfoTrustedDomain@12 +LsaQueryInformationPolicy@12 +LsaQuerySecret@20 +LsaQuerySecurityObject@12 +LsaRemovePrivilegesFromAccount@12 +LsaSetInformationPolicy@12 +LsaSetInformationTrustedDomain@12 +LsaSetQuotasForAccount@8 +LsaSetSecret@12 +LsaSetSecurityObject@12 +LsaSetSystemAccessAccount@8 +QueryWindows31FilesMigration@4 ; removed in Windows Server 2003 +SynchronizeWindows31FilesAndWindowsNTRegistry@16 ; removed in Windows Server 2003 SystemFunction001@12 SystemFunction002@12 SystemFunction003@8 @@ -817,34 +302,320 @@ SystemFunction028@8 SystemFunction029@8 SystemFunction030@8 SystemFunction031@8 + +; This is list of symbols added in Win32s 1.20, available in all Win9x versions and since Windows NT 3.5 +IsTextUnicode@12 +NotifyChangeEventLog@8 +SetServiceBits@16 + +; This is list of symbols added in Win32s 1.20, available since Windows NT 3.5, but not available in Win9x SystemFunction032@8 SystemFunction033@8 + +; This is list of symbols added in Win32s 1.25, available in all Win9x versions and since Windows NT 3.51 +CreateProcessAsUserA@44 +CreateProcessAsUserW@44 +ImpersonateLoggedOnUser@4 +LogonUserA@24 +LogonUserW@24 + +; This is list of symbols added in Win32s 1.25, available since Windows NT 3.51, but not available in Win9x +LsaAddAccountRights@16 +LsaDeleteTrustedDomain@8 +LsaEnumerateAccountRights@16 +LsaEnumerateAccountsWithUserRight@16 +LsaQueryTrustedDomainInfo@16 +LsaRemoveAccountRights@20 +LsaRetrievePrivateData@12 +LsaSetTrustedDomainInformation@16 +LsaStorePrivateData@12 + +; This is list of symbols added in Win32s 1.30, available in all Win9x versions and since Windows NT 3.51 +RegQueryMultipleValuesA@20 +RegQueryMultipleValuesW@20 + +; This is list of symbols added in Win32s 1.30, available since Windows NT 3.51, but not available in Win9x +LsaNtStatusToWinError@4 + +;; This is end of Win32s symbols ;; + +; This is list of symbols available in all Win9x versions, but not available in Win32s and WinNT +; RegRemapPreDefKey@8 + +; This is list of symbols added in Windows 95 OSR2 and also since Windows NT 4.0, but not available in Win32s +CryptAcquireContextA@20 +CryptCreateHash@20 +CryptDecrypt@24 +CryptDeriveKey@20 +CryptDestroyHash@4 +CryptDestroyKey@4 +CryptEncrypt@28 +CryptExportKey@24 +CryptGenKey@16 +CryptGenRandom@12 +CryptGetHashParam@20 +CryptGetKeyParam@20 +CryptGetProvParam@20 +CryptGetUserKey@12 +CryptHashData@16 +CryptHashSessionKey@12 +CryptImportKey@24 +CryptReleaseContext@8 +CryptSetHashParam@16 +CryptSetKeyParam@16 +CryptSetProvParam@16 +CryptSetProviderA@8 +CryptSignHashA@24 +CryptVerifySignatureA@24 + +; This is list of symbols added in Windows 98 and also since Windows NT 4.0, but not available in Win32s +BuildExplicitAccessWithNameA@20 +BuildExplicitAccessWithNameW@20 +BuildImpersonateExplicitAccessWithNameA@24 +BuildImpersonateExplicitAccessWithNameW@24 +BuildImpersonateTrusteeA@8 +BuildImpersonateTrusteeW@8 +BuildSecurityDescriptorA@36 +BuildSecurityDescriptorW@36 +BuildTrusteeWithNameA@8 +BuildTrusteeWithNameW@8 +BuildTrusteeWithSidA@8 +BuildTrusteeWithSidW@8 +CryptAcquireContextW@20 +CryptSetProviderW@8 +CryptSignHashW@24 +CryptVerifySignatureW@24 +DuplicateTokenEx@24 +GetAuditedPermissionsFromAclA@16 +GetAuditedPermissionsFromAclW@16 +GetCurrentHwProfileA@4 +GetCurrentHwProfileW@4 +GetEffectiveRightsFromAclA@12 +GetEffectiveRightsFromAclW@12 +GetExplicitEntriesFromAclA@12 +GetExplicitEntriesFromAclW@12 +GetMultipleTrusteeA@4 +GetMultipleTrusteeOperationA@4 +GetMultipleTrusteeOperationW@4 +GetMultipleTrusteeW@4 +GetNamedSecurityInfoA@32 +GetNamedSecurityInfoW@32 +GetSecurityInfo@32 +GetTrusteeNameA@4 +GetTrusteeNameW@4 +GetTrusteeTypeA@4 +GetTrusteeTypeW@4 +LookupSecurityDescriptorPartsA@28 +LookupSecurityDescriptorPartsW@28 +ObjectDeleteAuditAlarmA@12 +ObjectDeleteAuditAlarmW@12 +SetEntriesInAclA@16 +SetEntriesInAclW@16 +SetNamedSecurityInfoA@28 +SetNamedSecurityInfoW@28 +SetSecurityInfo@28 + +; This is list of symbols added in Windows 98 and also since Windows NT 4.0 SP4, but not available in Win32s +CancelOverlappedAccess@4 +ConvertAccessToSecurityDescriptorA@20 +ConvertAccessToSecurityDescriptorW@20 +ConvertSecurityDescriptorToAccessA@28 +ConvertSecurityDescriptorToAccessNamedA@28 +ConvertSecurityDescriptorToAccessNamedW@28 +ConvertSecurityDescriptorToAccessW@28 +GetAccessPermissionsForObjectA@36 +GetAccessPermissionsForObjectW@36 +GetNamedSecurityInfoExA@36 +GetNamedSecurityInfoExW@36 +GetOverlappedAccessResults@16 +GetSecurityInfoExA@36 +GetSecurityInfoExW@36 +SetEntriesInAccessListA@24 +SetEntriesInAccessListW@24 +SetEntriesInAuditListA@24 +SetEntriesInAuditListW@24 +SetNamedSecurityInfoExA@36 +SetNamedSecurityInfoExW@36 +SetSecurityInfoExA@36 +SetSecurityInfoExW@36 +TrusteeAccessToObjectA@24 +TrusteeAccessToObjectW@24 + +; This is list of symbols added in Windows 98 and also since Windows 2000, but not available in Win32s +CryptContextAddRef@12 +CryptDuplicateHash@16 +CryptDuplicateKey@16 +CryptEnumProviderTypesA@24 +CryptEnumProviderTypesW@24 +CryptEnumProvidersA@24 +CryptEnumProvidersW@24 +CryptGetDefaultProviderA@20 +CryptGetDefaultProviderW@20 +CryptSetProviderExA@16 +CryptSetProviderExW@16 + +; This is list of symbols added in Windows ME, but not available in Win32s and WinNT +; CryptGetLocalKeyLimits@16 + +;; This is end of Win9x symbols ;; + +; This is list of symbols (not mentioned in previous sections) added in Windows NT 4.0, but not available in Win32s and Win9x +; BuildAccessRequestA@12 ; removed in Windows NT 4.0 SP4 +; BuildAccessRequestW@12 ; removed in Windows NT 4.0 SP4 +; DenyAccessRightsA@16 ; removed in Windows NT 4.0 SP4 +; DenyAccessRightsW@16 ; removed in Windows NT 4.0 SP4 +EnumServiceGroupW@36 +; GetAuditedPermissionsFromSDA@16 ; removed in Windows NT 4.0 SP4 +; GetAuditedPermissionsFromSDW@16 ; removed in Windows NT 4.0 SP4 +; GetEffectiveAccessRightsA@16 ; removed in Windows NT 4.0 SP4 +; GetEffectiveAccessRightsW@16 ; removed in Windows NT 4.0 SP4 +; GetEffectiveRightsFromSDA@12 ; removed in Windows NT 4.0 SP4 +; GetEffectiveRightsFromSDW@12 ; removed in Windows NT 4.0 SP4 +; GetExplicitAccessRightsA@16 ; removed in Windows NT 4.0 SP4 +; GetExplicitAccessRightsW@16 ; removed in Windows NT 4.0 SP4 +; GrantAccessRightsA@16 ; removed in Windows NT 4.0 SP4 +; GrantAccessRightsW@16 ; removed in Windows NT 4.0 SP4 +I_ScGetCurrentGroupStateW@12 +; IsAccessPermittedA@20 ; removed in Windows NT 4.0 SP4 +; IsAccessPermittedW@20 ; removed in Windows NT 4.0 SP4 +LsaGetUserName@8 +; NTAccessMaskToProvAccessRights@12 ; removed in Windows NT 4.0 SP4 +; ProvAccessRightsToNTAccessMask@8 ; removed in Windows NT 4.0 SP4 +; ReplaceAllAccessRightsA@16 ; removed in Windows NT 4.0 SP4 +; ReplaceAllAccessRightsW@16 ; removed in Windows NT 4.0 SP4 +; RevokeExplicitAccessRightsA@16 ; removed in Windows NT 4.0 SP4 +; RevokeExplicitAccessRightsW@16 ; removed in Windows NT 4.0 SP4 +; SetAccessRightsA@16 ; removed in Windows NT 4.0 SP4 +; SetAccessRightsW@16 ; removed in Windows NT 4.0 SP4 + +; This is list of symbols (not mentioned in previous sections) added in Windows NT 4.0 SP4, but not available in Win32s and Win9x +EnumServicesStatusExA@40 +EnumServicesStatusExW@40 +LsaGetRemoteUserName@12 +QueryServiceStatusEx@20 + +; This is list of symbols added in Windows 2000 +AccessCheckByType@44 +AccessCheckByTypeAndAuditAlarmA@64 +AccessCheckByTypeAndAuditAlarmW@64 +AccessCheckByTypeResultList@44 +AccessCheckByTypeResultListAndAuditAlarmA@64 +AccessCheckByTypeResultListAndAuditAlarmByHandleA@68 +AccessCheckByTypeResultListAndAuditAlarmByHandleW@68 +AccessCheckByTypeResultListAndAuditAlarmW@64 +AddAccessAllowedAceEx@20 +AddAccessAllowedObjectAce@28 +AddAccessDeniedAceEx@20 +AddAccessDeniedObjectAce@28 +AddAuditAccessAceEx@28 +AddAuditAccessObjectAce@36 +AddUsersToEncryptedFile@8 +BuildTrusteeWithObjectsAndNameA@24 +BuildTrusteeWithObjectsAndNameW@24 +BuildTrusteeWithObjectsAndSidA@20 +BuildTrusteeWithObjectsAndSidW@20 +ChangeServiceConfig2A@12 +ChangeServiceConfig2W@12 +CheckTokenMembership@12 +CloseEncryptedFileRaw@4 +CloseTrace@8 +CommandLineFromMsiDescriptor@12 +ControlTraceA@20 +ControlTraceW@20 +ConvertSDToStringSDRootDomainA@24 +ConvertSDToStringSDRootDomainW@24 +ConvertSecurityDescriptorToStringSecurityDescriptorA@20 +ConvertSecurityDescriptorToStringSecurityDescriptorW@20 +ConvertSidToStringSidA@8 +ConvertSidToStringSidW@8 +ConvertStringSDToSDRootDomainA@20 +ConvertStringSDToSDRootDomainW@20 +ConvertStringSecurityDescriptorToSecurityDescriptorA@16 +ConvertStringSecurityDescriptorToSecurityDescriptorW@16 +ConvertStringSidToSidA@8 +ConvertStringSidToSidW@8 +ConvertToAutoInheritPrivateObjectSecurity@24 +CreatePrivateObjectSecurityEx@32 +CreateProcessWithLogonW@44 +CreateRestrictedToken@36 +CreateTraceInstanceId@8 +DecryptFileA@8 +DecryptFileW@8 +DuplicateEncryptionInfoFile@20 ; Windows 2000 has ABI "DuplicateEncryptionInfoFile@8", Windows XP and new has ABI "DuplicateEncryptionInfoFile@20" +EnableTrace@24 +EncryptFileA@4 +EncryptFileW@4 +EncryptionDisable@8 +FileEncryptionStatusA@8 +FileEncryptionStatusW@8 +FreeEncryptionCertificateHashList@4 +GetEventLogInformation@20 +GetLocalManagedApplications@12 +GetManagedApplications@20 +GetMangledSiteSid@12 ; removed in Windows XP +GetSecurityDescriptorRMControl@8 +GetSiteDirectoryA@12 ; removed in Windows XP +GetSiteDirectoryW@12 ; removed in Windows XP +GetSiteNameFromSid@8 ; removed in Windows XP +GetSiteSidFromToken@4 ; removed in Windows XP +GetSiteSidFromUrl@4 ; removed in Windows XP +GetTraceEnableFlags@8 +GetTraceEnableLevel@8 +GetTraceLoggerHandle@4 +GetTrusteeFormA@4 +GetTrusteeFormW@4 +I_ScIsSecurityProcess@0 +I_ScPnPGetServiceName@12 +ImpersonateAnonymousToken@4 +InitiateSystemShutdownExA@24 +InitiateSystemShutdownExW@24 +InstallApplication@4 +; IsInSandbox@0 ; removed in Windows XP +IsProcessRestricted@0 ; removed in Windows XP +IsTokenRestricted@4 +LsaCreateTrustedDomainEx@20 +LsaEnumerateTrustedDomainsEx@20 +LsaOpenTrustedDomainByName@16 +LsaQueryDomainInformationPolicy@12 +LsaQueryTrustedDomainInfoByName@16 +LsaSetDomainInformationPolicy@12 +LsaSetTrustedDomainInfoByName@16 +MakeAbsoluteSD2@8 +OpenEncryptedFileRawA@12 +OpenEncryptedFileRawW@12 +OpenTraceA@4 +OpenTraceW@4 +ProcessTrace@16 +QueryAllTracesA@12 +QueryAllTracesW@12 +QueryRecoveryAgentsOnEncryptedFile@8 +QueryServiceConfig2A@20 +QueryServiceConfig2W@20 +QueryUsersOnEncryptedFile@8 +ReadEncryptedFileRaw@12 +RegDisablePredefinedCache@0 +RegOpenCurrentUser@8 +RegOpenUserClassesRoot@16 +RegOverridePredefKey@8 +RegisterServiceCtrlHandlerExA@12 +RegisterServiceCtrlHandlerExW@12 +RegisterTraceGuidsA@32 +RegisterTraceGuidsW@32 +RemoveTraceCallback@4 +RemoveUsersFromEncryptedFile@8 +SetPrivateObjectSecurityEx@24 +SetSecurityDescriptorControl@12 +SetSecurityDescriptorRMControl@8 +SetTraceCallback@8 +SetUserFileEncryptionKey@4 +StartTraceA@12 +StartTraceW@12 SystemFunction034@12 SystemFunction035@4 -SystemFunction036@8 -SystemFunction040@12 -SystemFunction041@12 TraceEvent@12 TraceEventInstance@20 -TraceMessage -TraceMessageVa@24 -TraceQueryInformation@24 -TraceSetInformation@20 -TreeResetNamedSecurityInfoA@44 -TreeResetNamedSecurityInfoW@44 -TreeSetNamedSecurityInfoA@44 -TreeSetNamedSecurityInfoW@44 -TrusteeAccessToObjectA@24 -TrusteeAccessToObjectW@24 -UninstallApplication@8 -UnlockServiceDatabase@4 -UnregisterIdleTask@12 +UninstallApplication@8 ; Windows 2000 has ABI "UninstallApplication@4", Windows XP and new has ABI "UninstallApplication@8" UnregisterTraceGuids@8 -UpdateTraceA@16 -UpdateTraceW@16 -UsePinForEncryptedFilesA@12 -UsePinForEncryptedFilesW@12 -WaitServiceState@16 WmiCloseBlock@4 WmiDevInstToInstanceNameA@16 WmiDevInstToInstanceNameW@16 @@ -860,18 +631,437 @@ WmiNotificationRegistrationA@20 WmiNotificationRegistrationW@20 WmiOpenBlock@12 WmiQueryAllDataA@12 -WmiQueryAllDataMultipleA@16 -WmiQueryAllDataMultipleW@16 WmiQueryAllDataW@12 WmiQueryGuidInformation@8 WmiQuerySingleInstanceA@16 -WmiQuerySingleInstanceMultipleA@20 -WmiQuerySingleInstanceMultipleW@20 WmiQuerySingleInstanceW@16 -WmiReceiveNotificationsA@16 -WmiReceiveNotificationsW@16 WmiSetSingleInstanceA@20 WmiSetSingleInstanceW@20 WmiSetSingleItemA@24 WmiSetSingleItemW@24 WriteEncryptedFileRaw@12 + +; In Windows 2000 SP1 there was no new symbol + +; This is list of symbols added in Windows 2000 SP2 +EqualDomainSid@12 + +; This is list of symbols added in Windows 2000 SP3 +CreateWellKnownSid@16 +GetWindowsAccountDomainSid@12 +IsWellKnownSid@8 +LsaOpenPolicySce@16 +SystemFunction040@12 +SystemFunction041@12 + +; This is list of symbols added in Windows 2000 SP4 and Windows XP SP2 (not available in Windows XP and Windows XP SP1) +; CreateProcessAsUserSecure@0 ; removed in Windows Server 2003 +ElfFlushEventLog@4 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) + +; This is list of symbols added in Windows XP +A_SHAFinal@8 +A_SHAInit@4 +A_SHAUpdate@12 +CloseCodeAuthzLevel@4 +ComputeAccessTokenFromCodeAuthzLevel@20 +ConvertStringSDToSDDomainA@24 +ConvertStringSDToSDDomainW@24 +CreateCodeAuthzLevel@20 +CreatePrivateObjectSecurityWithMultipleInheritance@36 +CredDeleteA@12 +CredDeleteW@12 +CredEnumerateA@16 +CredEnumerateW@16 +CredFree@4 +CredGetSessionTypes@8 +CredGetTargetInfoA@12 +CredGetTargetInfoW@12 +CredIsMarshaledCredentialA@4 +CredIsMarshaledCredentialW@4 +CredMarshalCredentialA@12 +CredMarshalCredentialW@12 +CredProfileLoaded@0 +CredReadA@16 +CredReadDomainCredentialsA@16 +CredReadDomainCredentialsW@16 +CredReadW@16 +CredRenameA@16 +CredRenameW@16 +CredUnmarshalCredentialA@12 +CredUnmarshalCredentialW@12 +CredWriteA@8 +CredWriteDomainCredentialsA@12 +CredWriteDomainCredentialsW@12 +CredWriteW@8 +CredpConvertCredential@16 +CredpConvertTargetInfo@16 +CredpDecodeCredential@4 +CredpEncodeCredential@4 +EncryptedFileKeyInfo@12 +EnumerateTraceGuids@12 +FlushTraceA@16 +FlushTraceW@16 +FreeEncryptedFileKeyInfo@4 +FreeInheritedFromArray@12 +GetInformationCodeAuthzLevelW@20 +GetInformationCodeAuthzPolicyW@24 +GetInheritanceSourceA@40 +GetInheritanceSourceW@40 +GetLocalManagedApplicationData@12 +GetManagedApplicationCategories@8 +I_ScSendTSMessage@16 +IdentifyCodeAuthzLevelW@16 +IsTokenUntrusted@4 +LogonUserExA@40 +LogonUserExW@40 +LsaICLookupNamesWithCreds@48 +LsaICLookupSidsWithCreds@48 +LsaLookupNames2@24 +LsaQueryForestTrustInformation@12 +LsaSetForestTrustInformation@20 +MD4Final@4 +MD4Init@4 +MD4Update@12 +MD5Final@4 +MD5Init@4 +MD5Update@12 +MSChapSrvChangePassword2@28 +MSChapSrvChangePassword@28 +ProcessIdleTasks@0 +QueryTraceA@16 +QueryTraceW@16 +RegSaveKeyExA@16 +RegSaveKeyExW@16 +RegisterIdleTask@16 +SaferCloseLevel@4 +SaferComputeTokenFromLevel@20 +SaferCreateLevel@20 +SaferGetLevelInformation@20 +SaferGetPolicyInformation@24 +SaferIdentifyLevel@16 +SaferRecordEventLogEntry@12 +SaferSetLevelInformation@16 +SaferSetPolicyInformation@20 +SaferiChangeRegistryScope@8 +SaferiCompareTokenLevels@12 +SaferiIsExecutableFileType@8 +SaferiPopulateDefaultsInRegistry@8 +SaferiRecordEventLogEntry@12 +; SaferiReplaceProcessThreadTokens@12 ; removed in Windows 7 +SaferiSearchMatchingHashRules@24 +SetInformationCodeAuthzLevelW@16 +SetInformationCodeAuthzPolicyW@20 +StopTraceA@16 +StopTraceW@16 +SystemFunction036@8 +TraceMessage ; cdecl +TraceMessageVa@24 +TreeResetNamedSecurityInfoA@44 +TreeResetNamedSecurityInfoW@44 +UnregisterIdleTask@12 +UpdateTraceA@16 +UpdateTraceW@16 +; WdmWmiServiceMain@8 ; removed in Windows Vista +; WmiGetFirstTraceOffset@4 ; removed in Windows Vista +; WmiGetTraceHeader@12 ; removed in Windows Vista +; WmiParseTraceEvent@20 ; removed in Windows Vista +WmiQueryAllDataMultipleA@16 +WmiQueryAllDataMultipleW@16 +WmiQuerySingleInstanceMultipleA@20 +WmiQuerySingleInstanceMultipleW@20 +WmiReceiveNotificationsA@16 +WmiReceiveNotificationsW@16 +; Wow64Win32ApiEntry@12 ; removed in Windows 7 + +; This is list of symbols added in Windows XP SP1 +; WmiCloseTraceWithCursor@4 ; removed in Windows Vista +; WmiConvertTimestamp@12 ; removed in Windows Vista +; WmiGetNextEvent@4 ; removed in Windows Vista +; WmiOpenTraceWithCursor@4 ; removed in Windows Vista + +; In Windows XP SP2 there was no new symbol + +; This is list of symbols added in Windows XP SP3 and Windows Vista (not available in any version of Windows Server 2003) +RegDisablePredefinedCacheEx@0 + +; This is list of symbols added in Windows Server 2003 +CreateProcessWithTokenW@36 + +; This is list of symbols added in Windows Server 2003 SP1 and Windows XP x64 SP1 (WoW64 version) +ElfReportEventAndSourceW@60 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +I_QueryTagInformation@12 +RegConnectRegistryExA@16 +RegConnectRegistryExW@16 +RegDeleteKeyExA@16 +RegDeleteKeyExW@16 +RegDisableReflectionKey@4 +RegEnableReflectionKey@4 +RegGetValueA@28 +RegGetValueW@28 +RegQueryReflectionKey@8 + +; In Windows Server 2003 SP2 and Windows XP x64 SP2 (WoW64 version) there was no new symbol + +; This is list of symbols added in Windows Vista +AddMandatoryAce@20 +AddUsersToEncryptedFileEx@16 +AuditComputeEffectivePolicyBySid@16 +AuditComputeEffectivePolicyByToken@16 +AuditEnumerateCategories@8 +AuditEnumeratePerUserPolicy@4 +AuditEnumerateSubCategories@16 +AuditFree@4 +AuditLookupCategoryGuidFromCategoryId@8 +AuditLookupCategoryIdFromCategoryGuid@8 +AuditLookupCategoryNameA@8 +AuditLookupCategoryNameW@8 +AuditLookupSubCategoryNameA@8 +AuditLookupSubCategoryNameW@8 +AuditQueryPerUserPolicy@16 +AuditQuerySecurity@8 +AuditQuerySystemPolicy@12 +AuditSetPerUserPolicy@12 +AuditSetSecurity@8 +AuditSetSystemPolicy@8 +; CheckAppInitBlockedServiceIdentity@4 ; removed in Windows 7 +CloseThreadWaitChainSession@4 +ControlServiceExA@16 +ControlServiceExW@16 +CredBackupCredentials@20 +CredEncryptAndMarshalBinaryBlob@12 +CredFindBestCredentialA@16 +CredFindBestCredentialW@16 +CredIsProtectedA@8 +CredIsProtectedW@8 +CredProfileUnloaded@0 +CredProtectA@24 +CredProtectW@24 +CredReadByTokenHandle@20 +CredRestoreCredentials@16 +CredUnprotectA@20 +CredUnprotectW@20 +CredpConvertOneCredentialSize@8 +CredpEncodeSecret@20 +EnableTraceEx@48 +EnumerateTraceGuidsEx@24 +EventAccessControl@20 +EventAccessQuery@12 +EventAccessRemove@4 +EventActivityIdControl@8 +EventEnabled@12 +EventProviderEnabled@20 +EventRegister@16 +EventUnregister@8 +EventWrite@20 +EventWriteEndScenario@20 +EventWriteStartScenario@20 +EventWriteString@24 +EventWriteTransfer@28 +FlushEfsCache@4 +FreeEncryptedFileMetadata@4 +GetEncryptedFileMetadata@12 +GetThreadWaitChain@28 +I_ScQueryServiceConfig@12 +I_ScSendPnPMessage@24 +I_ScValidatePnPService@12 +InitiateShutdownA@20 +InitiateShutdownW@20 +IsValidRelativeSecurityDescriptor@12 +LogonUserExExW@44 +LsaManageSidNameMapping@12 +NotifyServiceStatusChange@12 +NotifyServiceStatusChangeA@12 +NotifyServiceStatusChangeW@12 +OpenThreadWaitChainSession@8 +PerfAddCounters@12 +PerfCloseQueryHandle@4 +PerfCreateInstance@16 +PerfDecrementULongCounterValue@16 +PerfDecrementULongLongCounterValue@20 +PerfDeleteCounters@12 +PerfDeleteInstance@8 +PerfEnumerateCounterSet@16 +PerfEnumerateCounterSetInstances@20 +PerfIncrementULongCounterValue@16 +PerfIncrementULongLongCounterValue@20 +PerfOpenQueryHandle@8 +PerfQueryCounterData@16 +PerfQueryCounterInfo@16 +PerfQueryCounterSetRegistrationInfo@28 +PerfQueryInstance@16 +PerfSetCounterRefValue@16 +PerfSetCounterSetInfo@12 +PerfSetULongCounterValue@16 +PerfSetULongLongCounterValue@20 +PerfStartProvider@12 +PerfStartProviderEx@12 +PerfStopProvider@4 +ProcessIdleTasksW@16 +QuerySecurityAccessMask@8 +RegCopyTreeA@12 +RegCopyTreeW@12 +RegCreateKeyTransactedA@44 +RegCreateKeyTransactedW@44 +RegDeleteKeyTransactedA@24 +RegDeleteKeyTransactedW@24 +RegDeleteKeyValueA@12 +RegDeleteKeyValueW@12 +RegDeleteTreeA@8 +RegDeleteTreeW@8 +RegLoadAppKeyA@20 +RegLoadAppKeyW@20 +RegLoadMUIStringA@28 +RegLoadMUIStringW@28 +RegOpenKeyTransactedA@28 +RegOpenKeyTransactedW@28 +RegRenameKey@12 +RegSetKeyValueA@24 +RegSetKeyValueW@24 +RegisterWaitChainCOMCallback@8 +SetEncryptedFileMetadata@24 +SetSecurityAccessMask@8 +SetUserFileEncryptionKeyEx@16 +TreeSetNamedSecurityInfoA@44 +TreeSetNamedSecurityInfoW@44 +UsePinForEncryptedFilesA@12 +UsePinForEncryptedFilesW@12 + +; In Windows Vista SP1 there was no new symbol + +; In Windows Vista SP2 there was no new symbol + +; This is list of symbols added in Windows 7 +AddConditionalAce@32 +AuditQueryGlobalSaclA@8 +AuditQueryGlobalSaclW@8 +AuditSetGlobalSaclA@8 +AuditSetGlobalSaclW@8 +EnableTraceEx2@44 +EventWriteEx@40 +SaferiIsDllAllowed@8 ; Windows 7 has ABI "SaferiIsDllAllowed@12", Windows 8 and new has ABI "SaferiIsDllAllowed@8" +TraceSetInformation@20 + +; This is list of ordinal-only symbols added in Windows 7 +; Symbol names are taken from: +; https://www.geoffchappell.com/studies/windows/win32/advapi32/history/ords61.htm +SaferiRegisterExtensionDll@8 @1000 NONAME + +; In Windows 7 SP1 there was no new symbol + +; This is list of symbols added in Windows 8 +BaseRegCloseKey@4 +BaseRegCreateKey@32 +BaseRegDeleteKeyEx@16 +BaseRegDeleteValue@8 +BaseRegFlushKey@4 +BaseRegGetVersion@8 +BaseRegLoadKey@12 +BaseRegOpenKey@20 +BaseRegRestoreKey@12 +BaseRegSaveKeyEx@16 +BaseRegSetKeySecurity@12 +BaseRegSetValue@20 +BaseRegUnLoadKey@8 +CheckForHiberboot@8 +ConvertSDToStringSDDomainW@28 +; CredProfileLoadedEx@4 +EnumDynamicTimeZoneInformation@8 +; EtwLogSysConfigExtension@8 ; removed in Windows 10 Anniversary Update (Redstone / 1607) +EventSetInformation@20 +GetDynamicTimeZoneInformationEffectiveYears@12 +GetStringConditionFromBinary@16 +; I_ScRegisterPreshutdownRestart@8 +LsaGetAppliedCAPIDs@12 +LsaLookupSids2@24 +LsaQueryCAPs@16 +LsaSetCAPs@12 +; MIDL_user_free_Ext@4 +OperationEnd@4 +OperationStart@4 +PerfRegCloseKey@4 +PerfRegEnumKey@24 +PerfRegEnumValue@32 +PerfRegQueryInfoKey@44 +PerfRegQueryValue@28 +PerfRegSetValue@24 +; PsmActivateApplication@12 ; removed in Windows 8.1 +; PsmAdjustActivationToken@24 ; removed in Windows 8.1 +; PsmQueryBackgroundActivationType@8 ; removed in Windows 8.1 +; PsmRegisterApplicationProcess@8 ; removed in Windows 8.1 +QueryServiceDynamicInformation@12 +RemoteRegEnumKeyWrapper@20 +RemoteRegEnumValueWrapper@28 +RemoteRegQueryInfoKeyWrapper@40 +RemoteRegQueryValueWrapper@24 +SafeBaseRegGetKeySecurity@16 +TraceQueryInformation@24 +WaitServiceState@16 + +; In Windows 8.1 there was no new symbol + +; This is list of symbols added in Windows 10 (Threshold / 1507) +NpGetUserName@12 + +; This is list of symbols added in Windows 10 November Update (Threshold 2 / 1511) +; I_ScReparseServiceDatabase@4 +; QueryLocalUserServiceName@12 +; QueryUserServiceName@20 + +; This is list of symbols added in Windows 10 Anniversary Update (Redstone / 1607) +CveEventWrite@8 + +; This is list of symbols added in Windows 10 Creators Update (Redstone 2 / 1703) +; QueryUserServiceNameForContext@20 + +; This is list of symbols added in Windows 10 Fall Creators Update (Redstone 3 / 1709) +; CreateServiceEx@56 +QueryTraceProcessingHandle@32 +RemoteRegQueryMultipleValues2Wrapper@24 +RemoteRegQueryMultipleValuesWrapper@20 + +; In Windows 10 April 2018 Update (Redstone 4 / 1803) there was no new symbol + +; In Windows 10 October 2018 Update (Redstone 5 / 1809) there was no new symbl + +; In Windows 10 May 2019 Update (19H1 / 1903) there was no new symbol + +; In Windows 10 November 2019 Update (19H2 /1909) there was no new symbol + +; In Windows 10 May 2020 Update (20H1 / 2004) there was no new symbol + +; In Windows 10 October 2020 Update (20H2) there was no new symbol + +; In Windows 10 May 2021 Update (21H1) there was no new symbol + +; In Windows 10 November 2021 Update (21H2) there was no new symbol + +; This is list of symbols added in Windows 10 2022 Update (22H2) and Windows 11 2022 Update (Sun Valley 2 / 22H2) (WoW64 version) (not available in Windows 11 (Sun Valley / 21H2)) +LsaInvokeTrustScanner@16 +LsaQueryForestTrustInformation2@16 +LsaSetForestTrustInformation2@24 + +; This is list of symbols added in Windows 11 (Sun Valley / 21H2) (WoW64 version) +LsaConfigureAutoLogonCredentials@0 +; LsaDisablePasswordLessCurrentUser@0 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +LsaDisableUserArso@4 +; LsaEnablePasswordLessCurrentUser@0 ; removed in Windows 11 2022 Update (Sun Valley 2 / 22H2) +LsaEnableUserArso@4 +LsaGetDeviceRegistrationInfo@4 +LsaIsUserArsoAllowed@4 +LsaIsUserArsoEnabled@8 +LsaProfileDeleted@4 +LsaValidateProcUniqueLuid@4 + +; In Windows 11 2022 Update (Sun Valley 2 / 22H2) (WoW64 version) there was no new symbol + +; In Windows 11 2023 Update (Sun Valley 3 / 23H2) (WoW64 version) there was no new symbol + +; This is list of symbols added in Windows 11 2024 Update (Hudson Valley / 24H2) (WoW64 version) +; LsaIOpenPolicyWithCreds@24 ; removed in Windows 11 2025 Update (Hudson Valley 2 / 25H2) + +; This is list of symbols added in Windows 11 2025 Update (Hudson Valley 2 / 25H2) (WoW64 version) +; LogonSecondaryUserIntoSessionW@20 +; LsaPurgeLocalSystemAccessTable@0 +LsaQueryLocalSystemAccess@8 +LsaQueryLocalSystemAccessAll@4 +LsaSetLocalSystemAccess@4 diff --git a/lib/libc/mingw/lib32/kernel32.def b/lib/libc/mingw/lib32/kernel32.def index 51582f24c47b6a511f35bccb03ce1cb0a2fb3ccb..0cd7a08f9755489024f48b345de945b138ced502 100644 --- a/lib/libc/mingw/lib32/kernel32.def +++ b/lib/libc/mingw/lib32/kernel32.def @@ -1,391 +1,100 @@ -; -; Definition file of KERNEL32.dll -; Automatic generated by gendef -; written by Kai Tietz 2008 -; LIBRARY "KERNEL32.dll" EXPORTS -BaseThreadInitThunk@4 -InterlockedPushListSList@8 -AcquireSRWLockExclusive@4 -AcquireSRWLockShared@4 -ActivateActCtx@8 -ActivateActCtxWorker@8 -ActivatePackageVirtualizationContext@8 + +; This file is a comprehensive documentation for 32-bit x86 kernel32.dll symbols. +; It covers all 3 platforms Win32s, Win9x and WinNT and contains information +; from native kernel32.dll libraries on 32-bit Windows systems and also from +; 32-bit WoW64 kernel32.dll libraries on 64-bit Windows systems. Symbols in this +; file are ordered by increasing Windows version in which they were introduced. +; For example symbols added in Windows 98 (which is version 4.10) are after +; Windows NT 4.0 symbols. Note that some symbols are available in Windows NT 3.1, +; missing in Windows 98 (4.10), but are again available in Windows 2000 (5.0). +; This is always mentioned in the header of section which lists symbols. +; +; BEWARE that this file contains only information about symbol availability and +; whether it is possible to load application or library which references symbol. +; It does not contain information if the particular Windows version supports and +; implements corresponding API function. Lot of -W functions are unimplemented +; on Win32s and Win9x platforms and simply signals ERROR_CALL_NOT_IMPLEMENTED. + +; This is list of symbols available in all Windows versions (Win32s since Win32s 1.1; Win9x since Windows 95; WinNT since Windows NT 3.1) AddAtomA@4 AddAtomW@4 -AddConsoleAliasA@12 -AddConsoleAliasW@12 -AddDllDirectory@4 -AddIntegrityLabelToBoundaryDescriptor@8 -AddLocalAlternateComputerNameA@8 -AddLocalAlternateComputerNameW@8 -AddRefActCtx@4 -AddRefActCtxWorker@4 -AddResourceAttributeAce@28 -AddSIDToBoundaryDescriptor@8 -AddScopedPolicyIDAce@20 -AddSecureMemoryCacheCallback@4 -AddVectoredContinueHandler@8 -AddVectoredExceptionHandler@8 -AdjustCalendarDate@12 AllocConsole@0 -AllocConsoleWithOptions@8 -AllocateUserPhysicalPages@12 -AllocateUserPhysicalPagesNuma@16 -AppPolicyGetClrCompat@8 -AppPolicyGetCreateFileAccess@8 -AppPolicyGetLifecycleManagement@8 -AppPolicyGetMediaFoundationCodecLoading@8 -AppPolicyGetProcessTerminationMethod@8 -AppPolicyGetShowDeveloperDiagnostic@8 -AppPolicyGetThreadInitializationType@8 -AppPolicyGetWindowingModel@8 -AppXGetOSMaxVersionTested@8 -ApplicationRecoveryFinished@4 -ApplicationRecoveryInProgress@4 -AreFileApisANSI@0 -AreShortNamesEnabled@8 -AssignProcessToJobObject@8 -AttachConsole@4 BackupRead@28 BackupSeek@24 BackupWrite@28 -BaseAttachCompleteThunk@0 -BaseCheckAppcompatCache@16 -BaseCheckAppcompatCacheEx@24 -BaseCheckAppcompatCacheExWorker@36 -BaseCheckAppcompatCacheWorker@16 -BaseCheckElevation@48 -BaseCheckRunApp@52 -BaseCleanupAppcompatCacheSupport@4 -BaseDllReadWriteIniFile@32 -BaseDumpAppcompatCache@0 -BaseDumpAppcompatCacheWorker@0 -BaseElevationPostProcessing@12 -BaseFlushAppcompatCache@0 -BaseFlushAppcompatCacheWorker@0 -BaseFormatObjectAttributes@16 -BaseFormatTimeOut@8 -BaseFreeAppCompatDataForProcessWorker@4 -BaseGenerateAppCompatData@24 -BaseGetNamedObjectDirectory@4 -BaseInitAppcompatCacheSupport@0 -BaseInitAppcompatCacheSupportWorker@0 -BaseIsAppcompatInfrastructureDisabled@0 -BaseIsAppcompatInfrastructureDisabledWorker@0 -BaseIsDosApplication@8 -BaseQueryModuleData@28 -BaseReadAppCompatDataForProcessWorker@12 -BaseSetLastNTError@4 -BaseUpdateAppcompatCache@12 -BaseUpdateAppcompatCacheWorker@12 -BaseUpdateVDMEntry@16 -BaseVerifyUnicodeString@4 -BaseWriteErrorElevationRequiredEvent@0 -Basep8BitStringToDynamicUnicodeString@8 -BasepAllocateActivationContextActivationBlock@16 -BasepAnsiStringToDynamicUnicodeString@8 -BasepAppContainerEnvironmentExtension@12 -BasepAppXExtension@24 -BasepCheckAppCompat@16 -BasepCheckBadapp@56 -BasepCheckWebBladeHashes@4 -BasepCheckWinSaferRestrictions@28 -BasepConstructSxsCreateProcessMessage@80 -BasepCopyEncryption@12 -BasepFreeActivationContextActivationBlock@4 -BasepFreeAppCompatData@12 -BasepGetAppCompatData@60 -BasepGetComputerNameFromNtPath@16 -BasepGetExeArchType@12 -BasepInitAppCompatData@12 -BasepIsProcessAllowed@4 -BasepMapModuleHandle@8 -BasepNotifyLoadStringResource@16 -BasepPostSuccessAppXExtension@8 -BasepProcessInvalidImage@84 -BasepQueryAppCompat@72 -BasepQueryModuleChpeSettings@40 -BasepReleaseAppXContext@4 -BasepReleaseSxsCreateProcessUtilityStruct@4 -BasepReportFault@8 -BasepSetFileEncryptionCompression@32 Beep@8 BeginUpdateResourceA@8 BeginUpdateResourceW@8 -BindIoCompletionCallback@12 BuildCommDCBA@8 BuildCommDCBAndTimeoutsA@12 BuildCommDCBAndTimeoutsW@12 BuildCommDCBW@8 -BuildIoRingCancelRequest@20 -BuildIoRingFlushFile@24 -BuildIoRingReadFile@44 -BuildIoRingReadFileScatter@40 -BuildIoRingRegisterBuffers@16 -BuildIoRingRegisterFileHandles@16 -BuildIoRingWriteFile@48 -BuildIoRingWriteFileGather@44 CallNamedPipeA@28 CallNamedPipeW@28 -CallbackMayRunLong@4 -CancelDeviceWakeupRequest@4 -CancelIo@4 -CancelIoEx@8 -CancelSynchronousIo@4 -CancelThreadpoolIo@4 -CancelTimerQueueTimer@8 -CancelWaitableTimer@4 -CeipIsOptedIn@0 -ChangeTimerQueueTimer@16 -CheckAllowDecryptedRemoteDestinationPolicy@0 -CheckElevation@20 -CheckElevationEnabled@4 -CheckForReadOnlyResource@8 -CheckForReadOnlyResourceFilter@4 -CheckNameLegalDOS8Dot3A@20 -CheckNameLegalDOS8Dot3W@20 -CheckRemoteDebuggerPresent@8 -CheckTokenCapability@12 -CheckTokenMembershipEx@16 ClearCommBreak@4 ClearCommError@12 -CloseConsoleHandle@4 CloseHandle@4 -CloseIoRing@4 -ClosePackageInfo@4 -ClosePrivateNamespace@8 CloseProfileUserMapping@0 -ClosePseudoConsole@4 -CloseState@4 -CloseThreadpool@4 -CloseThreadpoolCleanupGroup@4 -CloseThreadpoolCleanupGroupMembers@12 -CloseThreadpoolIo@4 -CloseThreadpoolTimer@4 -CloseThreadpoolWait@4 -CloseThreadpoolWork@4 -CmdBatNotification@4 -CommConfigDialogA@12 -CommConfigDialogW@12 -CompareCalendarDates@12 CompareFileTime@8 -CompareStringA@24 -CompareStringEx@36 -CompareStringOrdinal@20 CompareStringW@24 ConnectNamedPipe@8 -ConsoleIMERoutine@4 -ConsoleMenuControl@12 ContinueDebugEvent@12 -ConvertCalDateTimeToSystemTime@8 -ConvertDefaultLocale@4 -ConvertFiberToThread@0 -ConvertNLSDayOfWeekToWin32DayOfWeek@4 -ConvertSystemTimeToCalDateTime@12 -ConvertThreadToFiber@4 -ConvertThreadToFiberEx@8 -ConvertToGlobalHandle@4 -CopyContext@12 -CopyFile2@12 CopyFileA@12 -CopyFileExA@24 -CopyFileExW@24 -CopyFileTransactedA@28 -CopyFileTransactedW@28 CopyFileW@12 -CopyLZFile@8 -CreateActCtxA@4 -CreateActCtxW@4 -CreateActCtxWWorker@4 -CreateBoundaryDescriptorA@8 -CreateBoundaryDescriptorW@8 CreateConsoleScreenBuffer@20 CreateDirectoryA@8 CreateDirectoryExA@12 CreateDirectoryExW@12 -CreateDirectoryTransactedA@16 -CreateDirectoryTransactedW@16 CreateDirectoryW@8 -CreateEnclave@32 CreateEventA@16 -CreateEventExA@16 -CreateEventExW@16 CreateEventW@16 -CreateFiber@12 -CreateFiberEx@20 -CreateFile2@20 CreateFileA@28 CreateFileMappingA@24 -CreateFileMappingFromApp@24 -CreateFileMappingNumaA@28 -CreateFileMappingNumaW@28 CreateFileMappingW@24 -CreateFileTransactedA@40 -CreateFileTransactedW@40 CreateFileW@28 -CreateHardLinkA@12 -CreateHardLinkTransactedA@16 -CreateHardLinkTransactedW@16 -CreateHardLinkW@12 -CreateIoCompletionPort@16 -CreateIoRing@24 -CreateJobObjectA@8 -CreateJobObjectW@8 -CreateJobSet@12 CreateMailslotA@16 CreateMailslotW@16 -CreateMemoryResourceNotification@4 CreateMutexA@12 -CreateMutexExA@16 -CreateMutexExW@16 CreateMutexW@12 CreateNamedPipeA@32 CreateNamedPipeW@32 -CreatePackageVirtualizationContext@8 CreatePipe@16 -CreatePrivateNamespaceA@12 -CreatePrivateNamespaceW@12 CreateProcessA@40 -; MSDN says these are exported from ADVAPI32.DLL. -; CreateProcessAsUserA@44 -; CreateProcessAsUserW@44 -CreateProcessInternalA@48 -CreateProcessInternalW@48 CreateProcessW@40 -CreatePseudoConsole@20 CreateRemoteThread@28 -CreateRemoteThreadEx@32 CreateSemaphoreA@16 -CreateSemaphoreExA@24 -CreateSemaphoreExW@24 CreateSemaphoreW@16 -CreateSocketHandle@0 -CreateSymbolicLinkA@12 -CreateSymbolicLinkTransactedA@16 -CreateSymbolicLinkTransactedW@16 -CreateSymbolicLinkW@12 CreateTapePartition@16 CreateThread@24 -CreateThreadpool@4 -CreateThreadpoolCleanupGroup@0 -CreateThreadpoolIo@16 -CreateThreadpoolTimer@12 -CreateThreadpoolWait@12 -CreateThreadpoolWork@12 -CreateTimerQueue@0 -CreateTimerQueueTimer@28 -CreateToolhelp32Snapshot@8 -CreateVirtualBuffer@12 -CreateWaitableTimerA@12 -CreateWaitableTimerExA@16 -CreateWaitableTimerExW@16 -CreateWaitableTimerW@12 -CtrlRoutine@4 -DeactivateActCtx@8 -DeactivateActCtxWorker@8 -DeactivatePackageVirtualizationContext@4 DebugActiveProcess@4 -DebugActiveProcessStop@4 DebugBreak@0 -DebugBreakProcess@4 -DebugSetProcessKillOnExit@4 -DecodePointer@4 -DecodeSystemPointer@4 DefineDosDeviceA@12 DefineDosDeviceW@12 -DelayLoadFailureHook@8 DeleteAtom@4 -DeleteBoundaryDescriptor@4 DeleteCriticalSection@4 -DeleteFiber@4 DeleteFileA@4 -DeleteFileTransactedA@8 -DeleteFileTransactedW@8 DeleteFileW@4 -DeleteProcThreadAttributeList@4 -DeleteSynchronizationBarrier@4 -DeleteTimerQueue@4 -DeleteTimerQueueEx@8 -DeleteTimerQueueTimer@12 -DeleteVolumeMountPointA@4 -DeleteVolumeMountPointW@4 DeviceIoControl@32 -DisableThreadLibraryCalls@4 -DisableThreadProfiling@4 -DisassociateCurrentThreadFromCallback@4 -DiscardVirtualMemory@8 DisconnectNamedPipe@4 -DnsHostnameToComputerNameA@12 -DnsHostnameToComputerNameExW@12 -DnsHostnameToComputerNameW@12 DosDateTimeToFileTime@12 -DosPathToSessionPathA@12 -DosPathToSessionPathW@12 -DuplicateConsoleHandle@16 -DuplicateEncryptionInfoFileExt@20 DuplicateHandle@28 -DuplicatePackageVirtualizationContext@8 -EnableProcessOptionalXStateFeatures@8 -EnableThreadProfiling@20 -EncodePointer@4 -EncodeSystemPointer@4 EndUpdateResourceA@8 EndUpdateResourceW@8 EnterCriticalSection@4 -EnterSynchronizationBarrier@8 -EnumCalendarInfoA@16 -EnumCalendarInfoExA@16 -EnumCalendarInfoExEx@24 -EnumCalendarInfoExW@16 -EnumCalendarInfoW@16 -EnumDateFormatsA@12 -EnumDateFormatsExA@12 -EnumDateFormatsExEx@16 -EnumDateFormatsExW@12 -EnumDateFormatsW@12 -EnumLanguageGroupLocalesA@16 -EnumLanguageGroupLocalesW@16 EnumResourceLanguagesA@20 -EnumResourceLanguagesExA@28 -EnumResourceLanguagesExW@28 EnumResourceLanguagesW@20 EnumResourceNamesA@16 -EnumResourceNamesExA@24 -EnumResourceNamesExW@24 EnumResourceNamesW@16 EnumResourceTypesA@12 -EnumResourceTypesExA@20 -EnumResourceTypesExW@20 EnumResourceTypesW@12 -EnumSystemCodePagesA@8 -EnumSystemCodePagesW@8 -EnumSystemFirmwareTables@12 -EnumSystemGeoID@12 -EnumSystemGeoNames@12 -EnumSystemLanguageGroupsA@12 -EnumSystemLanguageGroupsW@12 -EnumSystemLocalesA@8 -EnumSystemLocalesEx@16 -EnumSystemLocalesW@8 -EnumTimeFormatsA@12 -EnumTimeFormatsEx@16 -EnumTimeFormatsW@12 -EnumUILanguagesA@12 -EnumUILanguagesW@12 -EnumerateLocalComputerNamesA@16 -EnumerateLocalComputerNamesW@16 EraseTape@12 EscapeCommFunction@8 ExitProcess@4 ExitThread@4 -ExitVDM@8 ExpandEnvironmentStringsA@12 ExpandEnvironmentStringsW@12 -ExpungeConsoleCommandHistoryA@4 -ExpungeConsoleCommandHistoryW@4 -ExtendVirtualBuffer@8 FatalAppExitA@8 FatalAppExitW@8 FatalExit@4 @@ -395,11 +104,6 @@ FileTimeToSystemTime@8 FillConsoleOutputAttribute@20 FillConsoleOutputCharacterA@20 FillConsoleOutputCharacterW@20 -FindActCtxSectionGuid@20 -FindActCtxSectionGuidWorker@20 -FindActCtxSectionStringA@20 -FindActCtxSectionStringW@20 -FindActCtxSectionStringWWorker@20 FindAtomA@4 FindAtomW@4 FindClose@4 @@ -407,96 +111,29 @@ FindCloseChangeNotification@4 FindFirstChangeNotificationA@12 FindFirstChangeNotificationW@12 FindFirstFileA@8 -FindFirstFileExA@24 -FindFirstFileExW@24 -FindFirstFileNameTransactedW@20 -FindFirstFileNameW@16 -FindFirstFileTransactedA@28 -FindFirstFileTransactedW@28 FindFirstFileW@8 -FindFirstStreamTransactedW@20 -FindFirstStreamW@16 -FindFirstVolumeA@8 -FindFirstVolumeMountPointA@12 -FindFirstVolumeMountPointW@12 -FindFirstVolumeW@8 -FindNLSString@28 -FindNLSStringEx@40 FindNextChangeNotification@4 FindNextFileA@8 -FindNextFileNameW@12 FindNextFileW@8 -FindNextStreamW@8 -FindNextVolumeA@12 -FindNextVolumeMountPointA@12 -FindNextVolumeMountPointW@12 -FindNextVolumeW@12 -FindPackagesByPackageFamily@28 FindResourceA@12 FindResourceExA@16 FindResourceExW@16 FindResourceW@12 -FindStringOrdinal@24 -FindVolumeClose@4 -FindVolumeMountPointClose@4 -FlsAlloc@4 -FlsFree@4 -FlsGetValue2@4 -FlsGetValue@4 -FlsSetValue@8 FlushConsoleInputBuffer@4 FlushFileBuffers@4 FlushInstructionCache@12 -FlushProcessWriteBuffers@0 FlushViewOfFile@8 -FoldStringA@20 FoldStringW@20 -FormatApplicationUserModelId@16 FormatMessageA@28 FormatMessageW@28 FreeConsole@0 -FreeEnvironmentStringsA@4 -FreeEnvironmentStringsW@4 FreeLibrary@4 -FreeLibraryAndExitThread@8 -FreeLibraryWhenCallbackReturns@8 -FreeMemoryJobObject@4 FreeResource@4 -FreeUserPhysicalPages@12 -FreeVirtualBuffer@4 GenerateConsoleCtrlEvent@8 GetACP@0 -GetActiveProcessorCount@4 -GetActiveProcessorGroupCount@0 -GetAppContainerAce@16 -GetAppContainerNamedObjectPath@20 -GetApplicationRecoveryCallback@20 -GetApplicationRecoveryCallbackWorker@20 -GetApplicationRestartSettings@16 -GetApplicationRestartSettingsWorker@16 -GetApplicationUserModelId@12 GetAtomNameA@12 GetAtomNameW@12 -GetBinaryType@8 -GetBinaryTypeA@8 -GetBinaryTypeW@8 -GetCPFileNameFromRegistry@12 GetCPInfo@8 -GetCPInfoExA@12 -GetCPInfoExW@12 -GetCachedSigningLevel@24 -GetCalendarDateFormat@24 -GetCalendarDateFormatEx@24 -GetCalendarDaysInMonth@16 -GetCalendarDifferenceInDays@12 -GetCalendarInfoA@24 -GetCalendarInfoEx@28 -GetCalendarInfoW@24 -GetCalendarMonthsInYear@12 -GetCalendarSupportedDateRange@12 -GetCalendarWeekNumber@16 -GetComPlusPackageInstallStatus@0 -GetCommConfig@12 GetCommMask@8 GetCommModemStatus@8 GetCommProperties@8 @@ -504,295 +141,85 @@ GetCommState@8 GetCommTimeouts@8 GetCommandLineA@0 GetCommandLineW@0 -GetCompressedFileSizeA@8 -GetCompressedFileSizeTransactedA@12 -GetCompressedFileSizeTransactedW@12 -GetCompressedFileSizeW@8 GetComputerNameA@8 -GetComputerNameExA@12 -GetComputerNameExW@12 GetComputerNameW@8 -GetConsoleAliasA@16 -GetConsoleAliasExesA@8 -GetConsoleAliasExesLengthA@0 -GetConsoleAliasExesLengthW@0 -GetConsoleAliasExesW@8 -GetConsoleAliasW@16 -GetConsoleAliasesA@12 -GetConsoleAliasesLengthA@4 -GetConsoleAliasesLengthW@4 -GetConsoleAliasesW@12 GetConsoleCP@0 -GetConsoleCharType@12 -GetConsoleCommandHistoryA@12 -GetConsoleCommandHistoryLengthA@4 -GetConsoleCommandHistoryLengthW@4 -GetConsoleCommandHistoryW@12 GetConsoleCursorInfo@8 -GetConsoleCursorMode@12 -GetConsoleDisplayMode@4 -GetConsoleFontInfo@16 -GetConsoleFontSize@8 -GetConsoleHardwareState@12 -GetConsoleHistoryInfo@4 -GetConsoleInputExeNameA@8 -GetConsoleInputExeNameW@8 -GetConsoleInputWaitHandle@0 -GetConsoleKeyboardLayoutNameA@4 -GetConsoleKeyboardLayoutNameW@4 GetConsoleMode@8 -GetConsoleNlsMode@8 -GetConsoleOriginalTitleA@8 -GetConsoleOriginalTitleW@8 GetConsoleOutputCP@0 -GetConsoleProcessList@8 GetConsoleScreenBufferInfo@8 -GetConsoleScreenBufferInfoEx@8 -GetConsoleSelectionInfo@4 GetConsoleTitleA@8 GetConsoleTitleW@8 -GetConsoleWindow@0 -GetCurrencyFormatA@24 -GetCurrencyFormatEx@24 -GetCurrencyFormatW@24 -GetCurrentActCtx@4 -GetCurrentActCtxWorker@4 -GetCurrentApplicationUserModelId@8 -GetCurrentConsoleFont@12 -GetCurrentConsoleFontEx@12 GetCurrentDirectoryA@8 GetCurrentDirectoryW@8 -GetCurrentPackageFamilyName@8 -GetCurrentPackageFullName@8 -GetCurrentPackageId@8 -GetCurrentPackageInfo@16 -GetCurrentPackagePath@8 -GetCurrentPackageVirtualizationContext@0 GetCurrentProcess@0 GetCurrentProcessId@0 -GetCurrentProcessorNumber@0 -GetCurrentProcessorNumberEx@4 GetCurrentThread@0 GetCurrentThreadId@0 -GetCurrentThreadStackLimits@8 -GetDateFormatA@24 -GetDateFormatAWorker@28 -GetDateFormatEx@28 GetDateFormatW@24 -GetDateFormatWWorker@28 -GetDefaultCommConfigA@12 -GetDefaultCommConfigW@12 -GetDevicePowerState@8 GetDiskFreeSpaceA@20 -GetDiskFreeSpaceExA@16 -GetDiskFreeSpaceExW@16 GetDiskFreeSpaceW@20 -GetDiskSpaceInformationA@8 -GetDiskSpaceInformationW@8 -GetDllDirectoryA@8 -GetDllDirectoryW@8 GetDriveTypeA@4 GetDriveTypeW@4 -GetDurationFormat@32 -GetDurationFormatEx@32 -GetDynamicTimeZoneInformation@4 -GetEnabledXStateFeatures@0 -GetEncryptedFileVersionExt@8 GetEnvironmentStrings@0 -GetEnvironmentStringsA@0 -GetEnvironmentStringsW@0 GetEnvironmentVariableA@12 GetEnvironmentVariableW@12 -GetEraNameCountedString@16 -GetErrorMode@0 GetExitCodeProcess@8 GetExitCodeThread@8 -GetExpandedNameA@8 -GetExpandedNameW@8 GetFileAttributesA@4 -GetFileAttributesExA@12 -GetFileAttributesExW@12 -GetFileAttributesTransactedA@16 -GetFileAttributesTransactedW@16 GetFileAttributesW@4 -GetFileBandwidthReservation@24 GetFileInformationByHandle@8 -GetFileInformationByHandleEx@16 -GetFileInformationByName@16 -GetFileMUIInfo@16 -GetFileMUIPath@28 GetFileSize@8 -GetFileSizeEx@8 GetFileTime@16 GetFileType@4 -GetFinalPathNameByHandleA@16 -GetFinalPathNameByHandleW@16 -GetFirmwareEnvironmentVariableA@16 -GetFirmwareEnvironmentVariableExA@20 -GetFirmwareEnvironmentVariableExW@20 -GetFirmwareEnvironmentVariableW@16 -GetFirmwareType@4 GetFullPathNameA@16 -GetFullPathNameTransactedA@20 -GetFullPathNameTransactedW@20 GetFullPathNameW@16 -GetGeoInfoA@20 -GetGeoInfoEx@16 -GetGeoInfoW@20 -GetHandleContext@4 -GetHandleInformation@8 -GetIoRingInfo@8 -GetLargePageMinimum@0 GetLargestConsoleWindowSize@4 GetLastError@0 GetLocalTime@4 -GetLocaleInfoA@16 -GetLocaleInfoEx@16 GetLocaleInfoW@16 GetLogicalDriveStringsA@8 GetLogicalDriveStringsW@8 GetLogicalDrives@0 -GetLogicalProcessorInformation@8 -GetLogicalProcessorInformationEx@12 -GetLongPathNameA@12 -GetLongPathNameTransactedA@16 -GetLongPathNameTransactedW@16 -GetLongPathNameW@12 -GetMachineTypeAttributes@8 GetMailslotInfo@20 -GetMaximumProcessorCount@4 -GetMaximumProcessorGroupCount@0 -GetMemoryErrorHandlingCapabilities@4 GetModuleFileNameA@12 GetModuleFileNameW@12 GetModuleHandleA@4 -GetModuleHandleExA@12 -GetModuleHandleExW@12 GetModuleHandleW@4 -GetNLSVersion@12 -GetNLSVersionEx@12 -GetNamedPipeAttribute@20 -GetNamedPipeClientComputerNameA@12 -GetNamedPipeClientComputerNameW@12 -GetNamedPipeClientProcessId@8 -GetNamedPipeClientSessionId@8 GetNamedPipeHandleStateA@28 GetNamedPipeHandleStateW@28 GetNamedPipeInfo@20 -GetNamedPipeServerProcessId@8 -GetNamedPipeServerSessionId@8 -GetNativeSystemInfo@4 -GetNextVDMCommand@4 -GetNumaAvailableMemoryNode@8 -GetNumaAvailableMemoryNodeEx@8 -GetNumaHighestNodeNumber@4 -GetNumaNodeNumberFromHandle@8 -GetNumaNodeProcessorMask2@16 -GetNumaNodeProcessorMask@8 -GetNumaNodeProcessorMaskEx@8 -GetNumaProcessorNode@8 -GetNumaProcessorNodeEx@8 -GetNumaProximityNode@8 -GetNumaProximityNodeEx@8 -GetNumberFormatA@24 -GetNumberFormatEx@24 -GetNumberFormatW@24 -GetNumberOfConsoleFonts@0 GetNumberOfConsoleInputEvents@8 GetNumberOfConsoleMouseButtons@4 GetOEMCP@0 GetOverlappedResult@16 -GetOverlappedResultEx@20 -GetPackageApplicationIds@16 -GetPackageFamilyName@12 -GetPackageFullName@12 -GetPackageId@12 -GetPackageInfo@20 -GetPackagePath@16 -GetPackagePathByFullName@12 -GetPackagesByPackageFamily@20 -GetPhysicallyInstalledSystemMemory@4 GetPriorityClass@4 GetPrivateProfileIntA@16 GetPrivateProfileIntW@16 GetPrivateProfileSectionA@16 -GetPrivateProfileSectionNamesA@12 -GetPrivateProfileSectionNamesW@12 GetPrivateProfileSectionW@16 GetPrivateProfileStringA@24 GetPrivateProfileStringW@24 -GetPrivateProfileStructA@20 -GetPrivateProfileStructW@20 GetProcAddress@8 -GetProcessAffinityMask@12 -GetProcessDEPPolicy@12 -GetProcessDefaultCpuSetMasks@16 -GetProcessDefaultCpuSets@16 -GetProcessGroupAffinity@12 -GetProcessHandleCount@8 GetProcessHeap@0 -GetProcessHeaps@8 -GetProcessId@4 -GetProcessIdOfThread@4 -GetProcessInformation@16 -GetProcessIoCounters@8 -GetProcessMitigationPolicy@16 -GetProcessPreferredUILanguages@16 -GetProcessPriorityBoost@8 GetProcessShutdownParameters@8 GetProcessTimes@20 -GetProcessUserModeExceptionPolicy@4 -GetProcessVersion@4 -GetProcessWorkingSetSize@12 -GetProcessWorkingSetSizeEx@16 -GetProcessesInVirtualizationContext@12 -GetProcessorSystemCycleTime@12 -GetProductInfo@20 -GetProductName@8 GetProfileIntA@12 GetProfileIntW@12 GetProfileSectionA@12 GetProfileSectionW@12 GetProfileStringA@20 GetProfileStringW@20 -GetQueuedCompletionStatus@20 -GetQueuedCompletionStatusEx@24 -GetShortPathNameA@12 -GetShortPathNameW@12 -GetStagedPackagePathByFullName@12 GetStartupInfoA@4 GetStartupInfoW@4 -GetStateFolder@16 GetStdHandle@4 -GetStringScripts@20 -GetStringTypeA@20 -GetStringTypeExA@20 -GetStringTypeExW@20 GetStringTypeW@16 -GetSystemAppDataKey@16 -GetSystemCpuSetInformation@20 -GetSystemDEPPolicy@0 GetSystemDefaultLCID@0 GetSystemDefaultLangID@0 -GetSystemDefaultLocaleName@8 -GetSystemDefaultUILanguage@0 GetSystemDirectoryA@8 GetSystemDirectoryW@8 -GetSystemFileCacheSize@12 -GetSystemFirmwareTable@16 GetSystemInfo@4 -GetSystemPowerStatus@4 -GetSystemPreferredUILanguages@16 -GetSystemRegistryQuota@8 GetSystemTime@4 -GetSystemTimeAdjustment@12 -GetSystemTimeAsFileTime@4 -GetSystemTimePreciseAsFileTime@4 -GetSystemTimes@12 -GetSystemWindowsDirectoryA@8 -GetSystemWindowsDirectoryW@8 -GetSystemWow64DirectoryA@8 -GetSystemWow64DirectoryW@8 GetTapeParameters@16 GetTapePosition@20 GetTapeStatus@4 @@ -800,63 +227,22 @@ GetTempFileNameA@16 GetTempFileNameW@16 GetTempPathA@8 GetTempPathW@8 -GetTempPath2A@8 -GetTempPath2W@8 +GetTickCount@0 GetThreadContext@8 -GetThreadDescription@8 -GetThreadEnabledXStateFeatures@0 -GetThreadErrorMode@0 -GetThreadGroupAffinity@8 -GetThreadIOPendingFlag@8 -GetThreadId@4 -GetThreadIdealProcessorEx@8 -GetThreadInformation@16 GetThreadLocale@0 -GetThreadPreferredUILanguages@16 GetThreadPriority@4 -GetThreadPriorityBoost@8 -GetThreadSelectedCpuSetMasks@16 -GetThreadSelectedCpuSets@16 GetThreadSelectorEntry@12 GetThreadTimes@20 -GetThreadUILanguage@0 -GetTickCount64@0 -GetTickCount@0 -GetTimeFormatA@24 -GetTimeFormatAWorker@28 -GetTimeFormatEx@24 GetTimeFormatW@24 -GetTimeFormatWWorker@24 GetTimeZoneInformation@4 -GetTimeZoneInformationForYear@12 -GetUILanguageInfo@20 -GetUserDefaultGeoName@8 GetUserDefaultLCID@0 GetUserDefaultLangID@0 -GetUserDefaultLocaleName@8 -GetUserDefaultUILanguage@0 -GetUserGeoID@4 -GetUserPreferredUILanguages@16 -GetVDMCurrentDirectories@8 GetVersion@0 -GetVersionExA@4 -GetVersionExW@4 GetVolumeInformationA@32 -GetVolumeInformationByHandleW@32 GetVolumeInformationW@32 -GetVolumeNameForVolumeMountPointA@12 -GetVolumeNameForVolumeMountPointW@12 -GetVolumePathNameA@12 -GetVolumePathNameW@12 -GetVolumePathNamesForVolumeNameA@16 -GetVolumePathNamesForVolumeNameW@16 GetWindowsDirectoryA@8 GetWindowsDirectoryW@8 -GetWriteWatch@24 -GetXStateFeaturesMask@8 GlobalAddAtomA@4 -GlobalAddAtomExA@8 -GlobalAddAtomExW@8 GlobalAddAtomW@4 GlobalAlloc@8 GlobalCompact@4 @@ -871,67 +257,23 @@ GlobalGetAtomNameW@12 GlobalHandle@4 GlobalLock@4 GlobalMemoryStatus@4 -GlobalMemoryStatusEx@4 -GlobalMemoryStatusVlm@4 GlobalReAlloc@12 GlobalSize@4 GlobalUnWire@4 GlobalUnfix@4 GlobalUnlock@4 GlobalWire@4 -Heap32First@12 -Heap32ListFirst@8 -Heap32ListNext@8 -Heap32Next@4 HeapAlloc@12 -HeapCompact@8 HeapCreate@12 -HeapCreateTagsW@16 HeapDestroy@4 -HeapExtend@16 HeapFree@12 -HeapLock@4 -HeapQueryInformation@20 -HeapQueryTagW@20 HeapReAlloc@16 -HeapSetInformation@16 HeapSize@12 -HeapSummary@12 -HeapUnlock@4 -HeapUsage@20 -HeapValidate@12 -HeapWalk@8 -IdnToAscii@20 -IdnToNameprepUnicode@20 -IdnToUnicode@20 InitAtomTable@4 InitializeCriticalSection@4 -InitOnceBeginInitialize@16 -InitOnceComplete@12 -InitOnceExecuteOnce@16 -InitOnceInitialize@4 -InitializeConditionVariable@4 -InitializeContext2@24 -InitializeContext@16 -InitializeCriticalSectionAndSpinCount@8 -InitializeCriticalSectionEx@12 -InitializeEnclave@20 -InitializeProcThreadAttributeList@16 -InitializeSListHead@4 -InitializeSRWLock@4 -InitializeSynchronizationBarrier@12 -InstallELAMCertificateInfo@4 -InterlockedCompareExchange64@20 DATA ; FIXME: this is for Vista+. forwards to NTDLL.RtlInterlockedCompareExchange64@20 -InterlockedCompareExchange@12 DATA -InterlockedDecrement@4 DATA -InterlockedExchange@8 DATA -InterlockedExchangeAdd@8 DATA -InterlockedFlushSList@4 -InterlockedIncrement@4 DATA -InterlockedPopEntrySList@4 -InterlockedPushEntrySList@8 -InterlockedPushListSListEx@16 -InvalidateConsoleDIBits@8 +InterlockedDecrement@4 DATA ; FIXME: why is decorated stdcall function symbol disabled? +InterlockedExchange@8 DATA ; FIXME: why is decorated stdcall function symbol disabled? +InterlockedIncrement@4 DATA ; FIXME: why is decorated stdcall function symbol disabled? IsBadCodePtr@4 IsBadHugeReadPtr@8 IsBadHugeWritePtr@8 @@ -939,93 +281,19 @@ IsBadReadPtr@8 IsBadStringPtrA@8 IsBadStringPtrW@8 IsBadWritePtr@8 -IsCalendarLeapDay@20 -IsCalendarLeapMonth@16 -IsCalendarLeapYear@12 IsDBCSLeadByte@4 -IsDBCSLeadByteEx@8 -IsDebuggerPresent@0 -IsEnclaveTypeSupported@4 -IsIoRingOpSupported@8 -IsNLSDefinedString@20 -IsNativeVhdBoot@4 -IsNormalizedString@12 -IsProcessCritical@8 -IsProcessInJob@12 -IsProcessorFeaturePresent@4 -IsSystemResumeAutomatic@0 -IsThreadAFiber@0 -IsThreadpoolTimerSet@4 -IsTimeZoneRedirectionEnabled@0 -IsUserCetAvailableInEnvironment@4 -IsValidCalDateTime@8 IsValidCodePage@4 -IsValidLanguageGroup@8 -IsValidLocale@8 -IsValidLocaleName@4 -IsValidNLSVersion@12 -IsWow64GuestMachineSupported@8 -IsWow64Process2@12 -IsWow64Process@8 -K32EmptyWorkingSet@4 -K32EnumDeviceDrivers@12 -K32EnumPageFilesA@8 -K32EnumPageFilesW@8 -K32EnumProcessModules@16 -K32EnumProcessModulesEx@20 -K32EnumProcesses@12 -K32GetDeviceDriverBaseNameA@12 -K32GetDeviceDriverBaseNameW@12 -K32GetDeviceDriverFileNameA@12 -K32GetDeviceDriverFileNameW@12 -K32GetMappedFileNameA@16 -K32GetMappedFileNameW@16 -K32GetModuleBaseNameA@16 -K32GetModuleBaseNameW@16 -K32GetModuleFileNameExA@16 -K32GetModuleFileNameExW@16 -K32GetModuleInformation@16 -K32GetPerformanceInfo@8 -K32GetProcessImageFileNameA@12 -K32GetProcessImageFileNameW@12 -K32GetProcessMemoryInfo@12 -K32GetWsChanges@12 -K32GetWsChangesEx@12 -K32InitializeProcessForWsWatch@4 -K32QueryWorkingSet@12 -K32QueryWorkingSetEx@12 -LCIDToLocaleName@16 -LCMapStringA@24 -LCMapStringEx@36 LCMapStringW@24 -LZClose@4 -LZCloseFile@4 -LZCopy@8 -LZCreateFileW@20 -LZDone@0 -LZInit@4 -LZOpenFileA@12 -LZOpenFileW@12 -LZRead@12 -LZSeek@12 -LZStart@0 LeaveCriticalSection@4 -LeaveCriticalSectionWhenCallbackReturns@8 -LoadAppInitDlls@0 -LoadEnclaveData@36 LoadLibraryA@4 LoadLibraryExA@12 LoadLibraryExW@12 LoadLibraryW@4 LoadModule@8 -LoadPackagedLibrary@8 LoadResource@8 -LoadStringBaseExW@20 -LoadStringBaseW@16 LocalAlloc@8 LocalCompact@4 LocalFileTimeToFileTime@8 -LocalFileTimeToLocalSystemTime@12 LocalFlags@4 LocalFree@4 LocalHandle@4 @@ -1033,164 +301,44 @@ LocalLock@4 LocalReAlloc@12 LocalShrink@8 LocalSize@4 -LocalSystemTimeToLocalFileTime@12 LocalUnlock@4 -LocaleNameToLCID@8 -LocateXStateFeature@12 LockFile@20 LockFileEx@24 LockResource@4 -MapUserPhysicalPages@12 -MapUserPhysicalPagesScatter@12 MapViewOfFile@20 MapViewOfFileEx@24 -MapViewOfFileExNuma@28 -MapViewOfFileVlm@28 -MapViewOfFileFromApp@20 -Module32First@8 -Module32FirstW@8 -Module32Next@8 -Module32NextW@8 MoveFileA@8 MoveFileExA@12 MoveFileExW@12 -MoveFileTransactedA@24 -MoveFileTransactedW@24 MoveFileW@8 -MoveFileWithProgressA@20 -MoveFileWithProgressW@20 MulDiv@12 MultiByteToWideChar@24 -NeedCurrentDirectoryForExePathA@4 -NeedCurrentDirectoryForExePathW@4 -NlsCheckPolicy@8 -NlsConvertIntegerToString@20 -NlsEventDataDescCreate@16 -NlsGetCacheUpdateCount@0 -NlsUpdateLocale@8 -NlsUpdateSystemLocale@8 -NlsWriteEtwEvent@20 -NormalizeString@20 -NotifyMountMgr@12 -NotifyUILanguageChange@20 -NtVdm64CreateProcessInternalW@48 -OOBEComplete@4 -OfferVirtualMemory@12 -OpenConsoleW@16 -OpenConsoleWStub@16 OpenEventA@12 OpenEventW@12 OpenFile@12 -OpenFileById@24 OpenFileMappingA@12 OpenFileMappingW@12 -OpenJobObjectA@12 -OpenJobObjectW@12 OpenMutexA@12 OpenMutexW@12 -OpenPackageInfoByFullName@12 -OpenPrivateNamespaceA@8 -OpenPrivateNamespaceW@8 OpenProcess@12 -; MSDN says OpenProcessToken is from Advapi32.dll, not Kernel32.dll -; OpenProcessToken@12 OpenProfileUserMapping@0 OpenSemaphoreA@12 OpenSemaphoreW@12 -OpenState@0 -OpenStateExplicit@8 -OpenThread@12 -; MSDN says this is exported from ADVAPI32.DLL. -; OpenThreadToken@16 -OpenWaitableTimerA@12 -OpenWaitableTimerW@12 OutputDebugStringA@4 OutputDebugStringW@4 -PackageFamilyNameFromFullName@12 -PackageFamilyNameFromId@12 -PackageFullNameFromId@12 -PackageIdFromFullName@16 -PackageNameAndPublisherIdFromFamilyName@20 -ParseApplicationUserModelId@20 PeekConsoleInputA@16 PeekConsoleInputW@16 PeekNamedPipe@24 -PopIoRingCompletion@8 -PostQueuedCompletionStatus@16 -PowerClearRequest@8 -PowerCreateRequest@4 -PowerSetRequest@8 -PrefetchVirtualMemory@16 PrepareTape@12 -PrivCopyFileExW@24 -PrivMoveFileIdentityW@12 -Process32First@8 -Process32FirstW@8 -Process32Next@8 -Process32NextW@8 -ProcessIdToSessionId@8 -PssCaptureSnapshot@16 -PssDuplicateSnapshot@20 -PssFreeSnapshot@8 -PssQuerySnapshot@16 -PssWalkMarkerCreate@8 -PssWalkMarkerFree@4 -PssWalkMarkerGetPosition@8 -PssWalkMarkerRewind@4 -PssWalkMarkerSeek@8 -PssWalkMarkerSeekToBeginning@4 -PssWalkMarkerSetPosition@8 -PssWalkMarkerTell@8 -PssWalkSnapshot@20 PulseEvent@4 PurgeComm@8 -QueryActCtxSettingsW@28 -QueryActCtxSettingsWWorker@28 -QueryActCtxW@28 -QueryActCtxWWorker@28 -QueryDepthSList@4 QueryDosDeviceA@12 QueryDosDeviceW@12 -QueryFullProcessImageNameA@16 -QueryFullProcessImageNameW@16 -QueryIdleProcessorCycleTime@8 -QueryIdleProcessorCycleTimeEx@12 -QueryInformationJobObject@20 -QueryIoRateControlInformationJobObject@16 -QueryIoRingCapabilities@4 -QueryMemoryResourceNotification@8 QueryPerformanceCounter@4 QueryPerformanceFrequency@4 -QueryProcessAffinityUpdateMode@8 -QueryProcessCycleTime@8 -QueryProtectedPolicy@8 -QueryThreadCycleTime@8 -QueryThreadProfiling@8 -QueryThreadpoolStackInformation@8 -QueryUnbiasedInterruptTime@4 -QueueUserAPC2@16 -QueueUserAPC@12 -QueueUserWorkItem@12 -QueryWin31IniFilesMappedToRegistry@16 -QuirkGetData2Worker@8 -QuirkGetDataWorker@8 -QuirkIsEnabled2Worker@12 -QuirkIsEnabled3Worker@8 -QuirkIsEnabledForPackage2Worker@24 -QuirkIsEnabledForPackage3Worker@20 -QuirkIsEnabledForPackage4Worker@20 -QuirkIsEnabledForPackageWorker@16 -QuirkIsEnabledForProcessWorker@12 -QuirkIsEnabledWorker@4 RaiseException@16 -RaiseFailFastException@12 -RaiseInvalid16BitExeError@4 -ReOpenFile@16 -ReclaimVirtualMemory@8 ReadConsoleA@20 ReadConsoleInputA@16 -ReadConsoleInputExA@20 -ReadConsoleInputExW@20 ReadConsoleInputW@16 ReadConsoleOutputA@20 ReadConsoleOutputAttribute@20 @@ -1198,447 +346,112 @@ ReadConsoleOutputCharacterA@20 ReadConsoleOutputCharacterW@20 ReadConsoleOutputW@20 ReadConsoleW@20 -ReadDirectoryChangesExW@36 -ReadDirectoryChangesW@32 ReadFile@20 ReadFileEx@20 -ReadFileScatter@20 -ReadFileVlm@20 ReadProcessMemory@20 -ReadThreadProfilingData@12 -; -; MSDN says these functions are exported -; from advapi32.dll. Commented out for -; compatibility with older versions of -; Windows. -; -; RegKrnGetGlobalState and RegKrnInitialize -; are known exceptions. -; -;RegCloseKey@4 -;RegCopyTreeW@12 -;RegCreateKeyExA@36 -;RegCreateKeyExW@36 -;RegDeleteKeyExA@16 -;RegDeleteKeyExW@16 -;RegDeleteTreeA@8 -;RegDeleteTreeW@8 -;RegDeleteValueA@8 -;RegDeleteValueW@8 -;RegDisablePredefinedCacheEx@0 -;RegEnumKeyExA@32 -;RegEnumKeyExW@32 -;RegEnumValueA@32 -;RegEnumValueW@32 -;RegFlushKey@4 -;RegGetKeySecurity@16 -;RegGetValueA@28 -;RegGetValueW@28 -;RegLoadKeyA@12 -;RegLoadKeyW@12 -;RegLoadMUIStringA@28 -;RegLoadMUIStringW@28 -;RegNotifyChangeKeyValue@20 -;RegOpenCurrentUser@8 -;RegOpenKeyExA@20 -;RegOpenKeyExW@20 -;RegOpenUserClassesRoot@16 -;RegQueryInfoKeyA@48 -;RegQueryInfoKeyW@48 -;RegQueryValueExA@24 -;RegQueryValueExW@24 -;RegRestoreKeyA@12 -;RegRestoreKeyW@12 -;RegSaveKeyExA@16 -;RegSaveKeyExW@16 -;RegSetKeySecurity@12 -;RegSetValueExA@24 -;RegSetValueExW@24 -;RegUnLoadKeyA@8 -;RegUnLoadKeyW@8 -RegisterApplicationRecoveryCallback@16 -RegisterApplicationRestart@8 -RegisterBadMemoryNotification@4 -RegisterConsoleIME@8 -RegisterConsoleOS2@4 -RegisterConsoleVDM@44 -RegisterWaitForInputIdle@4 -RegisterWaitForSingleObject@24 -RegisterWaitForSingleObjectEx@20 -RegisterWaitUntilOOBECompleted@12 -RegisterWowBaseHandlers@4 -RegisterWowExec@4 -ReleaseActCtx@4 -ReleaseActCtxWorker@4 ReleaseMutex@4 -ReleaseMutexWhenCallbackReturns@8 -ReleasePackageVirtualizationContext@4 -ReleasePseudoConsole@4 -ReleaseSRWLockExclusive@4 -ReleaseSRWLockShared@4 ReleaseSemaphore@12 -ReleaseSemaphoreWhenCallbackReturns@12 -ResolveLocaleName@12 RemoveDirectoryA@4 -RemoveDirectoryTransactedA@8 -RemoveDirectoryTransactedW@8 RemoveDirectoryW@4 -RemoveDllDirectory@4 -RemoveLocalAlternateComputerNameA@8 -RemoveLocalAlternateComputerNameW@8 -RemoveSecureMemoryCacheCallback@4 -RemoveVectoredContinueHandler@4 -RemoveVectoredExceptionHandler@4 -ReplaceFile@24 -ReplaceFileA@24 -ReplaceFileW@24 -ReplacePartitionUnit@12 -RequestDeviceWakeup@4 -RequestWakeupLatency@4 ResetEvent@4 -ResetWriteWatch@8 -ResizePseudoConsole@8 -ResolveDelayLoadedAPI@24 -ResolveDelayLoadsFromDll@12 -RestoreLastError@4 ResumeThread@4 -RtlCaptureContext@4 -RtlCaptureStackBackTrace@16 -RtlFillMemory@12 RtlMoveMemory@12 -RtlPcToFileHeader@8 RtlUnwind@16 RtlZeroMemory@8 ScrollConsoleScreenBufferA@20 ScrollConsoleScreenBufferW@20 SearchPathA@24 SearchPathW@24 -SetCachedSigningLevel@16 -SetCalendarInfoA@16 -SetCalendarInfoW@16 -SetClientTimeZoneInformation@4 -SetComPlusPackageInstallStatus@4 SetCommBreak@4 -SetCommConfig@12 SetCommMask@8 SetCommState@8 SetCommTimeouts@8 SetComputerNameA@4 -SetComputerNameEx2W@12 -SetComputerNameExA@8 -SetComputerNameExW@8 SetComputerNameW@4 SetConsoleActiveScreenBuffer@4 SetConsoleCP@4 -SetConsoleCommandHistoryMode@4 SetConsoleCtrlHandler@8 -SetConsoleCursor@8 SetConsoleCursorInfo@8 -SetConsoleCursorMode@12 SetConsoleCursorPosition@8 -SetConsoleDisplayMode@12 -SetConsoleFont@8 -SetConsoleHardwareState@12 -SetConsoleHistoryInfo@4 -SetConsoleIcon@4 -SetConsoleInputExeNameA@4 -SetConsoleInputExeNameW@4 -SetConsoleKeyShortcuts@16 -SetConsoleLocalEUDC@16 -SetConsoleMaximumWindowSize@8 -SetConsoleMenuClose@4 SetConsoleMode@8 -SetConsoleNlsMode@8 -SetConsoleNumberOfCommandsA@8 -SetConsoleNumberOfCommandsW@8 -SetConsoleOS2OemFormat@4 SetConsoleOutputCP@4 -SetConsolePalette@12 -SetConsoleScreenBufferInfoEx@8 SetConsoleScreenBufferSize@8 SetConsoleTextAttribute@8 SetConsoleTitleA@4 SetConsoleTitleW@4 SetConsoleWindowInfo@12 -SetCriticalSectionSpinCount@8 -SetCurrentConsoleFontEx@12 SetCurrentDirectoryA@4 SetCurrentDirectoryW@4 -SetDefaultCommConfigA@12 -SetDefaultCommConfigW@12 -SetDefaultDllDirectories@4 -SetDllDirectoryA@4 -SetDllDirectoryW@4 -SetDynamicTimeZoneInformation@4 SetEndOfFile@4 -SetEnvironmentStringsA@4 -SetEnvironmentStringsW@4 SetEnvironmentVariableA@8 SetEnvironmentVariableW@8 SetErrorMode@4 SetEvent@4 -SetEventWhenCallbackReturns@8 -SetFileApisToANSI@0 SetFileApisToOEM@0 SetFileAttributesA@8 -SetFileAttributesTransactedA@12 -SetFileAttributesTransactedW@12 SetFileAttributesW@8 -SetFileBandwidthReservation@24 -SetFileCompletionNotificationModes@8 -SetFileInformationByHandle@16 -SetFileIoOverlappedRange@12 SetFilePointer@16 -SetFilePointerEx@20 -SetFileShortNameA@8 -SetFileShortNameW@8 SetFileTime@16 -SetFileValidData@12 -SetFirmwareEnvironmentVariableA@16 -SetFirmwareEnvironmentVariableExA@20 -SetFirmwareEnvironmentVariableExW@20 -SetFirmwareEnvironmentVariableW@16 -SetHandleContext@8 SetHandleCount@4 -SetHandleInformation@12 -SetInformationJobObject@16 -SetIoRateControlInformationJobObject@8 -SetIoRingCompletionEvent@8 -SetLastConsoleEventActive@0 SetLastError@4 -SetLocalPrimaryComputerNameA@8 -SetLocalPrimaryComputerNameW@8 SetLocalTime@4 -SetLocaleInfoA@12 -SetLocaleInfoW@12 SetMailslotInfo@8 -SetMessageWaitingIndicator@8 -SetNamedPipeAttribute@20 SetNamedPipeHandleState@16 SetPriorityClass@8 -SetProcessAffinityMask@8 -SetProcessAffinityUpdateMode@8 -SetProcessDEPPolicy@4 -SetProcessDefaultCpuSetMasks@12 -SetProcessDefaultCpuSets@12 -SetProcessDynamicEHContinuationTargets@12 -SetProcessDynamicEnforcedCetCompatibleRanges@12 -SetProcessInformation@16 -SetProcessMitigationPolicy@12 -SetProcessPreferredUILanguages@12 -SetProcessPriorityBoost@8 SetProcessShutdownParameters@8 -SetProcessUserModeExceptionPolicy@4 -SetProcessWorkingSetSize@12 -SetProcessWorkingSetSizeEx@16 -SetProtectedPolicy@12 -SetSearchPathMode@4 SetStdHandle@8 -SetStdHandleEx@12 -SetSystemFileCacheSize@12 -SetSystemPowerState@8 SetSystemTime@4 -SetSystemTimeAdjustment@8 SetTapeParameters@12 SetTapePosition@24 -SetTermsrvAppInstallMode@4 -SetThreadAffinityMask@8 SetThreadContext@8 -SetThreadDescription@8 -SetThreadErrorMode@8 -SetThreadExecutionState@4 -SetThreadGroupAffinity@12 -SetThreadIdealProcessor@8 -SetThreadIdealProcessorEx@12 -SetThreadInformation@16 SetThreadLocale@4 -SetThreadPreferredUILanguages@12 SetThreadPriority@8 -SetThreadPriorityBoost@8 -SetThreadSelectedCpuSetMasks@12 -SetThreadSelectedCpuSets@12 -SetThreadStackGuarantee@4 -; MSDN says this is exported from ADVAPI32.DLL. -; SetThreadToken@8 -SetThreadUILanguage@4 -SetThreadpoolStackInformation@8 -SetThreadpoolThreadMaximum@8 -SetThreadpoolThreadMinimum@8 -SetThreadpoolTimer@16 -SetThreadpoolTimerEx@16 -SetThreadpoolWait@12 -SetThreadpoolWaitEx@16 SetTimeZoneInformation@4 -SetTimerQueueTimer@24 SetUnhandledExceptionFilter@4 -SetUserGeoID@4 -SetUserGeoName@4 -SetVDMCurrentDirectories@8 SetVolumeLabelA@8 SetVolumeLabelW@8 -SetVolumeMountPointA@8 -SetVolumeMountPointW@8 -SetVolumeMountPointWStub@8 -SetWaitableTimer@24 -SetWaitableTimerEx@28 -SetXStateFeaturesMask@12 SetupComm@12 -ShowConsoleCursor@8 -SignalObjectAndWait@16 SizeofResource@8 Sleep@4 -SleepConditionVariableCS@12 -SleepConditionVariableSRW@16 SleepEx@8 -SortCloseHandle@4 -SortGetHandle@12 -StartThreadpoolIo@4 -SubmitIoRing@16 -SubmitThreadpoolWork@4 SuspendThread@4 -SwitchToFiber@4 -SwitchToThread@0 SystemTimeToFileTime@8 -SystemTimeToTzSpecificLocalTime@12 -SystemTimeToTzSpecificLocalTimeEx@12 -TerminateJobObject@8 TerminateProcess@8 TerminateThread@8 -TermsrvAppInstallMode@0 -TermsrvConvertSysRootToUserDir@8 -TermsrvCreateRegEntry@20 -TermsrvDeleteKey@4 -TermsrvDeleteValue@8 -TermsrvGetPreSetValue@16 -TermsrvGetWindowsDirectoryA@8 -TermsrvGetWindowsDirectoryW@8 -TermsrvOpenRegEntry@12 -TermsrvOpenUserClasses@8 -TermsrvRestoreKey@12 -TermsrvSetKeySecurity@12 -TermsrvSetValueKey@24 -TermsrvSyncUserIniFileExt@4 -Thread32First@8 -Thread32Next@8 TlsAlloc@0 TlsFree@4 -TlsGetValue2@4 TlsGetValue@4 TlsSetValue@8 -Toolhelp32ReadProcessMemory@20 TransactNamedPipe@28 TransmitCommChar@8 -TrimVirtualBuffer@4 -TryAcquireSRWLockExclusive@4 -TryAcquireSRWLockShared@4 -TryEnterCriticalSection@4 -TrySubmitThreadpoolCallback@12 -TzSpecificLocalTimeToSystemTime@12 -TzSpecificLocalTimeToSystemTimeEx@12 -UTRegister@28 -UTUnRegister@4 UnhandledExceptionFilter@4 UnlockFile@20 UnlockFileEx@20 UnmapViewOfFile@4 -UnmapViewOfFileEx@8 -UnmapViewOfFileVlm@4 -UnregisterApplicationRecoveryCallback@0 -UnregisterApplicationRestart@0 -UnregisterBadMemoryNotification@4 -UnregisterConsoleIME@0 -UnregisterWait@4 -UnregisterWaitEx@8 -UnregisterWaitUntilOOBECompleted@4 -UpdateCalendarDayOfWeek@4 -UpdateProcThreadAttribute@28 UpdateResourceA@24 UpdateResourceW@24 -VDMConsoleOperation@8 -VDMOperationStarted@4 VerLanguageNameA@12 VerLanguageNameW@12 -VerSetConditionMask@16 -VerifyConsoleIoHandle@4 -VerifyScripts@20 -VerifyVersionInfoA@16 -VerifyVersionInfoW@16 VirtualAlloc@16 -VirtualAllocEx@20 -VirtualAllocExNuma@24 -VirtualAllocVlm@24 -VirtualBufferExceptionHandler@12 VirtualFree@12 -VirtualFreeEx@16 -VirtualFreeVlm@20 VirtualLock@8 VirtualProtect@16 VirtualProtectEx@20 -VirtualProtectVlm@24 VirtualQuery@12 VirtualQueryEx@16 -VirtualQueryVlm@16 VirtualUnlock@8 -WTSGetActiveConsoleSessionId@0 WaitCommEvent@12 WaitForDebugEvent@8 -WaitForDebugEventEx@8 WaitForMultipleObjects@16 WaitForMultipleObjectsEx@20 WaitForSingleObject@8 WaitForSingleObjectEx@12 -WaitForThreadpoolIoCallbacks@8 -WaitForThreadpoolTimerCallbacks@8 -WaitForThreadpoolWaitCallbacks@8 -WaitForThreadpoolWorkCallbacks@8 WaitNamedPipeA@8 WaitNamedPipeW@8 -WakeAllConditionVariable@4 -WakeConditionVariable@4 -WerGetFlags@8 -WerGetFlagsWorker@8 -WerRegisterAdditionalProcess@8 -WerRegisterAppLocalDump@4 -WerRegisterCustomMetadata@8 -WerRegisterExcludedMemoryBlock@8 -WerRegisterFile@12 -WerRegisterFileWorker@12 -WerRegisterMemoryBlock@8 -WerRegisterMemoryBlockWorker@8 -WerRegisterRuntimeExceptionModule@8 -WerRegisterRuntimeExceptionModuleWorker@8 -WerSetFlags@4 -WerSetFlagsWorker@4 -WerUnregisterAdditionalProcess@4 -WerUnregisterAppLocalDump@0 -WerUnregisterCustomMetadata@4 -WerUnregisterExcludedMemoryBlock@4 -WerUnregisterFile@4 -WerUnregisterFileWorker@4 -WerUnregisterMemoryBlock@4 -WerUnregisterMemoryBlockWorker@4 -WerUnregisterRuntimeExceptionModule@8 -WerUnregisterRuntimeExceptionModuleWorker@8 -WerpCleanupMessageMapping@0 -WerpGetDebugger@8 -WerpInitiateRemoteRecovery@4 -WerpNotifyLoadStringResource@16 -WerpNotifyLoadStringResourceEx@20 -WerpNotifyUseStringResource@4 -WerpStringLookup@8 WideCharToMultiByte@32 WinExec@8 -Wow64DisableWow64FsRedirection@4 -Wow64EnableWow64FsRedirection@4 -Wow64GetThreadContext@8 -Wow64GetThreadSelectorEntry@12 -Wow64RevertWow64FsRedirection@4 -Wow64SetThreadContext@8 -Wow64SuspendThread@4 WriteConsoleA@20 WriteConsoleInputA@16 -WriteConsoleInputVDMA@16 -WriteConsoleInputVDMW@16 WriteConsoleInputW@16 WriteConsoleOutputA@20 WriteConsoleOutputAttribute@20 @@ -1648,23 +461,16 @@ WriteConsoleOutputW@20 WriteConsoleW@20 WriteFile@20 WriteFileEx@20 -WriteFileGather@20 -WriteFileVlm@20 WritePrivateProfileSectionA@12 WritePrivateProfileSectionW@12 WritePrivateProfileStringA@16 WritePrivateProfileStringW@16 -WritePrivateProfileStructA@20 -WritePrivateProfileStructW@20 WriteProcessMemory@20 -WriteProcessMemoryVlm@20 WriteProfileSectionA@8 WriteProfileSectionW@8 WriteProfileStringA@12 WriteProfileStringW@12 WriteTapemark@16 -ZombifyActCtx@4 -ZombifyActCtxWorker@4 _hread@12 _hwrite@12 _lclose@4 @@ -1673,32 +479,1760 @@ _llseek@12 _lopen@8 _lread@12 _lwrite@12 -lstrcat@8 lstrcatA@8 lstrcatW@8 -lstrcmp@8 lstrcmpA@8 lstrcmpW@8 -lstrcmpi@8 lstrcmpiA@8 lstrcmpiW@8 -lstrcpy@8 lstrcpyA@8 lstrcpyW@8 -lstrcpyn@12 +lstrlenA@4 +lstrlenW@4 + +; This is list of symbols available only in Win32s (not available in Win9x and WinNT) +; BaseRtlAllocateHandle@4 +; BaseRtlDestroyHandleTable@4 +; BaseRtlFreeHandle@8 +; BaseRtlInitializeHandleTable@8 +; Free32bDLLCbEntries@8 +; Get16DLLAddress@8 +; GetDOSFileHandle@4 +; GetUserNameA@8 ; MSDN says this is exported from advapi32.dll +; GetUserNameW@8 ; MSDN says this is exported from advapi32.dll +; OpenThread@4 ; Win32s OpenThread takes one DWORD threadid argument, Windows ME and Windows 2000+ contain "OpenThread" symbol but ABI is "OpenThread@12" +; PrivateFreeLibrary@4 +; PrivateLoadLibrary@4 +; RtlCreateHeap@24 ; MSDN says this is exported from ntdll.dll +; RtlDestroyHeap@4 ; MSDN says this is exported from ntdll.dll +; RtlExAllocateHeap@12 ; MSDN says this is exported from ntdll.dll +; RtlExFreeHeap@12 ; MSDN says this is exported from ntdll.dll +; RtlExReAllocateHeap@16 ; MSDN says this is exported from ntdll.dll +; RtlExSizeHeap@12 ; MSDN says this is exported from ntdll.dll +; SetLastErrorEx@8 ; MSDN says this is exported from user32.dll + +; This is list of symbols available in all Win32s and Win9x versions and since Windows 2000 +UTRegister@28 +UTUnRegister@4 + +; This is list of symbols added in Win32s 1.15, available in all Win9x versions and since Windows NT 3.5 +; Note that Win32s 1.15 and all later versions merged advapi32.dll, gdi32.dll, +; kernel32.dll, ntdll.dll, user32.dll (and Win32s 1.25a and later also mpr.dll) +; libraries into one big w32scomb.dll library and made those libraries as alias +; to w32scomb.dll, which effectively means that every symbol from every library +; is available also from kernel32.dll (aliased to w32scomb.dll). Below are only +; those Win32s symbols which are available in some Win9x or WinNT version of +; kernel32.dll or logically belongs to kernel32.dll. +CompareStringA@24 +ConvertDefaultLocale@4 +EnumCalendarInfoA@16 +EnumCalendarInfoW@16 +EnumDateFormatsA@12 +EnumDateFormatsW@12 +EnumSystemCodePagesA@8 +EnumSystemCodePagesW@8 +EnumSystemLocalesA@8 +EnumSystemLocalesW@8 +EnumTimeFormatsA@12 +EnumTimeFormatsW@12 +GetCurrencyFormatA@24 +GetCurrencyFormatW@24 +GetDateFormatA@24 +GetLocaleInfoA@16 +GetNumberFormatA@24 +GetNumberFormatW@24 +GetTimeFormatA@24 +GetVersionExA@4 +GetVersionExW@4 +HeapValidate@12 +IsValidLocale@8 +LCMapStringA@24 +SetLocaleInfoA@12 +SetLocaleInfoW@12 lstrcpynA@12 lstrcpynW@12 + +; This is list of symbols added in Win32s 1.15 and available only in Win32s (not available in Win9x and WinNT) +; Insert16hInWin32s@4 +; PrivateGetModuleUsage@4 + +; This is list of symbols added in Win32s 1.20, available in all Win9x versions and since Windows NT 3.1 +GetBinaryType@8 +RtlFillMemory@12 +lstrcat@8 +lstrcmp@8 +lstrcmpi@8 +lstrcpy@8 lstrlen@4 -lstrlenA@4 -lstrlenW@4 -; -; MSDN says these functions are exported -; from winmm.dll. Commented out for -; compatibility with older versions of -; Windows. -; -;timeBeginPeriod@4 -;timeEndPeriod@4 -;timeGetDevCaps@8 -;timeGetSystemTime@8 -;timeGetTime@0 + +; This is list of symbols added in Win32s 1.20, available since Windows NT 3.1, but not available in Win9x +AddConsoleAliasW@12 +BaseAttachCompleteThunk@0 ; FIXME: All WinNT versions have ABI "BaseAttachCompleteThunk@16", removed in Windows XP +; BasepDebugDump@4 ; removed in Windows NT 3.51 +CloseConsoleHandle@4 +CmdBatNotification@4 +ConsoleMenuControl@12 +; ConsoleSubst@16 ; removed in Windows NT 3.51 +CreateVirtualBuffer@12 ; removed in Windows Server 2003 SP1 +DuplicateConsoleHandle@16 +ExitVDM@8 +ExpungeConsoleCommandHistoryA@4 +ExpungeConsoleCommandHistoryW@4 +ExtendVirtualBuffer@8 ; removed in Windows Server 2003 SP1 +FreeVirtualBuffer@4 ; removed in Windows Server 2003 SP1 +GetConsoleAliasA@16 +GetConsoleAliasExesA@8 +GetConsoleAliasExesLengthA@0 +GetConsoleAliasExesLengthW@0 +GetConsoleAliasExesW@8 +GetConsoleAliasW@16 +GetConsoleAliasesA@12 +GetConsoleAliasesLengthA@4 +GetConsoleAliasesLengthW@4 +GetConsoleAliasesW@12 +GetConsoleCommandHistoryA@12 +GetConsoleCommandHistoryLengthA@4 +GetConsoleCommandHistoryLengthW@4 +GetConsoleCommandHistoryW@12 +GetConsoleDisplayMode@4 +GetConsoleFontInfo@16 +GetConsoleFontSize@8 +GetConsoleHardwareState@12 +GetConsoleInputWaitHandle@0 +GetCurrentConsoleFont@12 +GetNextVDMCommand@4 +GetNumberOfConsoleFonts@0 +GetVDMCurrentDirectories@8 +InvalidateConsoleDIBits@8 +OpenConsoleW@16 +QueryWin31IniFilesMappedToRegistry@16 ; removed in Windows Server 2003 +RegisterConsoleVDM@44 +RegisterWaitForInputIdle@4 +SetConsoleCommandHistoryMode@4 ; removed in Windows Vista +SetConsoleCursor@8 +SetConsoleDisplayMode@12 +SetConsoleFont@8 +SetConsoleHardwareState@12 +SetConsoleKeyShortcuts@16 +SetConsoleMaximumWindowSize@8 +SetConsoleMenuClose@4 +SetConsoleNumberOfCommandsA@8 +SetConsoleNumberOfCommandsW@8 +SetConsolePalette@12 +SetLastConsoleEventActive@0 +SetVDMCurrentDirectories@8 +ShowConsoleCursor@8 +TrimVirtualBuffer@4 ; removed in Windows Server 2003 SP1 +VDMConsoleOperation@8 +VDMOperationStarted@4 +VerifyConsoleIoHandle@4 +VirtualBufferExceptionHandler@12 ; removed in Windows Server 2003 SP1 +WriteConsoleInputVDMA@16 +WriteConsoleInputVDMW@16 + +; This is list of symbols added in Win32s 1.20, available in all Win9x versions and since Windows NT 3.5 +CommConfigDialogA@12 +CommConfigDialogW@12 +CreateIoCompletionPort@16 +DisableThreadLibraryCalls@4 +FoldStringA@20 +FreeEnvironmentStringsA@4 +FreeEnvironmentStringsW@4 +FreeLibraryAndExitThread@8 +GetBinaryTypeA@8 +GetBinaryTypeW@8 +GetCommConfig@12 +GetCompressedFileSizeA@8 +GetCompressedFileSizeW@8 +GetDefaultCommConfigA@12 +GetDefaultCommConfigW@12 +GetEnvironmentStringsA@0 +GetEnvironmentStringsW@0 +GetHandleInformation@8 +GetProcessAffinityMask@12 +GetProcessWorkingSetSize@12 +GetQueuedCompletionStatus@20 +GetShortPathNameA@12 +GetShortPathNameW@12 +GetStringTypeA@20 +GetStringTypeExA@20 +GetStringTypeExW@20 +GetSystemTimeAdjustment@12 +IsDBCSLeadByteEx@8 +SetCommConfig@12 +SetDefaultCommConfigA@12 +SetDefaultCommConfigW@12 +SetHandleInformation@12 +SetProcessWorkingSetSize@12 +SetSystemTimeAdjustment@8 +SetThreadAffinityMask@8 +SystemTimeToTzSpecificLocalTime@12 +lstrcpyn@12 + +; This is list of symbols added in Win32s 1.20, available since Windows NT 3.5, but not available in Win9x +RegisterWowBaseHandlers@4 +RegisterWowExec@4 + +; This is list of symbols added in Win32s 1.25, available in all Win9x versions and since Windows NT 3.5 +AreFileApisANSI@0 +GetProcessHeaps@8 +SetFileApisToANSI@0 + +; This is list of symbols added in Win32s 1.25, available in all Win9x versions and since Windows NT 3.51 +GetPrivateProfileSectionNamesA@12 +GetPrivateProfileSectionNamesW@12 +GetPrivateProfileStructA@20 +GetPrivateProfileStructW@20 +GetSystemPowerStatus@4 + +; This is list of symbols added in Win32s 1.25, available since Windows NT 3.1, but not available in Win9x +AddConsoleAliasA@12 + +; This is list of symbols added in Win32s 1.25, available since Windows 2000, but not available in Win9x +GetConsoleCharType@12 +GetConsoleCursorMode@12 +GetConsoleNlsMode@8 +SetConsoleCursorMode@12 +SetConsoleLocalEUDC@16 +SetConsoleNlsMode@8 + +; This is list of symbols added in Win32s 1.25 and available only in Win32s (not available in Win9x and WinNT) +; TlsCleanEntries@4 + +; This is list of symbols added in Win32s 1.30, available in all Win9x versions and since Windows NT 3.5 +HeapCompact@8 +HeapLock@4 +HeapUnlock@4 +HeapWalk@8 + +; This is list of symbols added in Win32s 1.30, available in all Win9x versions and since Windows NT 3.51 +GetProcessVersion@4 +GetSystemTimeAsFileTime@4 +PostQueuedCompletionStatus@16 +SetSystemPowerState@8 +WritePrivateProfileStructA@20 +WritePrivateProfileStructW@20 + +; This is list of symbols added in Win32s 1.30, available since Windows 98 and since Windows NT 3.51 +IsDebuggerPresent@0 + +; This is list of symbols added in Win32s 1.30, available since Windows NT 3.51, but not available in Win9x +HeapCreateTagsW@16 ; removed in Windows Vista +HeapExtend@16 ; removed in Windows Vista +HeapQueryTagW@20 ; removed in Windows Vista +HeapSummary@12 +HeapUsage@20 ; removed in Windows Vista + +;; This is end of Win32s symbols ;; + + +; This is list of symbols available only in Windows NT 3.1, not available in Win32s and Win9x +; ValidateLCID@8 ; removed in Windows NT 3.5 + +;; This is end of Windows NT 3.1 symbols ;; + + +; This is list of symbols added in Windows NT 3.51 SP3 and Windows 98, but not available in Win32s +ConvertThreadToFiber@4 +CreateFiber@12 +DeleteFiber@4 +ReadDirectoryChangesW@32 +SwitchToFiber@4 + +;; This is end of Windows NT 3.51 symbols ;; + + +; This is list of symbols added in Windows NT 4.0 and available also in all Win9x versions, but not available in Win32s +QueueUserAPC@12 + +; This is list of symbols added in Windows NT 4.0 and Windows 95 OSR2, but not available in Win32s +GetDiskFreeSpaceExA@16 +GetDiskFreeSpaceExW@16 + +; This is list of symbols added in Windows NT 4.0 and Windows 98, but not available in Win32s +CancelIo@4 +CancelWaitableTimer@4 +CopyFileExA@24 +CopyFileExW@24 +CreateWaitableTimerA@12 +CreateWaitableTimerW@12 +FindFirstFileExA@24 +FindFirstFileExW@24 +GetFileAttributesExA@12 +GetFileAttributesExW@12 +GetProcessPriorityBoost@8 +GetThreadPriorityBoost@8 +InterlockedCompareExchange@12 DATA ; FIXME: why is decorated stdcall function symbol disabled? +InterlockedExchangeAdd@8 DATA ; FIXME: why is decorated stdcall function symbol disabled? +IsProcessorFeaturePresent@4 +OpenWaitableTimerA@12 +OpenWaitableTimerW@12 +SetProcessAffinityMask@8 +SetProcessPriorityBoost@8 +SetThreadIdealProcessor@8 +SetThreadPriorityBoost@8 +SetWaitableTimer@24 +SignalObjectAndWait@16 +SwitchToThread@0 +TryEnterCriticalSection@4 +VirtualAllocEx@20 +VirtualFreeEx@16 + +; This is list of symbols added in Windows NT 4.0, but not available in Win9x and Win32s +GetConsoleInputExeNameA@8 +GetConsoleInputExeNameW@8 +GetConsoleKeyboardLayoutNameA@4 +GetConsoleKeyboardLayoutNameW@4 +ReadConsoleInputExA@20 +ReadConsoleInputExW@20 +SetConsoleIcon@4 +SetConsoleInputExeNameA@4 +SetConsoleInputExeNameW@4 + +; This is list of symbols added in Windows NT 4.0 SP2 and Windows 98, but not available in Win32s +ReadFileScatter@20 +WriteFileGather@20 + +; This is list of symbols added in Windows NT 4.0 SP3 and Windows 98, but not available in Win32s +InitializeCriticalSectionAndSpinCount@8 +SetCriticalSectionSpinCount@8 + +; This is list of symbols added in Windows NT 4.0 SP4, but not available in Win32s and Win9x +VerifyVersionInfoA@16 +VerifyVersionInfoW@16 + +;; This is end of Windows NT 4.0 symbols ;; + + +; This is list of symbols available in all Win9x versions and also since Windows 2000, but not available in Win32s +CreateToolhelp32Snapshot@8 +Heap32First@12 +Heap32ListFirst@8 +Heap32ListNext@8 +Heap32Next@4 +Module32First@8 +Module32Next@8 +Process32First@8 +Process32Next@8 +Thread32First@8 +Thread32Next@8 +Toolhelp32ReadProcessMemory@20 + +; This is list of symbols available in all Win9x versions and also since Windows XP, but not available in Win32s +CreateSocketHandle@0 +GetHandleContext@4 +SetHandleContext@8 + +; This is list of symbols available in all Win9x versions and also since Windows Vista, but not available in Win32s +GetErrorMode@0 + +; This is list of ordinal-only symbols available in all Win9x versions, but not available in Win32s and WinNT +; Symbol names are taken from: +; https://www.geoffchappell.com/studies/windows/win32/kernel32/history/ords40.htm +; VxDCall0@4 @1 NONAME ; stdcall+regs +; VxDCall1@8 @2 NONAME ; stdcall+regs +; VxDCall2@12 @3 NONAME ; stdcall+regs +; VxDCall3@16 @4 NONAME ; stdcall+regs +; VxDCall4@20 @5 NONAME ; stdcall+regs +; VxDCall5@24 @6 NONAME ; stdcall+regs +; VxDCall6@28 @7 NONAME ; stdcall+regs +; VxDCall7@32 @8 NONAME ; stdcall+regs +; VxDCall8@36 @9 NONAME ; stdcall+regs +; k32CharToOemA@8 @10 NONAME +; k32CharToOemBuffA@12 @11 NONAME +; k32OemToCharA@8 @12 NONAME +; k32OemToCharBuffA@12 @13 NONAME +; k32LoadStringA@16 @14 NONAME +; k32wsprintfA @15 NONAME ; cdecl/varargs +; k32wvsprintfA@12 @16 NONAME +; CommonUnimpStub @17 NONAME ; regs +; GetProcessDword@8 @18 NONAME +; ThunkTheTemplateHandle@4 @19 NONAME +; DosFileHandleToWin32Handle@4 @20 NONAME +; Win32HandleToDosFileHandle@4 @21 NONAME +; DisposeLZ32Handle@4 @22 NONAME +; GDIReallyCares@4 @23 NONAME +; GlobalAlloc16@8 @24 NONAME +; GlobalLock16@4 @25 NONAME +; GlobalUnlock16@4 @26 NONAME +; GlobalFix16@4 @27 NONAME +; GlobalUnfix16@4 @28 NONAME +; GlobalWire16@4 @29 NONAME +; GlobalUnWire16@4 @30 NONAME +; GlobalFree16@4 @31 NONAME +; GlobalSize16@4 @32 NONAME +; HouseCleanLogicallyDeadHandles@0 @33 NONAME +; GetWin16DOSEnv@0 @34 NONAME +; LoadLibrary16@4 @35 NONAME +; FreeLibrary16@4 @36 NONAME +; GetProcAddress16@8 @37 NONAME +; AllocMappedBuffer @38 NONAME ; regs +; FreeMappedBuffer @39 NONAME ; regs +; OT_32ThkLSF @40 NONAME ; regs +; ThunkInitLSF@20 @41 NONAME +; LogApiThkLSF@4 @42 NONAME +; ThunkInitLS@20 @43 NONAME +; LogApiThkSL@4 @44 NONAME +; Common32ThkLS @45 NONAME ; regs+stack +; ThunkInitSL@20 @46 NONAME +; LogCBThkSL@4 @47 NONAME +; ReleaseThunkLock@4 @48 NONAME +; RestoreThunkLock@4 @49 NONAME +; AddAtomA@4 @50 ; Ordinal 50 is exported also with symbol name AddAtomA +; W32S_BackTo32 @51 NONAME ; regs+stack +; GetThunkBuff@0 @52 NONAME +; GetThunkStuff@8 @53 NONAME +; WOWCallback16@8 @54 NONAME ; MSDN says this is exported from wow32.dll +; WOWCallback16Ex@20 @55 NONAME ; MSDN says this is exported from wow32.dll +; WOWGetVDMPointer@12 @56 NONAME ; MSDN says this is exported from wow32.dll +; WOWHandle32@8 @57 NONAME ; MSDN says this is exported from wow32.dll +; WOWHandle16@8 @58 NONAME ; MSDN says this is exported from wow32.dll +; WOWGlobalAlloc16@8 @59 NONAME ; MSDN says this is exported from wow32.dll +; WOWGlobalLock16@4 @60 NONAME ; MSDN says this is exported from wow32.dll +; WOWGlobalUnlock16@4 @61 NONAME ; MSDN says this is exported from wow32.dll +; WOWGlobalFree16@4 @62 NONAME ; MSDN says this is exported from wow32.dll +; WOWGlobalAllocLock16@12 @63 NONAME ; MSDN says this is exported from wow32.dll +; WOWGlobalUnlockFree16@4 @64 NONAME ; MSDN says this is exported from wow32.dll +; WOWGlobalLockSize16@8 @65 NONAME ; MSDN says this is exported from wow32.dll +; WOWYield16@0 @66 NONAME ; MSDN says this is exported from wow32.dll +; WOWDirectedYield16@4 @67 NONAME ; MSDN says this is exported from wow32.dll +; WOWGetVDMPointerFix@12 @68 NONAME ; MSDN says this is exported from wow32.dll +; WOWGetVDMPointerUnfix@4 @69 NONAME ; MSDN says this is exported from wow32.dll +; WOWGetDescriptor@8 @70 NONAME ; MSDN says this is exported from wow32.dll +; IsThreadId@4 @71 NONAME +; RtlLargeIntegerAdd@16 @72 NONAME ; MSDN says this is exported from ntdll.dll +; RtlEnlargedIntegerMultiply@8 @73 NONAME ; MSDN says this is exported from ntdll.dll +; RtlEnlargedUnsignedMultiply@8 @74 NONAME ; MSDN says this is exported from ntdll.dll +; RtlEnlargedUnsignedDivide@16 @75 NONAME ; MSDN says this is exported from ntdll.dll +; RtlEnlargedIntegerDivide@16 @76 NONAME ; MSDN says this is exported from ntdll.dll +; RtlExtendedMagicDivide@20 @77 NONAME ; MSDN says this is exported from ntdll.dll +; RtlExtendedIntegerMultiply@12 @78 NONAME ; MSDN says this is exported from ntdll.dll +; RtlLargeIntegerShiftLeft@12 @79 NONAME ; MSDN says this is exported from ntdll.dll +; RtlLargeIntegerShiftRight@12 @80 NONAME ; MSDN says this is exported from ntdll.dll +; RtlLargeIntegerArithmeticShift@12 @81 NONAME ; MSDN says this is exported from ntdll.dll +; RtlLargeIntegerNegate@8 @82 NONAME ; MSDN says this is exported from ntdll.dll +; RtlLargeIntegerSubtract@16 @83 NONAME ; MSDN says this is exported from ntdll.dll +; RtlConvertLongToLargeInteger@4 @84 NONAME ; MSDN says this is exported from ntdll.dll +; RtlConvertUlongToLargeInteger@4 @85 NONAME ; MSDN says this is exported from ntdll.dll +; _LeaveSysLevel_NoThk@4 @86 NONAME +; SSOnBigStack@0 @87 NONAME +; SSCall @88 NONAME ; cdecl/varargs +; FT_PrologPrime @89 NONAME ; regs+stack +; QT_ThunkPrime @90 NONAME ; regs+stack +; PK16FNF@4 @91 NONAME +; GetPK16SysVar@0 @92 NONAME +; GetpWin16Lock@4 @93 NONAME +; _CheckNotSysLevel@4 @94 NONAME +; _ConfirmSysLevel@4 @95 NONAME +; _ConfirmWin16Lock@0 @96 NONAME +; _EnterSysLevel@4 @97 NONAME ; really stdcall @4; gendef detects it incorrectly +; _LeaveSysLevel@4 @98 NONAME +; RefreshDaylightInformation@4 @99 NONAME +; TerminateThreadEx@12 @100 NONAME +; BoostFileCache@4 @101 NONAME + +; This is list of symbols available in all Win9x versions, but not available in Win32s and WinNT +; AllocLSCallback@8 +; AllocSLCallback@8 +; Callback12@12 +; Callback16@16 +; Callback20@20 +; Callback24@24 +; Callback28@28 +; Callback32@32 +; Callback36@36 +; Callback40@40 +; Callback44@44 +; Callback48@48 +; Callback4@4 +; Callback52@52 +; Callback56@56 +; Callback60@60 +; Callback64@64 +; Callback8@8 +; CloseSystemHandle@4 +; ConvertToGlobalHandle@4 +; CreateKernelThread@24 +; FT_Exit0 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit12 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit16 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit20 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit24 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit28 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit32 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit36 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit4 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit40 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit44 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit48 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit52 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit56 ; no stdcall decoration in msvc thunk32.lib +; FT_Exit8 ; no stdcall decoration in msvc thunk32.lib +; FT_Prolog ; no stdcall decoration in msvc thunk32.lib +; FT_Thunk ; no stdcall decoration in msvc thunk32.lib +; FreeLSCallback@4 +; FreeSLCallback@4 +; GetDaylightFlag@0 +; GetLSCallbackTarget@4 +; GetLSCallbackTemplate@4 +; GetProcessFlags@4 +; GetProductName@8 +; GetSLCallbackTarget@4 +; GetSLCallbackTemplate@4 +; HeapSetFlags@8 +; InvalidateNLSCache@0 +; IsLSCallback@4 +; IsSLCallback@4 +; K32Thk1632Epilog@0 +; K32Thk1632Prolog@0 +; MakeCriticalSectionGlobal@4 +; MapHInstLS ; no stdcall decoration in msvc thunk32.lib +; MapHInstLS_PN ; no stdcall decoration in msvc thunk32.lib +; MapHInstSL ; no stdcall decoration in msvc thunk32.lib +; MapHInstSL_PN ; no stdcall decoration in msvc thunk32.lib +; MapHModuleLS@4 +; MapHModuleSL@4 +; MapLS@4 +; MapSL@4 +; MapSLFix@4 +; NotifyNLSUserCache@12 +; OpenVxDHandle@4 +; QT_Thunk ; no stdcall decoration in msvc thunk32.lib +; QueryNumberOfEventLogRecords@8 +; QueryOldestEventLogRecord@8 +; RegisterServiceProcess@8 +; ReinitializeCriticalSection@4 +; SMapLS ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_12 ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_16 ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_20 ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_24 ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_28 ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_32 ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_36 ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_40 ; no stdcall decoration in msvc thunk32.lib +; SMapLS_IP_EBP_8 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_12 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_16 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_20 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_24 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_28 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_32 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_36 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_40 ; no stdcall decoration in msvc thunk32.lib +; SUnMapLS_IP_EBP_8 ; no stdcall decoration in msvc thunk32.lib +; SetDaylightFlag@4 +; ThunkConnect32@24 +; TlsAllocInternal@0 +; TlsFreeInternal@4 +; UnMapLS@4 +; UnMapSLFixArray@8 +; UninitializeCriticalSection@4 +; _DebugOut +; _DebugPrintf +; dprintf + +; This is list of ordinal-only symbols added in Windows 98, but not available in Win32s and WinNT +; Symbol names are taken from: +; https://www.geoffchappell.com/studies/windows/win32/kernel32/history/ords410.htm +; TlsAllocGlobal@0 @102 NONAME +; TlsFreeGlobal@4 @103 NONAME +; RPCHACKORAMA@0 @104 NONAME +; lstrtolW@12 @105 NONAME +; k32wcsicmp@8 @106 NONAME +; k32wcsupr@4 @107 NONAME +; lstrchrA@8 @108 NONAME +; lstrcspnA@8 @109 NONAME +; lstrncpyA@12 @110 NONAME +; lstrrchrA@8 @111 NONAME +; lstrstrA@8 @112 NONAME +; lstrchrW@8 @113 NONAME +; k32wcscmp@8 @114 NONAME +; k32wcsncmp@12 @115 NONAME +; lstrncpyW@12 @116 NONAME +; k32iswctype@8 @117 NONAME +; AddAtomW@4 @118 ; Ordinal 118 is exported also with symbol name AddAtomW, Windows 95 exports AddAtomW with ordinal 102 +; k32towupper@4 @119 NONAME +; GetCryptApiExponentValue@0 @120 NONAME +; ThunkConnect32NonLocking@24 @121 NONAME +; SetTaskmonControl@8 @122 NONAME + +; This is list of symbols added in Windows 98, but not available in Win32s and WinNT +; K32_NtCreateFile@44 +; K32_RtlNtStatusToDosError@4 +; RegisterSysMsgHandler@20 +; ResetNLSUserInfoCache@0 +; SignalSysMsgHandlers@16 + +; This is list of symbols added in Windows 98 and also since Windows 2000, but not available in Win32s +CancelDeviceWakeupRequest@4 +EnumCalendarInfoExA@16 +EnumCalendarInfoExW@16 +EnumDateFormatsExA@12 +EnumDateFormatsExW@12 +GetCPInfoExA@12 +GetCPInfoExW@12 +GetCalendarInfoA@24 +GetCalendarInfoW@24 +GetDevicePowerState@8 +GetLongPathNameA@12 +GetLongPathNameW@12 +GetWriteWatch@24 +IsSystemResumeAutomatic@0 +RequestDeviceWakeup@4 +RequestWakeupLatency@4 +ResetWriteWatch@8 +SetCalendarInfoA@16 +SetCalendarInfoW@16 +SetMessageWaitingIndicator@8 +SetThreadExecutionState@4 + +; This is list of ordinal-only symbols added in Windows ME, but not available in Win32s and WinNT +; Symbol names are taken from: +; https://www.geoffchappell.com/studies/windows/win32/kernel32/history/ords490.htm +; GetModuleNameFromProc@16 @123 NONAME + +; This is list of symbols added in Windows ME and also since Windows 2000, but not available in Win32s +EnumLanguageGroupLocalesA@16 +EnumLanguageGroupLocalesW@16 +EnumSystemLanguageGroupsA@12 +EnumSystemLanguageGroupsW@12 +EnumUILanguagesA@12 +EnumUILanguagesW@12 +GetSystemDefaultUILanguage@0 +GetUserDefaultUILanguage@0 +IsValidLanguageGroup@8 +OpenThread@12 ; Win32s contains "OpenThread" symbol but ABI is "OpenThread@4" + +; This is list of symbols added in Windows ME and also since Windows XP, but not available in Win32s +EnumSystemGeoID@12 +GetGeoInfoA@20 +GetGeoInfoW@20 +GetUserGeoID@4 +SetUserGeoID@4 + +;; This is end of Win9x symbols ;; + + +; This is list of symbols added in Windows 2000 +AllocateUserPhysicalPages@12 +AssignProcessToJobObject@8 +BindIoCompletionCallback@12 +CancelTimerQueueTimer@8 +ChangeTimerQueueTimer@16 +CreateHardLinkA@12 +CreateHardLinkW@12 +CreateJobObjectA@8 +CreateJobObjectW@8 +CreateTimerQueue@0 +CreateTimerQueueTimer@28 +DelayLoadFailureHook@8 +DeleteTimerQueue@4 +DeleteTimerQueueEx@8 +DeleteTimerQueueTimer@12 +DeleteVolumeMountPointA@4 +DeleteVolumeMountPointW@4 +DnsHostnameToComputerNameA@12 +DnsHostnameToComputerNameW@12 +DosPathToSessionPathA@12 +DosPathToSessionPathW@12 +FindFirstVolumeA@8 +FindFirstVolumeMountPointA@12 +FindFirstVolumeMountPointW@12 +FindFirstVolumeW@8 +FindNextVolumeA@12 +FindNextVolumeMountPointA@12 +FindNextVolumeMountPointW@12 +FindNextVolumeW@12 +FindVolumeClose@4 +FindVolumeMountPointClose@4 +FreeUserPhysicalPages@12 +GetComputerNameExA@12 +GetComputerNameExW@12 +GetConsoleWindow@0 +; GetDefaultSortkeySize@4 ; removed in Windows Vista +GetFileSizeEx@8 +; GetLinguistLangSize@4 ; removed in Windows Vista +; GetNlsSectionName@24 ; FIXME: Windows 2000 and Windows XP prior SP1 has ABI "GetNlsSectionName@20", Windows XP SP1 and new has ABI "GetNlsSectionName@24", removed in Windows Vista +GetProcessIoCounters@8 +GetSystemWindowsDirectoryA@8 +GetSystemWindowsDirectoryW@8 +GetVolumeNameForVolumeMountPointA@12 +GetVolumeNameForVolumeMountPointW@12 +GetVolumePathNameA@12 +GetVolumePathNameW@12 +GlobalMemoryStatusEx@4 +MapUserPhysicalPages@12 +MapUserPhysicalPagesScatter@12 +Module32FirstW@8 +Module32NextW@8 +MoveFileWithProgressA@20 +MoveFileWithProgressW@20 +NlsConvertIntegerToString@20 ; removed in Windows 7 +NlsGetCacheUpdateCount@0 +; NlsResetProcessLocale@0 ; removed in Windows Vista +; OpenDataFile@8 ; removed in Windows Vista +OpenJobObjectA@12 +OpenJobObjectW@12 +PrivCopyFileExW@24 +PrivMoveFileIdentityW@12 +Process32FirstW@8 +Process32NextW@8 +ProcessIdToSessionId@8 +QueryInformationJobObject@20 +QueueUserWorkItem@12 +RegisterConsoleIME@8 +RegisterConsoleOS2@4 +RegisterWaitForSingleObject@24 +RegisterWaitForSingleObjectEx@20 +ReplaceFile@24 +ReplaceFileA@24 +ReplaceFileW@24 +; SetCPGlobal@4 ; removed in Windows Vista +SetComputerNameExA@8 +SetComputerNameExW@8 +SetConsoleOS2OemFormat@4 +SetFilePointerEx@20 +SetInformationJobObject@16 +SetTermsrvAppInstallMode@4 +SetTimerQueueTimer@24 +SetVolumeMountPointA@8 +SetVolumeMountPointW@8 +TerminateJobObject@8 +TermsrvAppInstallMode@0 +UnregisterConsoleIME@0 +UnregisterWait@4 +UnregisterWaitEx@8 +; ValidateLCType@16 ; removed in Windows Vista +; ValidateLocale@4 ; removed in Windows Vista +VerSetConditionMask@16 + +; In Windows 2000 SP1 was not added any new symbol + +; In Windows 2000 SP2 was not added any new symbol + +; This is list of symbols added in Windows 2000 SP3 +CreateFiberEx@20 +CreateProcessInternalA@48 ; FIXME: Windows 2000 SP3 and SP4 has ABI "CreateProcessInternalA@44", Windows XP and new has ABI "CreateProcessInternalA@48" +CreateProcessInternalW@48 ; FIXME: Windows 2000 SP3 and SP4 has ABI "CreateProcessInternalW@44", Windows XP and new has ABI "CreateProcessInternalW@48" + +; This is list of symbols added in Windows 2000 SP4 +; CreateProcessInternalWSecure@0 ; CreateProcessInternalWSecure is not available in Windows XP prior SP2, removed in Windows Server 2003 + +; This is list of symbols added in Windows XP +ActivateActCtx@8 +AddLocalAlternateComputerNameA@8 +AddLocalAlternateComputerNameW@8 +AddRefActCtx@4 +AddVectoredExceptionHandler@8 +AttachConsole@4 +BaseCheckAppcompatCache@16 +; BaseCleanupAppcompatCache@0 ; removed in Windows Server 2003 +BaseCleanupAppcompatCacheSupport@4 +BaseDumpAppcompatCache@0 +BaseFlushAppcompatCache@0 +; BaseInitAppcompatCache@0 ; removed in Windows Server 2003 +BaseInitAppcompatCacheSupport@0 +; BaseProcessInitPostImport@0 ; removed in Windows Vista +BaseUpdateAppcompatCache@12 +ConvertFiberToThread@0 +; CopyLZFile@8 ; MSDN says this is exported from lz32.dll +CreateActCtxA@4 +CreateActCtxW@4 +CreateJobSet@12 +CreateMemoryResourceNotification@4 +DeactivateActCtx@8 +DebugActiveProcessStop@4 +DebugBreakProcess@4 +DebugSetProcessKillOnExit@4 +EnumerateLocalComputerNamesA@16 +EnumerateLocalComputerNamesW@16 +FindActCtxSectionGuid@20 +FindActCtxSectionStringA@20 +FindActCtxSectionStringW@20 +GetComPlusPackageInstallStatus@0 +GetConsoleProcessList@8 +GetConsoleSelectionInfo@4 +GetCurrentActCtx@4 +; GetExpandedNameA@8 ; MSDN says this is exported from lz32.dll +; GetExpandedNameW@8 ; MSDN says this is exported from lz32.dll +GetFirmwareEnvironmentVariableA@16 +GetFirmwareEnvironmentVariableW@16 +GetModuleHandleExA@12 +GetModuleHandleExW@12 +GetNativeSystemInfo@4 +; GetNumaAvailableMemory@12 ; removed in Windows Server 2003 +GetNumaAvailableMemoryNode@8 +GetNumaHighestNodeNumber@4 +GetNumaNodeProcessorMask@8 +; GetNumaProcessorMap@12 ; removed in Windows Server 2003 +GetNumaProcessorNode@8 +GetSystemWow64DirectoryA@8 +GetSystemWow64DirectoryW@8 +GetVolumePathNamesForVolumeNameA@16 +GetVolumePathNamesForVolumeNameW@16 +HeapQueryInformation@20 +HeapSetInformation@16 +InitializeSListHead@4 +InterlockedFlushSList@4 +InterlockedPopEntrySList@4 +InterlockedPushEntrySList@8 +IsProcessInJob@12 +; IsValidUILanguage@4 ; removed in Windows Vista +IsWow64Process@8 +; LZClose@4 ; MSDN says this is exported from lz32.dll +; LZCloseFile@4 ; MSDN says this is exported from lz32.dll +; LZCopy@8 ; MSDN says this is exported from lz32.dll +; LZCreateFileW@20 ; MSDN says this is exported from lz32.dll +; LZDone@0 ; MSDN says this is exported from lz32.dll +; LZInit@4 ; MSDN says this is exported from lz32.dll +; LZOpenFileA@12 ; MSDN says this is exported from lz32.dll +; LZOpenFileW@12 ; MSDN says this is exported from lz32.dll +; LZRead@12 ; MSDN says this is exported from lz32.dll +; LZSeek@12 ; MSDN says this is exported from lz32.dll +; LZStart@0 ; MSDN says this is exported from lz32.dll +; NumaVirtualQueryNode@16 ; removed in Windows Server 2003 +QueryActCtxW@28 +QueryDepthSList@4 +QueryMemoryResourceNotification@8 +ReleaseActCtx@4 +RemoveLocalAlternateComputerNameA@8 +RemoveLocalAlternateComputerNameW@8 +RemoveVectoredExceptionHandler@4 +RestoreLastError@4 +RtlCaptureContext@4 +RtlCaptureStackBackTrace@16 +SetClientTimeZoneInformation@4 ; removed in Windows 8 +SetComPlusPackageInstallStatus@4 +SetFileShortNameA@8 +SetFileShortNameW@8 +SetFileValidData@12 +SetFirmwareEnvironmentVariableA@16 +SetFirmwareEnvironmentVariableW@16 +SetLocalPrimaryComputerNameA@8 +SetLocalPrimaryComputerNameW@8 +SetThreadUILanguage@4 +TzSpecificLocalTimeToSystemTime@12 +WTSGetActiveConsoleSessionId@0 +ZombifyActCtx@4 + +; This is list of symbols added in Windows XP SP1 +CheckNameLegalDOS8Dot3A@20 +CheckNameLegalDOS8Dot3W@20 +CheckRemoteDebuggerPresent@8 +; CreateNlsSecurityDescriptor@12 ; removed in Windows Vista +GetCPFileNameFromRegistry@12 ; removed in Windows 7 +GetDllDirectoryA@8 +GetDllDirectoryW@8 +GetProcessHandleCount@8 +GetProcessId@4 +GetSystemRegistryQuota@8 +GetSystemTimes@12 +GetThreadIOPendingFlag@8 +SetDllDirectoryA@4 +SetDllDirectoryW@4 + +; This is list of symbols added in Windows XP SP2 and Windows Server 2003 SP1 (not available in Server 2003 without SP1) +BaseQueryModuleData@28 ; FIXME: Windows XP and Server 2003 has ABI "BaseQueryModuleData@20", Windows Vista and new has ABI "BaseQueryModuleData@28" +BasepCheckWinSaferRestrictions@28 ; FIXME: Windows XP and Server 2003 has ABI "BasepCheckWinSaferRestrictions@24", Windows Vista has ABI "BasepCheckWinSaferRestrictions@28", Windows 7 has ABI "BasepCheckWinSaferRestrictions@12", Windows 8 and new has ABI "BasepCheckWinSaferRestrictions@16" +DecodePointer@4 +DecodeSystemPointer@4 +EncodePointer@4 +EncodeSystemPointer@4 + +; This is list of symbols added in Windows XP SP3 +GetLogicalProcessorInformation@8 + +; This is list of symbols added in Windows XP SP3 and Windows Vista SP1 (not available in any version of Windows Server 2003, not available in Windows Vista without SP1) +GetProcessDEPPolicy@12 +GetSystemDEPPolicy@0 +SetProcessDEPPolicy@4 + +; This is list of symbols added in Windows Server 2003 +BaseIsAppcompatInfrastructureDisabled@0 +ConvertThreadToFiberEx@8 +FindFirstStreamW@16 +FindNextStreamW@8 +FlsAlloc@4 +FlsFree@4 +FlsGetValue@4 +FlsSetValue@8 +GetCurrentProcessorNumber@0 +GetLargePageMinimum@0 +GetNLSVersion@12 +GetProcessIdOfThread@4 +GetProcessWorkingSetSizeEx@16 +GetThreadId@4 +InterlockedCompareExchange64@20 DATA ; FIXME: why is decorated stdcall function symbol disabled? +IsNLSDefinedString@20 +IsTimeZoneRedirectionEnabled@0 ; removed in Windows 8 +NeedCurrentDirectoryForExePathA@4 +NeedCurrentDirectoryForExePathW@4 +ReOpenFile@16 +SetEnvironmentStringsA@4 +SetEnvironmentStringsW@4 +SetProcessWorkingSetSizeEx@16 +Wow64EnableWow64FsRedirection@4 + +; This is list of symbols added in Windows Server 2003 SP1 and Windows XP x64 SP1 (WoW64 version) +AddVectoredContinueHandler@8 +BaseCheckRunApp@52 ; FIXME: Windows Server 2003 has ABI "BaseCheckRunApp@40", Windows Vista and 7 has ABI "BaseCheckRunApp@52", Windows 8 has ABI "BaseCheckRunApp@56", Windows 8.1 has ABI "BaseCheckRunApp@60", removed in Windows 10 +; BaseProcessStartThunk@0 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows Vista +; BaseThreadStartThunk@0 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows Vista +BasepCheckBadapp@56 ; FIXME: Windows Server 2003 has ABI "BasepCheckBadapp@36", Windows Vista has ABI "BasepCheckBadapp@56", Windows 7 has ABI "BasepCheckBadapp@60", Windows 8 and Windows 8.1 has ABI "BasepCheckBadapp@72", removed in Windows 10 +BasepFreeAppCompatData@12 ; FIXME: Windows Server 2003 has ABI "BasepFreeAppCompatData@8", Windows Vista and new has ABI "BasepFreeAppCompatData@12" +ConsoleIMERoutine@4 ; available only in 32-bit WoW64 version on 64-bit system +CtrlRoutine@4 ; available only in 32-bit WoW64 version on 64-bit system, since Windows 7 available also on 32-bit system +EnumSystemFirmwareTables@12 +GetSystemFileCacheSize@12 +GetSystemFirmwareTable@16 +RemoveVectoredContinueHandler@4 +SetSystemFileCacheSize@12 +SetThreadStackGuarantee@4 +Wow64DisableWow64FsRedirection@4 +Wow64RevertWow64FsRedirection@4 + +; This is list of symbols added in Windows Server 2003 SP2 and Windows XP x64 SP2 (WoW64 version) +SetFileCompletionNotificationModes@8 + +; This is list of symbols added in Windows Vista +AcquireSRWLockExclusive@4 +AcquireSRWLockShared@4 +AddSIDToBoundaryDescriptor@8 +AdjustCalendarDate@12 +AllocateUserPhysicalPagesNuma@16 +ApplicationRecoveryFinished@4 +ApplicationRecoveryInProgress@4 +BaseGenerateAppCompatData@24 +BaseThreadInitThunk@4 ; FIXME: Windows Vista has ABI "BaseThreadInitThunk@8", Windows Vista WoW64 has ABI "BaseThreadInitThunk@4", Windows Vista SP1 has ABI "BaseThreadInitThunk@16", Windows Vista SP2 has ABI "BaseThreadInitThunk@20", Windows 7 has ABI "BaseThreadInitThunk@8", Windows 8 and new has ABI "BaseThreadInitThunk@4" +CallbackMayRunLong@4 +CancelIoEx@8 +CancelSynchronousIo@4 +CancelThreadpoolIo@4 +CheckElevation@20 +CheckElevationEnabled@4 +CheckForReadOnlyResource@8 +ClosePrivateNamespace@8 +CloseThreadpool@4 +CloseThreadpoolCleanupGroup@4 +CloseThreadpoolCleanupGroupMembers@12 +CloseThreadpoolIo@4 +CloseThreadpoolTimer@4 +CloseThreadpoolWait@4 +CloseThreadpoolWork@4 +CompareCalendarDates@12 +CompareStringEx@36 +CompareStringOrdinal@20 +ConvertCalDateTimeToSystemTime@8 +ConvertNLSDayOfWeekToWin32DayOfWeek@4 +ConvertSystemTimeToCalDateTime@12 +CopyFileTransactedA@28 +CopyFileTransactedW@28 +CreateBoundaryDescriptorA@8 +CreateBoundaryDescriptorW@8 +CreateDirectoryTransactedA@16 +CreateDirectoryTransactedW@16 +CreateEventExA@16 +CreateEventExW@16 +CreateFileMappingNumaA@28 +CreateFileMappingNumaW@28 +CreateFileTransactedA@40 +CreateFileTransactedW@40 +CreateHardLinkTransactedA@16 +CreateHardLinkTransactedW@16 +CreateMutexExA@16 +CreateMutexExW@16 +CreatePrivateNamespaceA@12 +CreatePrivateNamespaceW@12 +CreateSemaphoreExA@24 +CreateSemaphoreExW@24 +CreateSymbolicLinkA@12 +CreateSymbolicLinkTransactedA@16 +CreateSymbolicLinkTransactedW@16 +CreateSymbolicLinkW@12 +CreateThreadpool@4 +CreateThreadpoolCleanupGroup@0 +CreateThreadpoolIo@16 +CreateThreadpoolTimer@12 +CreateThreadpoolWait@12 +CreateThreadpoolWork@12 +CreateWaitableTimerExA@16 +CreateWaitableTimerExW@16 +DeleteBoundaryDescriptor@4 +DeleteFileTransactedA@8 +DeleteFileTransactedW@8 +DeleteProcThreadAttributeList@4 +DisassociateCurrentThreadFromCallback@4 +EnumCalendarInfoExEx@24 +EnumDateFormatsExEx@16 +EnumResourceLanguagesExA@28 +EnumResourceLanguagesExW@28 +EnumResourceNamesExA@24 +EnumResourceNamesExW@24 +EnumResourceTypesExA@20 +EnumResourceTypesExW@20 +EnumSystemLocalesEx@16 +EnumTimeFormatsEx@16 +FindFirstFileNameTransactedW@20 +FindFirstFileNameW@16 +FindFirstFileTransactedA@28 +FindFirstFileTransactedW@28 +FindFirstStreamTransactedW@20 +FindNLSString@28 +FindNLSStringEx@40 +FindNextFileNameW@12 +FlushProcessWriteBuffers@0 +FreeLibraryWhenCallbackReturns@8 +GetApplicationRecoveryCallback@20 +GetApplicationRestartSettings@16 +GetCalendarDateFormat@24 +GetCalendarDateFormatEx@24 +GetCalendarDaysInMonth@16 +GetCalendarDifferenceInDays@12 +GetCalendarInfoEx@28 +GetCalendarMonthsInYear@12 +GetCalendarSupportedDateRange@12 +GetCalendarWeekNumber@16 +GetCompressedFileSizeTransactedA@12 +GetCompressedFileSizeTransactedW@12 +GetConsoleHistoryInfo@4 +GetConsoleOriginalTitleA@8 +GetConsoleOriginalTitleW@8 +GetConsoleScreenBufferInfoEx@8 +GetCurrencyFormatEx@24 +GetCurrentConsoleFontEx@12 +GetDateFormatEx@28 +GetDurationFormat@32 +GetDurationFormatEx@32 +GetDynamicTimeZoneInformation@4 +GetFileAttributesTransactedA@16 +GetFileAttributesTransactedW@16 +GetFileBandwidthReservation@24 +GetFileInformationByHandleEx@16 +GetFileMUIInfo@16 +GetFileMUIPath@28 +GetFinalPathNameByHandleA@16 +GetFinalPathNameByHandleW@16 +GetFullPathNameTransactedA@20 +GetFullPathNameTransactedW@20 +GetLocaleInfoEx@16 +GetLongPathNameTransactedA@16 +GetLongPathNameTransactedW@16 +GetNLSVersionEx@12 +GetNamedPipeAttribute@20 +GetNamedPipeClientComputerNameA@12 +GetNamedPipeClientComputerNameW@12 +GetNamedPipeClientProcessId@8 +GetNamedPipeClientSessionId@8 +GetNamedPipeServerProcessId@8 +GetNamedPipeServerSessionId@8 +GetNumaProximityNode@8 +GetNumberFormatEx@24 +GetProductInfo@20 +GetQueuedCompletionStatusEx@24 +GetStringScripts@20 +GetSystemDefaultLocaleName@8 +GetSystemPreferredUILanguages@16 +GetThreadPreferredUILanguages@16 +GetThreadUILanguage@0 +GetTickCount64@0 +GetTimeFormatEx@24 +GetUILanguageInfo@20 +GetUserDefaultLocaleName@8 +GetUserPreferredUILanguages@16 +GetVolumeInformationByHandleW@32 +IdnToAscii@20 +IdnToNameprepUnicode@20 +IdnToUnicode@20 +InitOnceBeginInitialize@16 +InitOnceComplete@12 +InitOnceExecuteOnce@16 +InitOnceInitialize@4 +InitializeConditionVariable@4 +InitializeCriticalSectionEx@12 +InitializeProcThreadAttributeList@16 +InitializeSRWLock@4 +@InterlockedPushListSList@16 ; really fastcall calling convention +IsCalendarLeapDay@20 +IsCalendarLeapMonth@16 +IsCalendarLeapYear@12 +IsNormalizedString@12 +IsThreadAFiber@0 +IsThreadpoolTimerSet@4 +IsValidCalDateTime@8 +IsValidLocaleName@4 +LCIDToLocaleName@16 +LCMapStringEx@36 +LeaveCriticalSectionWhenCallbackReturns@8 +LoadStringBaseExW@20 +LoadStringBaseW@16 +LocaleNameToLCID@8 +MapViewOfFileExNuma@28 +MoveFileTransactedA@24 +MoveFileTransactedW@24 +NlsCheckPolicy@8 +NlsEventDataDescCreate@16 ; removed in Windows 10 May 2020 Update (20H1) +NlsUpdateLocale@8 +NlsUpdateSystemLocale@8 +NlsWriteEtwEvent@20 ; removed in Windows 10 May 2020 Update (20H1) +NormalizeString@20 +NotifyUILanguageChange@20 +OpenFileById@24 +OpenPrivateNamespaceA@8 +OpenPrivateNamespaceW@8 +QueryActCtxSettingsW@28 +QueryFullProcessImageNameA@16 +QueryFullProcessImageNameW@16 +QueryIdleProcessorCycleTime@8 +QueryProcessCycleTime@8 +QueryThreadCycleTime@8 +RegisterApplicationRecoveryCallback@16 +RegisterApplicationRestart@8 +ReleaseMutexWhenCallbackReturns@8 +ReleaseSRWLockExclusive@4 +ReleaseSRWLockShared@4 +ReleaseSemaphoreWhenCallbackReturns@12 +RemoveDirectoryTransactedA@8 +RemoveDirectoryTransactedW@8 +SetConsoleHistoryInfo@4 +SetConsoleScreenBufferInfoEx@8 +SetCurrentConsoleFontEx@12 +SetDynamicTimeZoneInformation@4 +SetEventWhenCallbackReturns@8 +SetFileAttributesTransactedA@12 +SetFileAttributesTransactedW@12 +SetFileBandwidthReservation@24 +SetFileInformationByHandle@16 +SetFileIoOverlappedRange@12 +SetNamedPipeAttribute@20 +SetStdHandleEx@12 +SetThreadPreferredUILanguages@12 +SetThreadpoolThreadMaximum@8 +SetThreadpoolThreadMinimum@8 +SetThreadpoolTimer@16 +SetThreadpoolWait@12 +SleepConditionVariableCS@12 +SleepConditionVariableSRW@16 +StartThreadpoolIo@4 +SubmitThreadpoolWork@4 +TrySubmitThreadpoolCallback@12 +UnregisterApplicationRecoveryCallback@0 +UnregisterApplicationRestart@0 +UpdateCalendarDayOfWeek@4 +UpdateProcThreadAttribute@28 +VerifyScripts@20 +VirtualAllocExNuma@24 +WaitForThreadpoolIoCallbacks@8 +WaitForThreadpoolTimerCallbacks@8 +WaitForThreadpoolWaitCallbacks@8 +WaitForThreadpoolWorkCallbacks@8 +WakeAllConditionVariable@4 +WakeConditionVariable@4 +WerGetFlags@8 +WerRegisterFile@12 +WerRegisterMemoryBlock@8 +WerSetFlags@4 +WerUnregisterFile@4 +WerUnregisterMemoryBlock@4 +WerpCleanupMessageMapping@0 ; removed in Windows 10 Fall Creators Update (Redstone 3) +WerpInitiateRemoteRecovery@4 +WerpNotifyLoadStringResource@16 ; removed in Windows 10 Fall Creators Update (Redstone 3) +WerpNotifyLoadStringResourceEx@20 ; removed in Windows 10 Fall Creators Update (Redstone 3) +WerpNotifyUseStringResource@4 ; removed in Windows 10 Fall Creators Update (Redstone 3) +WerpStringLookup@8 ; removed in Windows 10 Fall Creators Update (Redstone 3) +Wow64GetThreadContext@8 +Wow64SetThreadContext@8 +Wow64SuspendThread@4 + +; This is list of symbols added in Windows Vista SP1 +AddSecureMemoryCacheCallback@4 +GetPhysicallyInstalledSystemMemory@4 +GetTimeZoneInformationForYear@12 +QueryProcessAffinityUpdateMode@8 +RemoveSecureMemoryCacheCallback@4 +ReplacePartitionUnit@12 +SetProcessAffinityUpdateMode@8 + +; This is list of symbols added in Windows Vista SP2 +SetSearchPathMode@4 + +; This is list of symbols added in Windows 7 +AddIntegrityLabelToBoundaryDescriptor@8 +BaseCheckAppcompatCacheEx@24 ; FIXME: Windows 7 has ABI "BaseCheckAppcompatCacheEx@24", Windows 8 has ABI "BaseCheckAppcompatCacheEx@32" +BaseDllReadWriteIniFile@32 +BaseFormatObjectAttributes@16 +BaseFormatTimeOut@8 +BaseGetNamedObjectDirectory@4 +BaseSetLastNTError@4 +BaseVerifyUnicodeString@4 ; removed in Windows 11 2024 Update (Hudson Valley / 24H2) (WoW64 version) +Basep8BitStringToDynamicUnicodeString@8 +BasepAllocateActivationContextActivationBlock@16 +BasepAnsiStringToDynamicUnicodeString@8 +BasepCheckAppCompat@16 +BasepFreeActivationContextActivationBlock@4 +BasepMapModuleHandle@8 +; CopyExtendedContext@12 ; removed in Windows 7 SP1 +; CreateProcessAsUserW@44 ; MSDN says this is exported from advapi32.dll +CreateRemoteThreadEx@32 +DisableThreadProfiling@4 +EnableThreadProfiling@20 +FindStringOrdinal@24 +GetActiveProcessorCount@4 +GetActiveProcessorGroupCount@0 +GetCurrentProcessorNumberEx@4 +; GetEnabledExtendedFeatures@8 ; removed in Windows 7 SP1 +GetEraNameCountedString@16 +; GetExtendedContextLength@8 ; removed in Windows 7 SP1 +; GetExtendedFeaturesMask@4 ; removed in Windows 7 SP1 +GetLogicalProcessorInformationEx@12 +GetMaximumProcessorCount@4 +GetMaximumProcessorGroupCount@0 +GetNumaAvailableMemoryNodeEx@8 +GetNumaNodeNumberFromHandle@8 +GetNumaNodeProcessorMaskEx@8 +GetNumaProcessorNodeEx@8 +GetNumaProximityNodeEx@8 +GetProcessGroupAffinity@12 +GetProcessPreferredUILanguages@16 +GetProcessorSystemCycleTime@12 +GetThreadErrorMode@0 +GetThreadGroupAffinity@8 +GetThreadIdealProcessorEx@8 +; InitializeExtendedContext@12 ; removed in Windows 7 SP1 +K32EmptyWorkingSet@4 +K32EnumDeviceDrivers@12 +K32EnumPageFilesA@8 +K32EnumPageFilesW@8 +K32EnumProcessModules@16 +K32EnumProcessModulesEx@20 +K32EnumProcesses@12 +K32GetDeviceDriverBaseNameA@12 +K32GetDeviceDriverBaseNameW@12 +K32GetDeviceDriverFileNameA@12 +K32GetDeviceDriverFileNameW@12 +K32GetMappedFileNameA@16 +K32GetMappedFileNameW@16 +K32GetModuleBaseNameA@16 +K32GetModuleBaseNameW@16 +K32GetModuleFileNameExA@16 +K32GetModuleFileNameExW@16 +K32GetModuleInformation@16 +K32GetPerformanceInfo@8 +K32GetProcessImageFileNameA@12 +K32GetProcessImageFileNameW@12 +K32GetProcessMemoryInfo@12 +K32GetWsChanges@12 +K32GetWsChangesEx@12 +K32InitializeProcessForWsWatch@4 +K32QueryWorkingSet@12 +K32QueryWorkingSetEx@12 +LoadAppInitDlls@0 +; LocateExtendedFeature@12 ; removed in Windows 7 SP1 +; LocateLegacyContext@8 ; removed in Windows 7 SP1 +NotifyMountMgr@12 +; OpenProcessToken@12 ; MSDN says this is exported from advapi32.dll +; OpenThreadToken@16 ; MSDN says this is exported from advapi32.dll +PowerClearRequest@8 +PowerCreateRequest@4 +PowerSetRequest@8 +QueryIdleProcessorCycleTimeEx@12 +QueryThreadProfiling@8 +QueryThreadpoolStackInformation@8 +QueryUnbiasedInterruptTime@4 +RaiseFailFastException@12 +ReadThreadProfilingData@12 +; RegCloseKey@4 ; MSDN says this is exported from advapi32.dll +; RegCreateKeyExA@36 ; MSDN says this is exported from advapi32.dll +; RegCreateKeyExW@36 ; MSDN says this is exported from advapi32.dll +; RegDeleteKeyExA@16 ; MSDN says this is exported from advapi32.dll +; RegDeleteKeyExW@16 ; MSDN says this is exported from advapi32.dll +; RegDeleteTreeA@8 ; MSDN says this is exported from advapi32.dll +; RegDeleteTreeW@8 ; MSDN says this is exported from advapi32.dll +; RegDeleteValueA@8 ; MSDN says this is exported from advapi32.dll +; RegDeleteValueW@8 ; MSDN says this is exported from advapi32.dll +; RegDisablePredefinedCacheEx@0 ; MSDN says this is exported from advapi32.dll +; RegEnumKeyExA@32 ; MSDN says this is exported from advapi32.dll +; RegEnumKeyExW@32 ; MSDN says this is exported from advapi32.dll +; RegEnumValueA@32 ; MSDN says this is exported from advapi32.dll +; RegEnumValueW@32 ; MSDN says this is exported from advapi32.dll +; RegFlushKey@4 ; MSDN says this is exported from advapi32.dll +; RegGetKeySecurity@16 ; MSDN says this is exported from advapi32.dll +; RegGetValueA@28 ; MSDN says this is exported from advapi32.dll +; RegGetValueW@28 ; MSDN says this is exported from advapi32.dll +; RegKrnGetGlobalState@0 ; removed in Windows 8 +; RegKrnInitialize@12 ; removed in Windows 8 +; RegLoadKeyA@12 ; MSDN says this is exported from advapi32.dll +; RegLoadKeyW@12 ; MSDN says this is exported from advapi32.dll +; RegLoadMUIStringA@28 ; MSDN says this is exported from advapi32.dll +; RegLoadMUIStringW@28 ; MSDN says this is exported from advapi32.dll +; RegNotifyChangeKeyValue@20 ; MSDN says this is exported from advapi32.dll +; RegOpenCurrentUser@8 ; MSDN says this is exported from advapi32.dll +; RegOpenKeyExA@20 ; MSDN says this is exported from advapi32.dll +; RegOpenKeyExW@20 ; MSDN says this is exported from advapi32.dll +; RegOpenUserClassesRoot@16 ; MSDN says this is exported from advapi32.dll +; RegQueryInfoKeyA@48 ; MSDN says this is exported from advapi32.dll +; RegQueryInfoKeyW@48 ; MSDN says this is exported from advapi32.dll +; RegQueryValueExA@24 ; MSDN says this is exported from advapi32.dll +; RegQueryValueExW@24 ; MSDN says this is exported from advapi32.dll +; RegRestoreKeyA@12 ; MSDN says this is exported from advapi32.dll +; RegRestoreKeyW@12 ; MSDN says this is exported from advapi32.dll +; RegSaveKeyExA@16 ; MSDN says this is exported from advapi32.dll +; RegSaveKeyExW@16 ; MSDN says this is exported from advapi32.dll +; RegSetKeySecurity@12 ; MSDN says this is exported from advapi32.dll +; RegSetValueExA@24 ; MSDN says this is exported from advapi32.dll +; RegSetValueExW@24 ; MSDN says this is exported from advapi32.dll +; RegUnLoadKeyA@8 ; MSDN says this is exported from advapi32.dll +; RegUnLoadKeyW@8 ; MSDN says this is exported from advapi32.dll +ResolveLocaleName@12 +; SetExtendedFeaturesMask@12 ; removed in Windows 7 SP1 +SetProcessPreferredUILanguages@12 +SetThreadErrorMode@8 +SetThreadGroupAffinity@12 +SetThreadIdealProcessorEx@12 +; SetThreadToken@8 ; MSDN says this is exported from advapi32.dll +SetThreadpoolStackInformation@8 +SetWaitableTimerEx@28 +SortCloseHandle@4 +SortGetHandle@12 +TryAcquireSRWLockExclusive@4 +TryAcquireSRWLockShared@4 +WerRegisterRuntimeExceptionModule@8 +WerUnregisterRuntimeExceptionModule@8 +Wow64GetThreadSelectorEntry@12 + +; This is list of symbols added in Windows 7 SP1 +CopyContext@12 +GetEnabledXStateFeatures@0 +GetProcessUserModeExceptionPolicy@4 ; removed in Windows 8 +GetXStateFeaturesMask@8 +InitializeContext@16 +LocateXStateFeature@12 +SetProcessUserModeExceptionPolicy@4 ; removed in Windows 8 +SetXStateFeaturesMask@12 + +; This is list of symbols added in Windows 8 +; AcquireStateLock@12 ; removed in Windows 8.1 +ActivateActCtxWorker@8 +AddDllDirectory@4 +AddRefActCtxWorker@4 +AddResourceAttributeAce@28 +AddScopedPolicyIDAce@20 +; AppContainerDeriveSidFromMoniker@8 ; removed in Windows 8.1 +; AppContainerFreeMemory@4 ; removed in Windows 8.1 +; AppContainerLookupDisplayNameMrtReference@8 ; removed in Windows 8.1 +; AppContainerLookupMoniker@8 ; removed in Windows 8.1 +; AppContainerRegisterSid@12 ; removed in Windows 8.1 +; AppContainerUnregisterSid@4 ; removed in Windows 8.1 +; AppXFreeMemory@4 ; removed in Windows 8.1 +; AppXGetApplicationData@32 ; removed in Windows 8.1 +; AppXGetDevelopmentMode@8 ; removed in Windows 8.1 +AppXGetOSMaxVersionTested@8 +; AppXGetOSMinVersion@8 ; removed in Windows 8.1 +; AppXGetPackageCapabilities@16 ; removed in Windows 8.1 +; AppXGetPackageSid@8 ; removed in Windows 8.1 +; AppXGetPackageState@8 ; removed in Windows 8.1 +; AppXLookupDisplayName@8 ; removed in Windows 8.1 +; AppXLookupMoniker@8 ; removed in Windows 8.1 +; AppXSetPackageState@12 ; removed in Windows 8.1 +BaseCheckAppcompatCacheExWorker@36 ; FIXME: Windows 8 and Windows 8.1 has ABI "BaseCheckAppcompatCacheExWorker@32", Windows 10 has ABI "BaseCheckAppcompatCacheExWorker@36" +BaseCheckAppcompatCacheWorker@16 +BaseCheckElevation@48 +; BaseCleanupAppcompatCacheSupportWorker@4 +; BaseDestroyVDMEnvironment@8 +BaseDumpAppcompatCacheWorker@0 +BaseElevationPostProcessing@12 +BaseFlushAppcompatCacheWorker@0 +BaseInitAppcompatCacheSupportWorker@0 +BaseIsAppcompatInfrastructureDisabledWorker@0 +BaseIsDosApplication@8 +BaseUpdateAppcompatCacheWorker@12 +BaseUpdateVDMEntry@16 +BaseWriteErrorElevationRequiredEvent@0 +; BasepAppCompatHookDLL@8 ; removed in Windows 8.1 +BasepAppContainerEnvironmentExtension@12 +BasepAppXExtension@24 +BasepCheckWebBladeHashes@4 +BasepConstructSxsCreateProcessMessage@80 ; FIXME: Windows 8 has ABI "BasepConstructSxsCreateProcessMessage@80", Windows 8.1 and Windows 10 has ABI "BasepConstructSxsCreateProcessMessage@84", Windows 10 Creators Update (Redstone 2) has ABI "BasepConstructSxsCreateProcessMessage@80" +BasepCopyEncryption@12 ; FIXME: Windows 8, Windows 8.1 and Windows 10 has ABI "BasepCopyEncryption@56", Windows 10 November Update (Threshold 2) has ABI "BasepCopyEncryption@12" +BasepGetAppCompatData@60 ; FIXME: Windows 8 and Windows 8.1 has ABI "BasepGetAppCompatData@80", Windows 10 has ABI "BasepGetAppCompatData@84", Windows 10 Creators Update (Redstone 2) has ABI "BasepGetAppCompatData@56", Windows 10 May 2019 Update (19H1) has ABI "BasepGetAppCompatData@60" +BasepGetComputerNameFromNtPath@16 +BasepGetExeArchType@12 +BasepIsProcessAllowed@4 +BasepNotifyLoadStringResource@16 +BasepPostSuccessAppXExtension@8 +BasepProcessInvalidImage@84 +BasepQueryAppCompat@72 ; FIXME: Windows 8 and Windows 8.1 has ABI BasepQueryAppCompat@80, Windows 10 has ABI "BasepQueryAppCompat@84", Windows 10 Creators Update (Redstone 2) has ABI "BasepQueryAppCompat@72" +BasepReleaseAppXContext@4 +BasepReleaseSxsCreateProcessUtilityStruct@4 +BasepReportFault@8 +BasepSetFileEncryptionCompression@32 ; FIXME: Windows 8 has ABI "BasepSetFileEncryptionCompression@28", Windows 8.1 has ABI "BasepSetFileEncryptionCompression@32" +CeipIsOptedIn@0 +CheckAllowDecryptedRemoteDestinationPolicy@0 +CheckForReadOnlyResourceFilter@4 +CheckTokenCapability@12 +CheckTokenMembershipEx@16 +ClosePackageInfo@4 +CloseState@4 +; CloseStateAtom@4 ; removed in Windows 8.1 +; CloseStateChangeNotification@4 ; removed in Windows 8.1 +; CloseStateContainer@4 ; removed in Windows 8.1 +; CloseStateLock@4 ; removed in Windows 8.1 +; CommitStateAtom@12 ; removed in Windows 8.1 +CopyFile2@12 +CreateActCtxWWorker@4 +CreateFile2@20 +CreateFileMappingFromApp@24 +; CreateStateAtom@0 ; removed in Windows 8.1 +; CreateStateChangeNotification@4 ; removed in Windows 8.1 +; CreateStateContainer@16 ; removed in Windows 8.1 +; CreateStateLock@4 ; removed in Windows 8.1 +; CreateStateSubcontainer@12 ; removed in Windows 8.1 +DeactivateActCtxWorker@8 +; DeleteStateAtomValue@8 ; removed in Windows 8.1 +; DeleteStateContainer@8 ; removed in Windows 8.1 +; DeleteStateContainerValue@8 ; removed in Windows 8.1 +DuplicateEncryptionInfoFileExt@20 +; DuplicateStateContainerHandle@4 ; removed in Windows 8.1 +; EnumerateStateAtomValues@12 ; removed in Windows 8.1 +; EnumerateStateContainerItems@16 ; removed in Windows 8.1 +FindActCtxSectionGuidWorker@20 +FindActCtxSectionStringWWorker@20 +GetAppContainerAce@16 +GetAppContainerNamedObjectPath@20 +GetApplicationRecoveryCallbackWorker@20 +GetApplicationRestartSettingsWorker@16 +GetApplicationUserModelId@12 +GetCachedSigningLevel@24 +GetCurrentActCtxWorker@4 +GetCurrentApplicationUserModelId@8 +GetCurrentPackageFamilyName@8 +GetCurrentPackageFullName@8 +GetCurrentPackageId@8 +GetCurrentPackageInfo@16 +GetCurrentPackagePath@8 +GetCurrentThreadStackLimits@8 +GetDateFormatAWorker@28 +GetDateFormatWWorker@28 +GetFirmwareEnvironmentVariableExA@20 +GetFirmwareEnvironmentVariableExW@20 +GetFirmwareType@4 +; GetHivePath@16 ; removed in Windows 8.1 +GetMemoryErrorHandlingCapabilities@4 +GetOverlappedResultEx@20 +GetPackageFamilyName@12 +GetPackageFullName@12 +GetPackageId@12 +GetPackageInfo@20 +GetPackagePath@16 +GetPackagesByPackageFamily@20 +GetProcessInformation@16 +GetProcessMitigationPolicy@16 +; GetRoamingLastObservedChangeTime@8 ; removed in Windows 8.1 +; GetSerializedAtomBytes@12 ; removed in Windows 8.1 +; GetStateContainerDepth@8 ; removed in Windows 8.1 +GetStateFolder@16 +; GetStateRootFolder@12 ; removed in Windows 8.1 +; GetStateSettingsFolder@12 ; removed in Windows 8.1 +; GetStateVersion@12 ; removed in Windows 8.1 +; GetSystemAppDataFolder@12 ; removed in Windows 8.1 +GetSystemAppDataKey@16 +GetSystemTimePreciseAsFileTime@4 +GetThreadInformation@16 +GetTimeFormatAWorker@28 +GetTimeFormatWWorker@24 +GlobalAddAtomExA@8 +GlobalAddAtomExW@8 +InterlockedPushListSListEx@16 +IsNativeVhdBoot@4 +IsValidNLSVersion@12 +LoadPackagedLibrary@8 +MapViewOfFileFromApp@20 +NtVdm64CreateProcessInternalW@48 +OpenConsoleWStub@16 +OpenPackageInfoByFullName@12 +OpenState@0 +; OpenStateAtom@8 ; removed in Windows 8.1 +OpenStateExplicit@8 +; OverrideRoamingDataModificationTimesInRange@16 ; removed in Windows 8.1 +PackageFamilyNameFromFullName@12 +PackageFamilyNameFromId@12 +PackageFullNameFromId@12 +PackageIdFromFullName@16 +PackageNameAndPublisherIdFromFamilyName@20 +PrefetchVirtualMemory@16 +; PublishStateChangeNotification@4 ; removed in Windows 8.1 +QueryActCtxSettingsWWorker@28 +QueryActCtxWWorker@28 +; QueryStateAtomValueInfo@12 ; removed in Windows 8.1 +; QueryStateContainerItemInfo@12 ; removed in Windows 8.1 +RaiseInvalid16BitExeError@4 +; ReadStateAtomValue@20 ; removed in Windows 8.1 +; ReadStateContainerValue@20 ; removed in Windows 8.1 +; RegCopyTreeW@12 ; MSDN says this function is exported from advapi32.dll +RegisterBadMemoryNotification@4 +; RegisterStateChangeNotification@8 ; removed in Windows 8.1 +; RegisterStateLock@4 ; removed in Windows 8.1 +ReleaseActCtxWorker@4 +; ReleaseStateLock@4 ; removed in Windows 8.1 +RemoveDllDirectory@4 +; ResetState@4 ; removed in Windows 8.1 +ResolveDelayLoadedAPI@24 +ResolveDelayLoadsFromDll@12 +SetCachedSigningLevel@16 +SetDefaultDllDirectories@4 +SetFirmwareEnvironmentVariableExA@20 +SetFirmwareEnvironmentVariableExW@20 +SetProcessInformation@16 +SetProcessMitigationPolicy@12 +; SetRoamingLastObservedChangeTime@8 ; removed in Windows 8.1 +; SetStateVersion@8 ; removed in Windows 8.1 +SetThreadInformation@16 +SetThreadpoolTimerEx@16 +SetThreadpoolWaitEx@16 +SetVolumeMountPointWStub@8 +; SubscribeStateChangeNotification@12 ; removed in Windows 8.1 +SystemTimeToTzSpecificLocalTimeEx@12 +TermsrvConvertSysRootToUserDir@8 +TermsrvCreateRegEntry@20 +TermsrvDeleteKey@4 +TermsrvDeleteValue@8 +TermsrvGetPreSetValue@16 +TermsrvGetWindowsDirectoryA@8 +TermsrvGetWindowsDirectoryW@8 +TermsrvOpenRegEntry@12 +TermsrvOpenUserClasses@8 +TermsrvRestoreKey@12 +TermsrvSetKeySecurity@12 +TermsrvSetValueKey@24 +TermsrvSyncUserIniFileExt@4 +TzSpecificLocalTimeToSystemTimeEx@12 +UnmapViewOfFileEx@8 +UnregisterBadMemoryNotification@4 +; UnregisterStateChangeNotification@4 ; removed in Windows 8.1 +; UnregisterStateLock@8 ; removed in Windows 8.1 +; UnsubscribeStateChangeNotification@4 ; removed in Windows 8.1 +WerRegisterFileWorker@12 +WerRegisterMemoryBlockWorker@8 +WerRegisterRuntimeExceptionModuleWorker@8 +WerUnregisterFileWorker@4 +WerUnregisterMemoryBlockWorker@4 +WerUnregisterRuntimeExceptionModuleWorker@8 +WerpGetDebugger@8 ; FIXME: Windows 8 and Windows 8.1 has ABI "WerpGetDebugger@20", Windows 10 has ABI "WerpGetDebugger@8" +; WerpLaunchAeDebug@24 +; WerpNotifyLoadStringResourceWorker@16 +; WerpNotifyUseStringResourceWorker@4 +; WriteStateAtomValue@20 ; removed in Windows 8.1 +; WriteStateContainerValue@24 ; removed in Windows 8.1 +ZombifyActCtxWorker@4 +; timeBeginPeriod@4 ; MSDN says this is exported from winmm.dll +; timeEndPeriod@4 ; MSDN says this is exported from winmm.dll +; timeGetDevCaps@8 ; MSDN says this is exported from winmm.dll +; timeGetSystemTime@8 ; MSDN says this is exported from winmm.dll +; timeGetTime@0 ; MSDN says this is exported from winmm.dll + +; This is list of symbols added in Windows 8.1 +BaseFreeAppCompatDataForProcessWorker@4 +BaseReadAppCompatDataForProcessWorker@12 +; CalloutOnFiberStack@12 ; removed in Windows 10 November Update (Threshold 2) +DeleteSynchronizationBarrier@4 +DnsHostnameToComputerNameExW@12 +EnterSynchronizationBarrier@8 +FindPackagesByPackageFamily@28 +FormatApplicationUserModelId@16 +GetEncryptedFileVersionExt@8 +GetPackageApplicationIds@16 +GetPackagePathByFullName@12 +GetStagedPackagePathByFullName@12 +InitializeSynchronizationBarrier@12 +InstallELAMCertificateInfo@4 +IsProcessCritical@8 +OOBEComplete@4 +ParseApplicationUserModelId@20 +PssCaptureSnapshot@16 +PssDuplicateSnapshot@20 +PssFreeSnapshot@8 +PssQuerySnapshot@16 +PssWalkMarkerCreate@8 +PssWalkMarkerFree@4 +PssWalkMarkerGetPosition@8 +PssWalkMarkerRewind@4 +PssWalkMarkerSeek@8 +PssWalkMarkerSeekToBeginning@4 +PssWalkMarkerSetPosition@8 +PssWalkMarkerTell@8 +PssWalkSnapshot@20 +QuirkGetData2Worker@8 +QuirkGetDataWorker@8 +QuirkIsEnabled2Worker@12 +QuirkIsEnabled3Worker@8 +QuirkIsEnabledForPackage2Worker@24 +QuirkIsEnabledForPackageWorker@16 +QuirkIsEnabledForProcessWorker@12 +QuirkIsEnabledWorker@4 +RegisterWaitUntilOOBECompleted@12 +SetComputerNameEx2W@12 +UnregisterWaitUntilOOBECompleted@4 + +; This is list of symbols added in Windows 10 (Threshold / 1507) +; CreateProcessAsUserA@44 ; MSDN says this is exported from advapi32.dll +DiscardVirtualMemory@8 +FreeMemoryJobObject@4 +GetProcessDefaultCpuSets@16 +GetSystemCpuSetInformation@20 +GetThreadSelectedCpuSets@16 +OfferVirtualMemory@12 +QueryIoRateControlInformationJobObject@16 +QueryProtectedPolicy@8 +QuirkIsEnabledForPackage3Worker@20 +QuirkIsEnabledForPackage4Worker@20 +ReclaimVirtualMemory@8 +RtlPcToFileHeader@8 +SetIoRateControlInformationJobObject@8 +SetProcessDefaultCpuSets@12 +SetProtectedPolicy@12 +SetThreadSelectedCpuSets@12 +WaitForDebugEventEx@8 +WerGetFlagsWorker@8 +WerSetFlagsWorker@4 + +; This is list of symbols added in Windows 10 November Update (Threshold 2 / 1511) +CreateEnclave@32 +InitializeEnclave@20 +IsEnclaveTypeSupported@4 +LoadEnclaveData@36 + +; This is list of symbols added in Windows 10 Anniversary Update (Redstone / 1607) +AppPolicyGetClrCompat@8 +AppPolicyGetCreateFileAccess@8 +AppPolicyGetLifecycleManagement@8 +AppPolicyGetMediaFoundationCodecLoading@8 +AppPolicyGetProcessTerminationMethod@8 +AppPolicyGetShowDeveloperDiagnostic@8 +AppPolicyGetThreadInitializationType@8 +AppPolicyGetWindowingModel@8 +; Wow64Transition DATA ; available only in 32-bit WoW64 version on 64-bit system + +; This is list of symbols added in Windows 10 Creators Update (Redstone 2 / 1703) +BasepInitAppCompatData@12 +GetThreadDescription@8 +SetThreadDescription@8 +WerRegisterAdditionalProcess@8 +WerRegisterCustomMetadata@8 +WerRegisterExcludedMemoryBlock@8 +WerUnregisterAdditionalProcess@4 +WerUnregisterCustomMetadata@4 +WerUnregisterExcludedMemoryBlock@4 + +; This is list of symbols added in Windows 10 Fall Creators Update (Redstone 3 / 1709) +BasepQueryModuleChpeSettings@40 ; FIXME: Windows 11 2024 Update (Hudson Valley / 24H2) (WoW64 version) changed ABI to "BasepQueryModuleChpeSettings@44" +EnumSystemGeoNames@12 +GetGeoInfoEx@16 +GetUserDefaultGeoName@8 +IsWow64GuestMachineSupported@8 +IsWow64Process2@12 +ReadDirectoryChangesExW@36 +SetUserGeoName@4 +WerRegisterAppLocalDump@4 +WerUnregisterAppLocalDump@0 + +; In Windows 10 April 2018 Update (Redstone 4 / 1803) was not added any new symbol + +; This is list of symbols added in Windows 10 October 2018 Update (Redstone 5 / 1809) +ClosePseudoConsole@4 +CreatePseudoConsole@20 +GetDiskSpaceInformationA@8 +GetDiskSpaceInformationW@8 +InitializeContext2@24 +LocalFileTimeToLocalSystemTime@12 +LocalSystemTimeToLocalFileTime@12 +ResizePseudoConsole@8 + +; In Windows 10 May 2019 Update (19H1 / 1903) was not added any new symbol + +; In Windows 10 November 2019 Update (19H2 /1909) was not added any new symbol + +; This is list of symbols added in Windows 10 May 2020 Update (20H1 / 2004) +; BasepFinishPackageActivationForSxS@24 +; BasepGetPackageActivationTokenForSxS@12 +IsUserCetAvailableInEnvironment@4 +SetProcessDynamicEHContinuationTargets@12 + +; In Windows 10 October 2020 Update (20H2) was not added any new symbol + +; This is list of symbols added in Windows 10 May 2021 Update (21H1) +; CheckIsMSIXPackage@8 ; removed in Windows 11 (Sun Valley / 21H2) (WoW64 version) +SetProcessDynamicEnforcedCetCompatibleRanges@12 + +; In Windows 10 November 2021 Update (21H2) was not added any new symbol + +; In Windows 10 2022 Update (22H2) was not added any new symbol + +; This is list of symbols added in Windows 11 (Sun Valley / 21H2) (WoW64 version) +ActivatePackageVirtualizationContext@8 +AreShortNamesEnabled@8 +; BasepFinishPackageActivation@28 +; BasepGetPackageActivationTokenForFilePath@12 +; BasepGetPackagedAppInfoForFile@16 +; BasepReleasePackagedAppInfo@4 +CreatePackageVirtualizationContext@8 +DeactivatePackageVirtualizationContext@4 +DuplicatePackageVirtualizationContext@8 +EnableProcessOptionalXStateFeatures@8 +GetCurrentPackageVirtualizationContext@0 +GetMachineTypeAttributes@8 +GetNumaNodeProcessorMask2@16 +GetProcessDefaultCpuSetMasks@16 +GetProcessesInVirtualizationContext@12 +GetTempPath2A@8 +GetTempPath2W@8 +GetThreadEnabledXStateFeatures@0 +GetThreadSelectedCpuSetMasks@16 +QueueUserAPC2@16 +ReleasePackageVirtualizationContext@4 +SetProcessDefaultCpuSetMasks@12 +SetThreadSelectedCpuSetMasks@12 + +; This is list of symbols added in Windows 11 2022 Update (Sun Valley 2 / 22H2) (WoW64 version) +BuildIoRingCancelRequest@20 +BuildIoRingFlushFile@24 +BuildIoRingReadFile@44 +BuildIoRingRegisterBuffers@16 +BuildIoRingRegisterFileHandles@16 +BuildIoRingWriteFile@48 +CloseIoRing@4 +CreateIoRing@24 +GetIoRingInfo@8 +IsIoRingOpSupported@8 +PopIoRingCompletion@8 +QueryIoRingCapabilities@4 +SetIoRingCompletionEvent@8 +SubmitIoRing@16 + +; In Windows 11 2023 Update (Sun Valley 3 / 23H2) (WoW64 version) was not added any new symbol + +; This is list of symbols added in Windows 11 2024 Update (Hudson Valley / 24H2) (WoW64 version) +AllocConsoleWithOptions@8 +; BackupReadEx@24 +; BackupWriteEx@24 +; BasepCheckPplSupport@8 +; BasepFreeActivationTokenInfo@4 +; BasepGetPackageActivationTokenForFilePath2@12 +; BasepGetPackageActivationTokenForSxS2@12 +BuildIoRingReadFileScatter@40 +BuildIoRingWriteFileGather@44 +FlsGetValue2@4 +GetFileInformationByName@16 +; LogUnexpectedCodepath@4 +ReleasePseudoConsole@4 +TlsGetValue2@4 + +; This is list of symbols added in Windows 11 2025 Update (Hudson Valley 2 / 25H2) (WoW64 version) +; BasepGetPackageActivationTokenForSxS3@16 +CreateDirectory2A@20 +CreateDirectory2W@20 +CreateFile3@20 +DeleteFile2A@8 +DeleteFile2W@8 +RemoveDirectory2A@8 +RemoveDirectory2W@8 diff --git a/lib/libc/mingw/lib32/ntdll.def b/lib/libc/mingw/lib32/ntdll.def index 782584b27f8fc1308c95eb36664ef6ad110dd1e3..77eabe4d89780af9cf3dcae1f388196fb2d42dfc 100644 --- a/lib/libc/mingw/lib32/ntdll.def +++ b/lib/libc/mingw/lib32/ntdll.def @@ -1,1013 +1,433 @@ -; -; Definition file of ntdll.dll -; Automatic generated by gendef -; written by Kai Tietz 2008 -; -LIBRARY "ntdll.dll" +LIBRARY "NTDLL.dll" EXPORTS -RtlDispatchAPC@12 -RtlActivateActivationContextUnsafeFast@0 -RtlDeactivateActivationContextUnsafeFast@0 -RtlInterlockedPushListSList@8 -@RtlUlongByteSwap@4 -@RtlUlonglongByteSwap@8 -@RtlUshortByteSwap@4 -ExpInterlockedPopEntrySListEnd@0 -ExpInterlockedPopEntrySListFault@0 -ExpInterlockedPopEntrySListResume@0 -RtlpInterlockedPopEntrySeqSListEnd@0 -RtlpInterlockedPopEntrySeqSListFault@0 -RtlpInterlockedPopEntrySeqSListResume@0 -A_SHAFinal@8 -A_SHAInit@4 -A_SHAUpdate@12 -AlpcAdjustCompletionListConcurrencyCount@8 -AlpcFreeCompletionListMessage@8 -AlpcGetCompletionListLastMessageInformation@12 -AlpcGetCompletionListMessageAttributes@8 -AlpcGetHeaderSize@4 -AlpcGetMessageAttribute@8 -AlpcGetMessageFromCompletionList@8 -AlpcGetOutstandingCompletionListMessageCount@4 -AlpcInitializeMessageAttribute@16 -AlpcMaxAllowedMessageLength@0 -AlpcRegisterCompletionList@20 -AlpcRegisterCompletionListWorkerThread@4 -AlpcRundownCompletionList@4 -AlpcUnregisterCompletionList@4 -AlpcUnregisterCompletionListWorkerThread@4 -ApiSetQueryApiSetPresence@8 -ApiSetQueryApiSetPresenceEx@12 -CsrAllocateCaptureBuffer@8 + +; This file is a comprehensive documentation for 32-bit x86 ntdll.dll symbols. +; It covers all 3 platforms Win32s, Win9x and WinNT and contains information +; from native ntdll.dll libraries on 32-bit Windows systems and also from +; 32-bit WoW64 ntdll.dll libraries on 64-bit Windows systems. Symbols in this +; file are ordered by increasing Windows version in which they were introduced. +; First are Win32s versions, then followed by Win9x versions and then WinNT +; because logically Win32s symbols are subset of Win9x symbols which is subset +; of WinNT symbols. Comments contains additional information with exceptions. + +; This is list of symbols available in all Windows versions (Win32s since Win32s 1.1; Win9x since Windows 95; WinNT since Windows NT 3.1) +DbgBreakPoint@0 +DbgPrint ; cdecl +DbgPrompt@12 +NtCurrentTeb@0 +NtQueryEaFile@36 +NtQueryPerformanceCounter@8 +NtSetEaFile@16 +RtlCreateHeap@24 +RtlEnlargedIntegerMultiply@8 +RtlExtendedIntegerMultiply@12 +RtlExtendedLargeIntegerDivide@16 +RtlImageDirectoryEntryToData@16 +RtlImageNtHeader@4 +RtlLargeIntegerSubtract@16 +RtlUnwind@16 +RtlValidateHeap@12 ; Win32s, Win9x and Windows NT 3.1 has ABI "RtlValidateHeap@4", Windows NT 3.5 and new has ABI "RtlValidateHeap@12" + +; This is list of symbols available only in Win32s (not available in Win9x and WinNT) +; RtlProcessHeap@0 + +; This is list of symbols available in Win32s and Win9x but not in WinNT +; RtlExFreeHeap@12 +; RtlExReAllocateHeap@16 +; RtlExSizeHeap@12 + +; This is list of symbols added in Win32s 1.15 and available in all Win9x and WinNT versions +; Note that Win32s 1.15 and all later versions merged advapi32.dll, gdi32.dll, +; kernel32.dll, ntdll.dll, user32.dll (and Win32s 1.25a and later also mpr.dll) +; libraries into one big w32scomb.dll library and made those libraries as alias +; to w32scomb.dll, which effectively means that every symbol from every library +; is available also from ntdll.dll (aliased to w32scomb.dll). Below are only +; those Win32s symbols which are available in some Win9x or WinNT version of +; ntdll.dll or logically belongs to ntdll.dll. +RtlAnsiStringToUnicodeString@12 +RtlDestroyHeap@4 + +; This is list of symbols added in Win32s 1.15 and available only in Win32s (not available in Win9x and WinNT) +; _RtlCopyMemory@12 +; _RtlMultiByteToUnicodeN@20 ; WinNT has this symbol without leading underline +; _RtlUnicodeToMultiByteN@20 ; WinNT has this symbol without leading underline + +; This is list of symbols added in Win32s 1.15 and available in all Win9x version, but not in WinNT +; RtlExAllocateHeap@12 + +; This is list of symbols added in Win32s 1.15 and available in all WinNT version, but not in Win9x +NtCreateSection@28 +NtMapViewOfSection@40 +NtOpenDirectoryObject@12 +NtUnmapViewOfSection@8 +RtlInitAnsiString@8 +RtlInitUnicodeString@8 +RtlMoveMemory@12 +RtlZeroMemory@8 + +; This is list of symbols added in Win32s 1.15a and available in all Win9x and WinNT versions +RtlUnicodeStringToAnsiString@12 + +; This is list of symbols added in Win32s 1.15a and available in all WinNT version, but not in Win9x +RtlAnsiStringToUnicodeSize@4 +RtlInitString@8 +RtlIntegerToUnicodeString@12 +RtlUnicodeStringToAnsiSize@4 +RtlUnicodeStringToInteger@12 + +; This is list of symbols added in Win32s 1.20 and available in all WinNT version, but not in Win9x +NtClose@4 +NtCreateSemaphore@20 ; Win32s has ABI "NtCreateSemaphore@36", WinNT has ABI "NtCreateSemaphore@20" +NtReleaseSemaphore@12 +NtWaitForSingleObject@12 +RtlCreateSecurityDescriptor@8 +RtlFillMemory@12 +RtlSetDaclSecurityDescriptor@16 + +;; This is end of Win32s symbols ;; + + +; This is list of symbols available in all Win9x and WinNT versions, but not available in Win32s +RtlAllocateHeap@12 ; Win9x has ABI "RtlAllocateHeap@8", WinNT has ABI "RtlAllocateHeap@12" +RtlConvertLongToLargeInteger@4 +RtlConvertUlongToLargeInteger@4 +RtlEnlargedUnsignedDivide@16 ; removed in Windows 8 +RtlEnlargedUnsignedMultiply@8 +RtlExtendedMagicDivide@20 +RtlFreeHeap@12 ; Win9x has ABI "RtlFreeHeap@8", WinNT has ABI "RtlFreeHeap@12" +RtlLargeIntegerAdd@16 +RtlLargeIntegerArithmeticShift@12 +RtlLargeIntegerDivide@20 +RtlLargeIntegerNegate@8 +RtlLargeIntegerShiftLeft@12 +RtlLargeIntegerShiftRight@12 +RtlMultiByteToUnicodeN@20 ; Win9x has ABI "RtlMultiByteToUnicodeN@16", WinNT has ABI "RtlMultiByteToUnicodeN@20" +RtlReAllocateHeap@16 ; Win9x has ABI "RtlReAllocateHeap@12", WinNT has ABI "RtlReAllocateHeap@16" +RtlSizeHeap@12 ; Win9x has ABI "RtlSizeHeap@8", WinNT has ABI "RtlSizeHeap@12" +RtlUnicodeToMultiByteN@20 ; Win9x has ABI "RtlUnicodeToMultiByteN@16", WinNT has ABI "RtlUnicodeToMultiByteN@20" + +; This is list of symbols available in all Win9x versions, in Windows NT 3.1, but not available in Win32s, Windows NT 3.5 and new +; RtlGetHandleValueHeap@8 ; Win9x ABI +; RtlGetHandleValueHeap@12 ; Windows NT 3.1 ABI +; RtlSetHandleValueHeap@12 ; Win9x ABI +; RtlSetHandleValueHeap@16 ; Windows NT 3.1 ABI + +; This is list of symbols available in all Win9x versions, but not available in Win32s and WinNT +; RtlGrowHeap@8 + +; This is list of symbols added in Windows 98, available also in all WinNT versions, but not available in Win32s +NtCreateFile@44 +RtlNtStatusToDosError@4 + +; This is list of symbols added in Windows 98, but not available in Win32s and WinNT +; IoUnregisterDeviceInterface@4 +; NtGetDevnodeFromFileHandle@8 + +; This is list of symbols added in Windows 98 and also since Windows NT 3.51, but not available in Win32s +NtSetSystemPowerState@12 + +; This is list of symbols added in Windows 98 and also since Windows 2000, but not available in Win32s +NtInitiatePowerAction@16 +NtPowerInformation@20 +NtRequestWakeupLatency@4 ; removed in Windows 7 + +;; This is end of Win9x symbols ;; + + +; This is list of symbols available since Windows NT 3.1 +CsrAllocateCaptureBuffer@8 ; Windows NT 3.1-4.0 has ABI "CsrAllocateCaptureBuffer@12", Windows 2000 and new has ABI "CsrAllocateCaptureBuffer@8" +; CsrAllocateCapturePointer@12 ; removed in Windows 2000 CsrAllocateMessagePointer@12 CsrCaptureMessageBuffer@16 -CsrCaptureMessageMultiUnicodeStringsInPlace@12 CsrCaptureMessageString@20 CsrCaptureTimeout@8 CsrClientCallServer@16 -CsrClientConnectToServer@20 +CsrClientConnectToServer@20 ; Windows NT 3.1-2000 has ABI "CsrClientConnectToServer@24", Windows XP and new has ABI "CsrClientConnectToServer@20" +; CsrClientMaxMessage@0 ; removed in Windows NT 4.0 +; CsrClientSendMessage@0 ; removed in Windows NT 4.0 +; CsrClientThreadConnect@0 ; removed in Windows NT 4.0 +; CsrDumpProfile@0 ; removed in Windows NT 3.5 CsrFreeCaptureBuffer@4 -CsrGetProcessId@0 CsrIdentifyAlertableThread@0 -CsrNewThread@0 -CsrProbeForRead@12 -CsrProbeForWrite@12 +CsrNewThread@0 ; removed in Windows Vista SP1 +CsrProbeForRead@12 ; removed in Windows Vista +CsrProbeForWrite@12 ; removed in Windows Vista CsrSetPriorityClass@8 -CsrVerifyRegion@8 -DbgBreakPoint@0 -DbgPrint -DbgPrintEx -DbgPrintReturnControlC -DbgPrompt@12 -DbgQueryDebugFilterState@8 -DbgSetDebugFilterState@12 -DbgSsHandleKmApiMsg@8 -DbgSsInitialize@16 +; CsrStartProfile@0 ; removed in Windows NT 3.5 +; CsrStopDumpProfile@0 ; removed in Windows NT 3.5 +; CsrStopProfile@0 ; removed in Windows NT 3.5 +; CsrpProcessCallbackRequest@4 ; removed in Windows NT 4.0 +DbgSsHandleKmApiMsg@8 ; removed in Windows XP +DbgSsInitialize@16 ; removed in Windows XP DbgUiConnectToDbg@0 DbgUiContinue@8 -DbgUiConvertStateChangeStructure@8 -DbgUiConvertStateChangeStructureEx@8 -DbgUiDebugActiveProcess@4 -DbgUiGetThreadDebugObject@0 -DbgUiIssueRemoteBreakin@4 -DbgUiRemoteBreakin@4 -DbgUiSetThreadDebugObject@4 -DbgUiStopDebugging@4 DbgUiWaitStateChange@8 DbgUserBreakPoint@0 -EtwCheckCoverage@4 -EtwCreateTraceInstanceId@8 -EtwDeliverDataBlock@4 -EtwEnumerateProcessRegGuids@12 -EtwEventActivityIdControl@8 -EtwEventEnabled@12 -EtwEventProviderEnabled@20 -EtwEventRegister@16 -EtwEventSetInformation@20 -EtwEventUnregister@8 -EtwEventWrite@20 -EtwEventWriteEndScenario@20 -EtwEventWriteEx@40 -EtwEventWriteFull@32 -EtwEventWriteNoRegistration@16 -EtwEventWriteStartScenario@20 -EtwEventWriteString@24 -EtwEventWriteTransfer@28 -EtwGetTraceEnableFlags@8 -EtwGetTraceEnableLevel@8 -EtwGetTraceLoggerHandle@4 -EtwLogTraceEvent@12 -EtwNotificationRegister@20 -EtwNotificationUnregister@12 -EtwProcessPrivateLoggerRequest@4 -EtwRegisterSecurityProvider@0 -EtwRegisterTraceGuidsA@32 -EtwRegisterTraceGuidsW@32 -EtwReplyNotification@4 -EtwSendNotification@20 -EtwSetMark@16 -EtwTraceEventInstance@20 -EtwTraceMessage -EtwTraceMessageVa@24 -EtwUnregisterTraceGuids@8 -EtwWriteUMSecurityEvent@16 -EtwpCreateEtwThread@8 -EtwpGetCpuSpeed@8 -;EtwpNotificationThread -EvtIntReportAuthzEventAndSourceAsync@44 -EvtIntReportEventAndSourceAsync@44 -KiFastSystemCall@0 -KiFastSystemCallRet@0 -KiIntSystemCall@0 -KiRaiseUserExceptionDispatcher@0 -KiUserApcDispatcher@20 -KiUserCallbackDispatcher@12 +KiUserApcDispatcher@20 ; really stdcall @20, gendef detects it incorrectly KiUserExceptionDispatcher@8 LdrAccessResource@16 -LdrAddDllDirectory@8 -LdrAddLoadAsDataTable@16; Check!!! gendef says @20 -LdrAddRefDll@8 -LdrAlternateResourcesEnabled@0 -LdrAppxHandleIntegrityFailure@4 -LdrCallEnclave@12 -LdrControlFlowGuardEnforced@0 -LdrCreateEnclave@36 -LdrDeleteEnclave@4 -LdrDisableThreadCalloutsForDll@4 -LdrEnumResources@20 -LdrEnumerateLoadedModules@12 -LdrFastFailInLoaderCallout@0 LdrFindEntryForAddress@8 LdrFindResourceDirectory_U@16 -LdrFindResourceEx_U@20 LdrFindResource_U@16 -LdrFlushAlternateResourceModules@0 -LdrGetDllDirectory@4 -LdrGetDllFullName@8 LdrGetDllHandle@16 -LdrGetDllHandleByMapping@8 -LdrGetDllHandleByName@12 -LdrGetDllHandleEx@20 -LdrGetDllPath@16 -LdrGetFailureData@0 -LdrGetFileNameFromLoadAsDataTable@8 LdrGetProcedureAddress@16 -LdrGetProcedureAddressEx@20 -LdrGetProcedureAddressForCaller@24 -LdrHotPatchRoutine@0 -LdrInitShimEngineDynamic@4 -LdrInitializeEnclave@20 -LdrInitializeThunk@16 -LdrIsModuleSxsRedirected@4 -LdrLoadAlternateResourceModule@16 -LdrLoadAlternateResourceModuleEx@20 +LdrInitializeThunk@16 ; really stdcall @16, gendef detects it incorrectly LdrLoadDll@16 -LdrLoadEnclaveModule@12 -LdrLockLoaderLock@12 -LdrOpenImageFileOptionsKey@12 -LdrParentInterlockedPopEntrySList@0 -LdrParentRtlInitializeNtUserPfn@0 -LdrParentRtlResetNtUserPfn@0 -LdrParentRtlRetrieveNtUserPfn@0 LdrProcessRelocationBlock@16 -LdrProcessRelocationBlockEx@20 LdrQueryImageFileExecutionOptions@24 -LdrQueryImageFileExecutionOptionsEx@28 -LdrQueryImageFileKeyOption@24 -LdrQueryModuleServiceTags@12 -LdrQueryOptionalDelayLoadedAPI@16 LdrQueryProcessModuleInformation@12 -LdrRegisterDllNotification@16 -LdrRemoveDllDirectory@4 -LdrRemoveLoadAsDataTable@16 -LdrResFindResource@36 -LdrResFindResourceDirectory@28 -LdrResGetRCConfig@20 -LdrResRelease@12 -LdrResSearchResource@32 -LdrResolveDelayLoadedAPI@24 -LdrResolveDelayLoadsFromDll@12 -LdrRscIsTypeExist@16 -LdrSetAppCompatDllRedirectionCallback@12 -LdrSetDefaultDllDirectories@4 -LdrSetDllDirectory@4 -LdrSetDllManifestProber@4 -LdrSetImplicitPathOptions@8 -LdrSetMUICacheType@4 LdrShutdownProcess@0 LdrShutdownThread@0 -LdrStandardizeSystemPath@4 -LdrSystemDllInitBlock@0 -LdrUnloadAlternateResourceModule@4 -LdrUnloadAlternateResourceModuleEx@8 LdrUnloadDll@4 -LdrUnlockLoaderLock@8 -LdrUnregisterDllNotification@4 -LdrUpdatePackageSearchPath@4 -LdrVerifyImageMatchesChecksum@16 -LdrVerifyImageMatchesChecksumEx@8 -LdrpChildNtdll@0 -LdrpResGetMappingSize@16 -LdrpResGetRCConfig@20 -LdrpResGetResourceDirectory@20 -LdrWx86FormatVirtualImage@12 -MD4Final@4 -MD4Init@4 -MD4Update@12 -MD5Final@4 -MD5Init@4 -MD5Update@12 -NlsAnsiCodePage DATA -NlsMbCodePageTag DATA -NlsMbOemCodePageTag DATA +LdrVerifyImageMatchesChecksum@16 ; Windows NT 3.1-3.51 has ABI "LdrVerifyImageMatchesChecksum@4", Windows NT 4.0 and new has ABI "LdrVerifyImageMatchesChecksum@16" NtAcceptConnectPort@24 NtAccessCheck@32 NtAccessCheckAndAuditAlarm@44 -NtAccessCheckByType@44 -NtAccessCheckByTypeAndAuditAlarm@64 -NtAccessCheckByTypeResultList@44 -NtAccessCheckByTypeResultListAndAuditAlarm@64 -NtAccessCheckByTypeResultListAndAuditAlarmByHandle@68 -NtAcquireCrossVmMutant@8 -NtAcquireProcessActivityReference@12 -NtAcquireCMFViewOwnership@12 -NtAddAtom@12 -NtAddAtomEx@16 -NtAddBootEntry@8 -NtAddDriverEntry@8 NtAdjustGroupsToken@24 NtAdjustPrivilegesToken@24 -NtAdjustTokenClaimsAndDeviceGroups@64 NtAlertResumeThread@8 NtAlertThread@4 -NtAlertThreadByThreadId@4 NtAllocateLocallyUniqueId@4 -NtAllocateReserveObject@12 -NtAllocateUserPhysicalPages@12 -NtAllocateUserPhysicalPagesEx@20 -NtAllocateUuids@16 NtAllocateVirtualMemory@24 -NtAllocateVirtualMemoryEx@28 -NtAlpcAcceptConnectPort@36 -NtAlpcCancelMessage@12 -NtAlpcConnectPort@44 -NtAlpcConnectPortEx@44 -NtAlpcCreatePort@12 -NtAlpcCreatePortSection@24 -NtAlpcCreateResourceReserve@16 -NtAlpcCreateSectionView@12 -NtAlpcCreateSecurityContext@12 -NtAlpcDeletePortSection@12 -NtAlpcDeleteResourceReserve@12 -NtAlpcDeleteSectionView@12 -NtAlpcDeleteSecurityContext@12 -NtAlpcDisconnectPort@8 -NtAlpcImpersonateClientContainerOfPort@12 -NtAlpcImpersonateClientOfPort@12 -NtAlpcOpenSenderProcess@24 -NtAlpcOpenSenderThread@24 -NtAlpcQueryInformation@20 -NtAlpcQueryInformationMessage@24 -NtAlpcRevokeSecurityContext@12 -NtAlpcSendWaitReceivePort@32 -NtAlpcSetInformation@16 -NtApphelpCacheControl@8 -NtAreMappedFilesTheSame@8 -NtAssignProcessToJobObject@8 -NtAssociateWaitCompletionPacket@32 -NtCallEnclave@16 -NtCallbackReturn@12 -NtCancelDeviceWakeupRequest@4 NtCancelIoFile@8 -NtCancelIoFileEx@12 -NtCancelSynchronousIoFile@12 -NtCancelTimer2@8 NtCancelTimer@8 -NtCancelWaitCompletionPacket@8 -NtChangeProcessState@24 -NtChangeThreadState@24 -NtClearEvent@4 -NtClose@4 NtCloseObjectAuditAlarm@12 -NtCommitComplete@8 -NtCommitEnlistment@8 -NtCommitRegistryTransaction@8 -NtCommitTransaction@8 -NtCompactKeys@8 -NtCompareObjects@8 -NtCompareSigningLevels@8 -NtCompareTokens@12 NtCompleteConnectPort@4 -NtCompressKey@4 NtConnectPort@32 NtContinue@8 -NtContinueEx@8 -NtConvertBetweenAuxiliaryCounterAndPerformanceCounter@16 -NtCreateCrossVmEvent@24 -NtCreateCrossVmMutant@24 -NtCreateDebugObject@16 NtCreateDirectoryObject@12 -NtCreateDirectoryObjectEx@20 -NtCreateEnclave@36 -NtCreateEnlistment@32 NtCreateEvent@20 NtCreateEventPair@12 -NtCreateFile@44 -NtCreateIRTimer@12 -NtCreateIoCompletion@16 -NtCreateIoRing@20 -NtCreateJobObject@12 -NtCreateJobSet@12 NtCreateKey@28 -NtCreateKeyTransacted@32 -NtCreateKeyedEvent@16 -NtCreateLowBoxToken@36 NtCreateMailslotFile@32 NtCreateMutant@16 NtCreateNamedPipeFile@56 NtCreatePagingFile@16 -NtCreatePartition@16 NtCreatePort@20 -NtCreatePrivateNamespace@16 NtCreateProcess@32 -NtCreateProcessEx@36 -NtCreateProcessStateChange@20 -NtCreateProfile@36 -NtCreateProfileEx@40 -NtCreateRegistryTransaction@16 -NtCreateResourceManager@28 -NtCreateSection@28 -NtCreateSectionEx@36 -NtCreateSemaphore@20 +NtCreateProfile@36 ; Windows NT 3.1-3.5 has ABI "NtCreateProfile@28", Windows NT 3.51 and new has ABI "NtCreateProfile@36" NtCreateSymbolicLinkObject@16 NtCreateThread@32 -NtCreateThreadEx@44 -NtCreateThreadStateChange@20 -NtCreateTimer2@20 -NtCreateTimer@16 +NtCreateTimer@16 ; Windows NT 3.1-3.51 has ABI "NtCreateTimer@12", Windows NT 4.0 and new has ABI "NtCreateTimer@16" NtCreateToken@52 -NtCreateTokenEx@68 -NtCreateTransaction@40 -NtCreateTransactionManager@24 -NtCreateUserProcess@44 -NtCreateWaitCompletionPacket@12 -NtCreateWaitablePort@20 -NtCreateWnfStateName@28 -NtCreateWorkerFactory@40 -NtCurrentTeb@0 -NtDebugActiveProcess@8 -NtDebugContinue@12 NtDelayExecution@8 -NtDeleteAtom@4 -NtDeleteBootEntry@4 -NtDeleteDriverEntry@4 -NtDeleteFile@4 NtDeleteKey@4 -NtDeleteObjectAuditAlarm@12 -NtDeletePrivateNamespace@4 NtDeleteValueKey@8 -NtDeleteWnfStateData@8 -NtDeleteWnfStateName@4 NtDeviceIoControlFile@40 -NtDirectGraphicsCall@20 -NtDisableLastKnownGood@0 NtDisplayString@4 -NtDrawText@4 NtDuplicateObject@28 NtDuplicateToken@24 -NtEnableLastKnownGood@0 -NtEnumerateBootEntries@8 -NtEnumerateDriverEntries@8 NtEnumerateKey@24 -NtEnumerateSystemEnvironmentValuesEx@12 -NtEnumerateTransactionObject@20 NtEnumerateValueKey@24 NtExtendSection@8 -NtFilterBootOption@20 -NtFilterToken@24 -NtFilterTokenEx@56 -NtFindAtom@12 NtFlushBuffersFile@8 -NtFlushBuffersFileEx@20 -NtFlushInstallUILanguage@8 NtFlushInstructionCache@12 NtFlushKey@4 -NtFlushProcessWriteBuffers@0 NtFlushVirtualMemory@16 NtFlushWriteBuffer@0 -NtFreeUserPhysicalPages@12 NtFreeVirtualMemory@16 -NtFreezeRegistry@4 -NtFreezeTransactions@8 NtFsControlFile@40 -NtGetCachedSigningLevel@24 -NtGetCompleteWnfStateSubscription@24 NtGetContextThread@8 -NtGetCurrentProcessorNumber@0 -NtGetCurrentProcessorNumberEx@4 -NtGetDevicePowerState@8 -NtGetMUIRegistryInfo@12 -NtGetNextProcess@20 -NtGetNextThread@24 -NtGetNlsSectionPtr@20 -NtGetNotificationResourceManager@28 -NtGetPlugPlayEvent@16 -NtGetTickCount@0 -NtGetWriteWatch@28 -NtImpersonateAnonymousToken@4 +; NtGetTickCount@0 ; removed in Windows XP NtImpersonateClientOfPort@8 NtImpersonateThread@12 -NtInitializeEnclave@20 -NtInitializeNlsFiles@16 ;Check!!! gendef says 12 NtInitializeRegistry@4 -NtInitiatePowerAction@16 -NtIsProcessInJob@8 -NtIsSystemResumeAutomatic@0 -NtIsUILanguageComitted@0 +; NtInitializeVDM@0 ; removed in Windows NT 3.5 NtListenPort@8 NtLoadDriver@4 -NtLoadEnclaveData@36 -NtLoadKey2@12 -NtLoadKey3@32 NtLoadKey@8 -NtLoadKeyEx@32 NtLockFile@40 -NtLockProductActivationKeys@8 -NtLockRegistryKey@4 NtLockVirtualMemory@16 -NtMakePermanentObject@4 NtMakeTemporaryObject@4 -NtManageHotPatch@16 -NtManagePartition@20 -NtMapCMFModule@24 -NtMapUserPhysicalPages@12 -NtMapUserPhysicalPagesScatter@12 -NtMapViewOfSection@40 -NtMapViewOfSectionEx@36 -NtModifyBootEntry@4 -NtModifyDriverEntry@4 NtNotifyChangeDirectoryFile@36 -NtNotifyChangeDirectoryFileEx@40 NtNotifyChangeKey@40 -NtNotifyChangeMultipleKeys@48 -NtNotifyChangeSession@32 -NtOpenDirectoryObject@12 -NtOpenEnlistment@20 NtOpenEvent@12 NtOpenEventPair@12 NtOpenFile@24 -NtOpenIoCompletion@12 -NtOpenJobObject@12 NtOpenKey@12 -NtOpenKeyEx@16 -NtOpenKeyTransacted@16 -NtOpenKeyTransactedEx@20 -NtOpenKeyedEvent@12 NtOpenMutant@12 NtOpenObjectAuditAlarm@48 -NtOpenPartition@12 -NtOpenPrivateNamespace@16 NtOpenProcess@16 NtOpenProcessToken@12 -NtOpenProcessTokenEx@16 -NtOpenRegistryTransaction@12 -NtOpenResourceManager@20 NtOpenSection@12 NtOpenSemaphore@12 -NtOpenSession@12 NtOpenSymbolicLinkObject@12 NtOpenThread@16 NtOpenThreadToken@16 -NtOpenThreadTokenEx@20 NtOpenTimer@12 -NtOpenTransaction@20 -NtOpenTransactionManager@24 -NtPlugPlayControl@12 -NtPowerInformation@20 -NtPrePrepareComplete@8 -NtPrePrepareEnlistment@8 -NtPrepareComplete@8 -NtPrepareEnlistment@8 NtPrivilegeCheck@12 NtPrivilegeObjectAuditAlarm@24 NtPrivilegedServiceAuditAlarm@20 -NtPropagationComplete@16 -NtPropagationFailed@12 NtProtectVirtualMemory@20 -NtPssCaptureVaSpaceBulk@20 NtPulseEvent@8 -NtQueryAttributesFile@8 -NtQueryAuxiliaryCounterFrequency@4 -NtQueryBootEntryOrder@8 -NtQueryBootOptions@8 -NtQueryDebugFilterState@8 NtQueryDefaultLocale@8 -NtQueryDefaultUILanguage@4 NtQueryDirectoryFile@44 -NtQueryDirectoryFileEx@40 NtQueryDirectoryObject@28 -NtQueryDriverEntryOrder@8 -NtQueryEaFile@36 NtQueryEvent@20 -NtQueryFullAttributesFile@8 -NtQueryInformationAtom@20 -NtQueryInformationByName@20 -NtQueryInformationEnlistment@20 NtQueryInformationFile@20 -NtQueryInformationJobObject@20 NtQueryInformationPort@20 NtQueryInformationProcess@20 -NtQueryInformationResourceManager@20 NtQueryInformationThread@20 NtQueryInformationToken@20 -NtQueryInformationTransaction@20 -NtQueryInformationTransactionManager@20 -NtQueryInformationWorkerFactory@20 -NtQueryInstallUILanguage@4 -NtQueryIntervalProfile@8 -NtQueryIoCompletion@20 -NtQueryIoRingCapabilities@8 +NtQueryIntervalProfile@8 ; Windows NT 3.1-3.5 has ABI "NtQueryIntervalProfile@4", Windows NT 3.51 and new has ABI "NtQueryIntervalProfile@8" NtQueryKey@20 -NtQueryLicenseValue@20 -NtQueryMultipleValueKey@24 NtQueryMutant@20 NtQueryObject@20 -NtQueryOpenSubKeys@8 -NtQueryOpenSubKeysEx@16 -NtQueryPerformanceCounter@8 -NtQueryPortInformationProcess@0 -NtQueryQuotaInformationFile@36 NtQuerySection@20 -NtQuerySecurityAttributesToken@24 NtQuerySecurityObject@20 -NtQuerySecurityPolicy@24 NtQuerySemaphore@20 NtQuerySymbolicLinkObject@12 NtQuerySystemEnvironmentValue@16 -NtQuerySystemEnvironmentValueEx@20 NtQuerySystemInformation@16 -NtQuerySystemInformationEx@24 NtQuerySystemTime@4 NtQueryTimer@20 -NtQueryTimerResolution@12 NtQueryValueKey@24 NtQueryVirtualMemory@24 NtQueryVolumeInformationFile@20 -NtQueryWnfStateData@24 -NtQueryWnfStateNameInformation@20 -NtQueueApcThread@20 -NtQueueApcThreadEx2@28 -NtQueueApcThreadEx@24 NtRaiseException@12 NtRaiseHardError@24 NtReadFile@36 -NtReadFileScatter@36 -NtReadOnlyEnlistment@8 NtReadRequestData@24 NtReadVirtualMemory@20 -NtReadVirtualMemoryEx@24 -NtRecoverEnlistment@8 -NtRecoverResourceManager@4 -NtRecoverTransactionManager@4 -NtRegisterProtocolAddressInformation@20 NtRegisterThreadTerminatePort@4 -NtReleaseCMFViewOwnership@0 -NtReleaseKeyedEvent@16 NtReleaseMutant@8 -NtReleaseSemaphore@12 -NtReleaseWorkerFactoryWorker@4 -NtRemoveIoCompletion@20 -NtRemoveIoCompletionEx@24 -NtRemoveProcessDebug@8 -NtRenameKey@8 -NtRenameTransactionManager@8 +; NtReleaseProcessMutant@0 ; removed in Windows NT 4.0 +; NtRenameValueKey@16 ; removed in Windows NT 3.5 NtReplaceKey@12 -NtReplacePartitionUnit@12 NtReplyPort@8 NtReplyWaitReceivePort@16 -NtReplyWaitReceivePortEx@20 NtReplyWaitReplyPort@8 -NtRequestDeviceWakeup@4 NtRequestPort@8 NtRequestWaitReplyPort@12 -NtRequestWakeupLatency@4 NtResetEvent@8 -NtResetWriteWatch@12 NtRestoreKey@12 -NtResumeProcess@4 NtResumeThread@8 -NtRevertContainerImpersonation@0 -NtRollbackComplete@8 -NtRollbackEnlistment@8 -NtRollbackRegistryTransaction@8 -NtRollbackTransaction@8 -NtRollforwardTransactionManager@8 NtSaveKey@8 -NtSaveKeyEx@12 -NtSaveMergedKeys@12 -NtSecureConnectPort@36 -NtSerializeBoot@0 -NtSetBootEntryOrder@8 -NtSetBootOptions@8 -NtSetCachedSigningLevel2@24 -NtSetCachedSigningLevel@20 NtSetContextThread@8 -NtSetDebugFilterState@12 NtSetDefaultHardErrorPort@4 NtSetDefaultLocale@8 -NtSetDefaultUILanguage@4 -NtSetDriverEntryOrder@8 -NtSetEaFile@16 NtSetEvent@8 -NtSetEventBoostPriority@4 NtSetHighEventPair@4 NtSetHighWaitLowEventPair@4 -NtSetIRTimer@8 -NtSetInformationDebugObject@20 -NtSetInformationEnlistment@16 +; NtSetHighWaitLowThread@0 ; removed in Windows 2000 NtSetInformationFile@20 -NtSetInformationIoRing@16 -NtSetInformationJobObject@16 NtSetInformationKey@16 -NtSetInformationObject@16 NtSetInformationProcess@16 -NtSetInformationResourceManager@16 -NtSetInformationSymbolicLink@16 NtSetInformationThread@16 NtSetInformationToken@16 -NtSetInformationTransaction@16 -NtSetInformationTransactionManager@16 -NtSetInformationVirtualMemory@24 -NtSetInformationWorkerFactory@16 -NtSetIntervalProfile@8 -NtSetIoCompletion@20 -NtSetIoCompletionEx@24 +NtSetIntervalProfile@8 ; Windows NT 3.1-3.5 has ABI "NtSetIntervalProfile@4", Windows NT 3.51 and new has ABI "NtSetIntervalProfile@8" NtSetLdtEntries@24 NtSetLowEventPair@4 NtSetLowWaitHighEventPair@4 -NtSetQuotaInformationFile@16 +; NtSetLowWaitHighThread@0 ; removed in Windows 2000 NtSetSecurityObject@12 NtSetSystemEnvironmentValue@8 -NtSetSystemEnvironmentValueEx@20 -NtSetSystemInformation@12 -NtSetSystemPowerState@12 NtSetSystemTime@8 -NtSetThreadExecutionState@8 -NtSetTimer2@16 -NtSetTimer@28 -NtSetTimerEx@16 -NtSetTimerResolution@12 -NtSetUuidSeed@4 +NtSetTimer@28 ; Windows NT 3.1-3.5 has ABI "NtSetTimer@20", Windows NT 3.51 has ABI "NtSetTimer@24", Windows NT 4.0 and new has ABI NtSetTimer@28 NtSetValueKey@24 NtSetVolumeInformationFile@20 -NtSetWnfProcessNotificationEvent@4 NtShutdownSystem@4 -NtShutdownWorkerFactory@8 -NtSignalAndWaitForSingleObject@16 -NtSinglePhaseReject@8 NtStartProfile@4 NtStopProfile@4 -NtSubmitIoRing@16 -NtSubscribeWnfStateChange@16 -NtSuspendProcess@4 NtSuspendThread@8 NtSystemDebugControl@24 -NtTerminateEnclave@8 -NtTerminateJobObject@8 NtTerminateProcess@8 NtTerminateThread@8 NtTestAlert@0 -NtThawRegistry@0 -NtThawTransactions@0 -NtTraceControl@24 -NtTraceEvent@16 -NtTranslateFilePath@16 -NtUmsThreadYield@4 NtUnloadDriver@4 -NtUnloadKey2@8 NtUnloadKey@4 -NtUnloadKeyEx@8 NtUnlockFile@20 NtUnlockVirtualMemory@16 -NtUnmapViewOfSection@8 -NtUnmapViewOfSectionEx@12 -NtUnsubscribeWnfStateChange@4 -NtUpdateWnfStateData@28 -NtVdmControl@8 -NtWaitForAlertByThreadId@8 -NtWaitForDebugEvent@16 -NtWaitForKeyedEvent@16 -NtWaitForMultipleObjects32@20 +NtVdmControl@8 ; Windows NT 3.1 has ABI "NtVdmControl@16", Windows NT 3.5 and new has ABI "NtVdmControl@8" +; NtVdmStartExecution@0 ; removed in Windows NT 3.5 NtWaitForMultipleObjects@20 -NtWaitForSingleObject@12 -NtWaitForWorkViaWorkerFactory@8 +; NtWaitForProcessMutant@0 ; removed in Windows NT 4.0 NtWaitHighEventPair@4 NtWaitLowEventPair@4 -NtWorkerFactoryWorkerReady@4 -NtWow64CallFunction64@28 -NtWow64CsrAllocateCaptureBuffer@8 -NtWow64CsrAllocateMessagePointer@12 -NtWow64CsrCaptureMessageBuffer@16 -NtWow64CsrCaptureMessageString@20 -NtWow64CsrClientCallServer@16 -NtWow64CsrClientConnectToServer@20 -NtWow64CsrFreeCaptureBuffer@4 -NtWow64CsrGetProcessId@0 -NtWow64CsrIdentifyAlertableThread@0 -NtWow64CsrVerifyRegion@8 -NtWow64DebuggerCall@20 -NtWow64GetCurrentProcessorNumberEx@4 -NtWow64GetNativeSystemInformation@16 -NtWow64InterlockedPopEntrySList@4 -NtWow64QueryInformationProcess64@20 -NtWow64QueryVirtualMemory64@32 -NtWow64ReadVirtualMemory64@28 -NtWow64WriteVirtualMemory64@28 NtWriteFile@36 -NtWriteFileGather@36 NtWriteRequestData@24 NtWriteVirtualMemory@20 -NtYieldExecution@0 -; Not sure, but we assume here standard DefWindowProc arguments -NtdllDefWindowProc_A@16 -NtdllDefWindowProc_W@16 -; Not sure, but we assume here standard DefDlgProc arguments -NtdllDialogWndProc_A@16 -NtdllDialogWndProc_W@16 PfxFindPrefix@8 PfxInitialize@4 PfxInsertPrefix@12 PfxRemovePrefix@8 -PssNtCaptureSnapshot@16 -PssNtDuplicateSnapshot@20 -PssNtFreeRemoteSnapshot@8 -PssNtFreeSnapshot@4 -PssNtFreeWalkMarker@4 -PssNtQuerySnapshot@16 -PssNtValidateDescriptor@8 -PssNtWalkSnapshot@20 RtlAbortRXact@4 RtlAbsoluteToSelfRelativeSD@12 RtlAcquirePebLock@0 -RtlAcquirePrivilege@16 -RtlAcquireReleaseSRWLockExclusive@4 RtlAcquireResourceExclusive@8 RtlAcquireResourceShared@8 -RtlAcquireSRWLockExclusive@4 -RtlAcquireSRWLockShared@4 -RtlActivateActivationContext@12 -RtlActivateActivationContextEx@16 RtlAddAccessAllowedAce@16 -RtlAddAccessAllowedAceEx@20 -RtlAddAccessAllowedObjectAce@28 RtlAddAccessDeniedAce@16 -RtlAddAccessDeniedAceEx@20 -RtlAddAccessDeniedObjectAce@28 -RtlAddAccessFilterAce@32 RtlAddAce@20 RtlAddActionToRXact@24 -RtlAddAtomToAtomTable@12 RtlAddAttributeActionToRXact@32 RtlAddAuditAccessAce@24 -RtlAddAuditAccessAceEx@28 -RtlAddAuditAccessObjectAce@36 -RtlAddCompoundAce@24 -RtlAddIntegrityLabelToBoundaryDescriptor@8 -RtlAddMandatoryAce@24 -RtlAddProcessTrustLabelAce@24 -RtlAddRefActivationContext@4 -RtlAddRange@36 -RtlAddRefMemoryStream@4 -RtlAddResourceAttributeAce@28 -RtlAddSIDToBoundaryDescriptor@8 -RtlAddScopedPolicyIDAce@20 -RtlAddVectoredContinueHandler@8 -RtlAddVectoredExceptionHandler@8 -RtlAddressInSectionTable@12 RtlAdjustPrivilege@16 -RtlAllocateActivationContextStack@4 RtlAllocateAndInitializeSid@44 -RtlAllocateAndInitializeSidEx@16 -RtlAllocateHandle@8 -RtlAllocateHeap@12 -RtlAllocateMemoryBlockLookaside@12 -RtlAllocateMemoryZone@12 -RtlAllocateWnfSerializationGroup@0 +; RtlAnalyzeProfile@0 ; removed in Windows NT 3.5 RtlAnsiCharToUnicodeChar@4 -RtlAnsiStringToUnicodeSize@4 -RtlAnsiStringToUnicodeString@12 RtlAppendAsciizToString@8 -RtlAppendPathElement@12 RtlAppendStringToString@8 RtlAppendUnicodeStringToString@8 RtlAppendUnicodeToString@8 -RtlApplicationVerifierStop@40 RtlApplyRXact@4 RtlApplyRXactNoFlush@4 -RtlAppxIsFileOwnedByTrustedInstaller@8 RtlAreAllAccessesGranted@8 RtlAreAnyAccessesGranted@8 RtlAreBitsClear@12 RtlAreBitsSet@12 -RtlAreLongPathsEnabled@0 RtlAssert@16 -RtlAvlInsertNodeEx@16 -RtlAvlRemoveNode@8 -RtlBarrier@8 -RtlBarrierForDelete@8 -RtlCallbackLpcClient@12 -RtlCancelTimer@8 -RtlCanonicalizeDomainName@12 -RtlCapabilityCheck@12 -RtlCapabilityCheckForSingleSessionSku@12 -RtlCaptureContext@4 RtlCaptureStackBackTrace@16 -RtlCaptureStackContext@12 RtlCharToInteger@12 -RtlCheckBootStatusIntegrity@8 -RtlCheckForOrphanedCriticalSections@4 -RtlCheckPortableOperatingSystem@4 RtlCheckRegistryKey@8 -RtlCheckSandboxedToken@8 -RtlCheckSystemBootStatusIntegrity@4 -RtlCheckTokenCapability@12 -RtlCheckTokenMembership@12 -RtlCheckTokenMembershipEx@16 -RtlCleanUpTEBLangLists@0 RtlClearAllBits@4 -RtlClearBit@8 RtlClearBits@12 -RtlClearThreadWorkOnBehalfTicket@0 -RtlCloneMemoryStream@8 -RtlCloneUserProcess@20 -RtlCmDecodeMemIoResource@8 -RtlCmEncodeMemIoResource@24 -RtlCommitDebugInfo@8 -RtlCommitMemoryStream@8 RtlCompactHeap@8 -RtlCompareAltitudes@8 -RtlCompareExchangePointerMapping@16 -RtlCompareExchangePropertyStore@16 RtlCompareMemory@12 RtlCompareMemoryUlong@12 RtlCompareString@12 RtlCompareUnicodeString@12 -RtlCompareUnicodeStrings@20 -RtlCompressBuffer@32 -RtlComputeCrc32@12 -RtlComputeImportTableHash@12 -RtlComputePrivatizedDllName_U@12 -RtlConnectToSm@16 RtlConsoleMultiByteToUnicodeN@24 -RtlConstructCrossVmEventPath@12 -RtlConstructCrossVmMutexPath@12 -RtlContractHashTable@4 -RtlConvertDeviceFamilyInfoToString@16 RtlConvertExclusiveToShared@4 -RtlConvertLCIDToString@20 -RtlConvertLongToLargeInteger@4 -RtlConvertSRWLockExclusiveToShared@4 RtlConvertSharedToExclusive@4 RtlConvertSidToUnicodeString@12 -RtlConvertToAutoInheritSecurityObject@24 -RtlConvertUiListToApiList@12 -RtlConvertUlongToLargeInteger@4 -RtlCopyBitMap@12 -RtlCopyContext@12 -RtlCopyExtendedContext@12 +RtlConvertUiListToApiList@12 ; removed in Windows 8.1 RtlCopyLuid@8 RtlCopyLuidAndAttributesArray@12 -RtlCopyMappedMemory@12 -RtlCopyMemoryStreamTo@24 -RtlCopyOutOfProcessMemoryStreamTo@24 -RtlCopyRangeList@8 RtlCopySecurityDescriptor@8 RtlCopySid@12 RtlCopySidAndAttributesArray@28 RtlCopyString@8 RtlCopyUnicodeString@8 -RtlCrc32@12 -RtlCrc64@16 RtlCreateAcl@12 -RtlCreateActivationContext@24 RtlCreateAndSetSD@20 -RtlCreateAtomTable@8 -RtlCreateBootStatusDataFile@4 -RtlCreateBoundaryDescriptor@8 RtlCreateEnvironment@8 -RtlCreateEnvironmentEx@12 -RtlCreateHashTable@12 -RtlCreateHashTableEx@16 -RtlCreateHeap@24 -RtlCreateLpcServer@24 -RtlCreateMemoryBlockLookaside@20 -RtlCreateMemoryZone@12 RtlCreateProcessParameters@40 -RtlCreateProcessParametersEx@44 -RtlCreateProcessParametersWithTemplate@12 -RtlCreateProcessReflection@24 -RtlCreateQueryDebugBuffer@8 RtlCreateRegistryKey@8 -RtlCreateSecurityDescriptor@8 -RtlCreateServiceSid@12 -RtlCreateSystemVolumeInformationFolder@4 -RtlCreateTagHeap@16 -RtlCreateTimer@28 -RtlCreateTimerQueue@4 RtlCreateUnicodeString@8 RtlCreateUnicodeStringFromAsciiz@8 RtlCreateUserProcess@40 -RtlCreateUserProcessEx@20 RtlCreateUserSecurityObject@28 -RtlCreateUserStack@24 RtlCreateUserThread@40 -RtlCreateVirtualAccountSid@16 -RtlCultureNameToLCID@8 RtlCustomCPToUnicodeN@24 -RtlCutoverTimeToSystemTime@16 -RtlDeCommitDebugInfo@12 RtlDeNormalizeProcessParams@4 -RtlDeactivateActivationContext@8 -RtlDebugPrintTimes@0 -RtlDecodePointer@4 -RtlDecodeRemotePointer@12 -RtlDecodeSystemPointer@4 -RtlDecompressBuffer@24 -RtlDecompressBufferEx@28 -RtlDecompressFragment@32 -RtlDefaultNpAcl@4 -RtlDelayExecution@8 RtlDelete@4 RtlDeleteAce@8 -RtlDeleteAtomFromAtomTable@8 -RtlDeleteBarrier@4 -RtlDeleteBoundaryDescriptor@4 RtlDeleteCriticalSection@4 RtlDeleteElementGenericTable@8 -RtlDeleteElementGenericTableAvl@8 -RtlDeleteElementGenericTableAvlEx@8 -RtlDeleteHashTable@4 -RtlDeleteNoSplay@8 -RtlDeleteOwnersRanges@8 -RtlDeleteRange@24 RtlDeleteRegistryValue@12 RtlDeleteResource@4 RtlDeleteSecurityObject@4 -RtlDeleteTimer@12 -RtlDeleteTimerQueue@4 -RtlDeleteTimerQueueEx@8 -RtlDeregisterSecureMemoryCacheCallback@4 -RtlDeregisterWait@4 -RtlDeregisterWaitEx@8 -RtlDeriveCapabilitySidsFromName@12 -RtlDestroyAtomTable@4 RtlDestroyEnvironment@4 -RtlDestroyHandleTable@4 -RtlDestroyHeap@4 -RtlDestroyMemoryBlockLookaside@4 -RtlDestroyMemoryZone@4 RtlDestroyProcessParameters@4 -RtlDestroyQueryDebugBuffer@4 -RtlDetectHeapLeaks@0 RtlDetermineDosPathNameType_U@4 -RtlDisableThreadProfiling@4 -RtlDllShutdownInProgress@0 -RtlDnsHostNameToComputerName@12 RtlDoesFileExists_U@4 -RtlDoesNameContainWildCards@4 -RtlDosApplyFileIsolationRedirection_Ustr@36 -RtlDosLongPathNameToNtPathName_U_WithStatus@16 -RtlDosLongPathNameToRelativeNtPathName_U_WithStatus@16 RtlDosPathNameToNtPathName_U@16 -RtlDosPathNameToNtPathName_U_WithStatus@16 -RtlDosPathNameToRelativeNtPathName_U@16 -RtlDosPathNameToRelativeNtPathName_U_WithStatus@16 RtlDosSearchPath_U@24 -RtlDosSearchPath_Ustr@36 -RtlDowncaseUnicodeChar@4 -RtlDowncaseUnicodeString@12 RtlDumpResource@4 -RtlDuplicateUnicodeString@12 -RtlEmptyAtomTable@8 -RtlEnableEarlyCriticalSectionEventCreation@0 -RtlEnableThreadProfiling@20 -RtlEncodePointer@4 -RtlEncodeRemotePointer@12 -RtlEncodeSystemPointer@4 -RtlEndEnumerationHashTable@8 -RtlEndStrongEnumerationHashTable@8 -RtlEndWeakEnumerationHashTable@8 -RtlEnlargedIntegerMultiply@8 -RtlEnlargedUnsignedDivide@16 -RtlEnlargedUnsignedMultiply@8 RtlEnterCriticalSection@4 -RtlEnumProcessHeaps@8 -RtlEnumerateEntryHashTable@8 RtlEnumerateGenericTable@8 -RtlEnumerateGenericTableAvl@8 -RtlEnumerateGenericTableLikeADirectory@28 RtlEnumerateGenericTableWithoutSplaying@8 -RtlEnumerateGenericTableWithoutSplayingAvl@8 RtlEqualComputerName@8 RtlEqualDomainName@8 RtlEqualLuid@8 @@ -1015,600 +435,141 @@ RtlEqualPrefixSid@8 RtlEqualSid@8 RtlEqualString@12 RtlEqualUnicodeString@12 -RtlEqualWnfChangeStamps@8 RtlEraseUnicodeString@4 -RtlEthernetAddressToStringA@8 -RtlEthernetAddressToStringW@8 -RtlEthernetStringToAddressA@12 -RtlEthernetStringToAddressW@12 -RtlExitUserProcess@4 -RtlExitUserThread@4 ; Not sure, but we assume @4 -RtlExpandEnvironmentStrings@24 +; RtlExpandEnvironmentStrings@16 ; removed in Windows NT 3.5 RtlExpandEnvironmentStrings_U@16 -RtlExpandHashTable@4 -RtlExtendCorrelationVector@4 -RtlExtendMemoryBlockLookaside@8 -RtlExtendMemoryZone@8 -RtlExtendedIntegerMultiply@12 -RtlExtendedLargeIntegerDivide@16 -RtlExtendedMagicDivide@20 -RtlExtractBitMap@16 -RtlExtendHeap@16 -RtlFillMemory@12 RtlFillMemoryUlong@12 -RtlFillMemoryUlonglong@16 -RtlFinalReleaseOutOfProcessMemoryStream@4 -RtlFindAceByType@12 -RtlFindActivationContextSectionGuid@20 -RtlFindActivationContextSectionString@20 -RtlFindCharInUnicodeString@16 RtlFindClearBits@12 RtlFindClearBitsAndSet@12 -RtlFindClearRuns@16 -RtlFindClosestEncodableLength@12 -RtlFindExportedRoutineByName@8 -RtlFindLastBackwardRunClear@12 -RtlFindLeastSignificantBit@8 RtlFindLongestRunClear@8 -RtlFindLongestRunSet@8 +RtlFindLongestRunSet@8 ; removed in Windows 2000 RtlFindMessage@20 -RtlFindMostSignificantBit@8 -RtlFindNextForwardRunClear@12 -RtlFindRange@48 RtlFindSetBits@12 RtlFindSetBitsAndClear@12 -RtlFindUnicodeSubstring@12 -RtlFirstEntrySList@4 RtlFirstFreeAce@8 -RtlFlsAlloc@8 -RtlFlsFree@4 -RtlFlsGetValue@8 -RtlFlsSetValue@8 -RtlFlushHeaps@0 -RtlFlushSecureMemoryCache@8 -RtlFormatCurrentUserKeyPath@4 RtlFormatMessage@36 -RtlFormatMessageEx@40 -RtlFreeActivationContextStack@4 RtlFreeAnsiString@4 -RtlFreeHandle@8 -RtlFreeHeap@12 -RtlFreeMemoryBlockLookaside@8 RtlFreeOemString@4 RtlFreeSid@4 -RtlFreeThreadActivationContextStack@0 -RtlFreeUTF8String@4 RtlFreeUnicodeString@4 -RtlFreeUserStack@4 -RtlFreeUserThreadStack@8 -RtlGUIDFromString@8 -RtlGenerate8dot3Name@16 +RtlGenerate8dot3Name@16 ; Windows NT 3.1 has ABI "RtlGenerate8dot3Name@12", Windows NT 3.5 and new has ABI "RtlGenerate8dot3Name@16" RtlGetAce@12 -RtlGetActiveActivationContext@4 -RtlGetActiveConsoleId@0 -RtlGetAppContainerNamedObjectPath@16 -RtlGetAppContainerParent@8 -RtlGetAppContainerSidType@8 RtlGetCallersAddress@8 -RtlGetCompressionWorkSpaceSize@12 -RtlGetConsoleSessionForegroundProcessId@0 RtlGetControlSecurityDescriptor@12 -RtlGetCriticalSectionRecursionCount@4 RtlGetCurrentDirectory_U@8 -RtlGetCurrentPeb@0 -RtlGetCurrentProcessorNumber@0 -RtlGetCurrentProcessorNumberEx@4 -RtlGetCurrentServiceSessionId@0 -RtlGetCurrentTransaction@0 RtlGetDaclSecurityDescriptor@16 -RtlGetDeviceFamilyInfoEnum@12 RtlGetElementGenericTable@8 -RtlGetElementGenericTableAvl@8 -RtlGetEnabledExtendedFeatures@8 -RtlGetExePath@8 -RtlGetExtendedContextLength2@16 -RtlGetExtendedContextLength@8 -RtlGetExtendedFeaturesMask@4 -RtlGetFileMUIPath@28 -RtlGetFirstRange@12 -RtlGetFrame@0 RtlGetFullPathName_U@16 -RtlGetFullPathName_UEx@20 -RtlGetFullPathName_UstrEx@32 RtlGetGroupSecurityDescriptor@12 -RtlGetImageFileMachines@8 -RtlGetIntegerAtom@8 -RtlGetInterruptTimePrecise@4 -RtlGetLastNtStatus@0 -RtlGetLastWin32Error@0 -RtlGetLengthWithoutLastFullDosOrNtPathElement@12 -RtlGetLengthWithoutTrailingPathSeperators@12 -RtlGetLocaleFileMappingAddress@12 -RtlGetLongestNtPathLength@0 -RtlGetMultiTimePrecise@12 -RtlGetNativeSystemInformation@16 -RtlGetNextRange@12 -RtlGetNextEntryHashTable@8 +; RtlGetHeapUserValue@4 ; removed in Windows NT 3.5 RtlGetNtGlobalFlags@0 RtlGetNtProductType@4 -RtlGetNtSystemRoot@0 -RtlGetNtVersionNumbers@12 RtlGetOwnerSecurityDescriptor@12 -RtlGetParentLocaleName@16 -RtlGetPersistedStateLocation@28 -RtlGetProcessHeaps@8 -RtlGetProcessPreferredUILanguages@16 -RtlGetProductInfo@20 -RtlGetReturnAddressHijackTarget@0 RtlGetSaclSecurityDescriptor@16 -RtlGetSearchPath@4 -RtlGetSecurityDescriptorRMControl@8 -RtlGetSessionProperties@8 -RtlGetSetBootStatusData@24 -RtlGetSuiteMask@0 -RtlGetSystemBootStatus@16 -RtlGetSystemBootStatusEx@12 -RtlGetSystemGlobalData@12 -RtlGetSystemPreferredUILanguages@20 -RtlGetSystemTimeAndBias@12 -RtlGetSystemTimePrecise@0 -RtlGetThreadErrorMode@0 -RtlGetThreadLangIdByIndex@16 -RtlGetThreadPreferredUILanguages@16 -RtlGetThreadWorkOnBehalfTicket@8 -RtlGetTokenNamedObjectPath@12 -RtlGetUILanguageInfo@20 -RtlGetUnloadEventTrace@0 -RtlGetUnloadEventTraceEx@12 -RtlGetUserInfoHeap@20 -RtlGetUserPreferredUILanguages@20 -RtlGetVersion@4 -RtlGuardCheckLongJumpTarget@12 -RtlHashUnicodeString@16 -RtlHeapTrkInitialize@4 RtlIdentifierAuthoritySid@4 -RtlIdnToAscii@20 -RtlIdnToNameprepUnicode@20 -RtlIdnToUnicode@20 -RtlImageDirectoryEntryToData@16 -RtlImageNtHeader@4 -RtlImageNtHeaderEx@20 -RtlImageRvaToSection@12 -RtlImageRvaToVa@16 -RtlImpersonateLpcClient@8 RtlImpersonateSelf@4 -RtlImpersonateSelfEx@12 -RtlIncrementCorrelationVector@4 -RtlInitAnsiString@8 -RtlInitAnsiStringEx@8 -RtlInitBarrier@12 RtlInitCodePageTable@8 -RtlInitEnumerationHashTable@8 -RtlInitMemoryStream@4 RtlInitNlsTables@16 -RtlInitOutOfProcessMemoryStream@4 -RtlInitString@8 -RtlInitStringEx@8 -RtlInitStrongEnumerationHashTable@8 -RtlInitUTF8String@8 -RtlInitUTF8StringEx@8 -RtlInitUnicodeString@8 -RtlInitUnicodeStringEx@8 -RtlInitWeakEnumerationHashTable@8 -RtlInitializeAtomPackage@4 RtlInitializeBitMap@12 -RtlInitializeConditionVariable@4 RtlInitializeContext@20 -RtlInitializeCorrelationVector@12 RtlInitializeCriticalSection@4 -RtlInitializeCriticalSectionAndSpinCount@8 -RtlInitializeCriticalSectionEx@12 -RtlInitializeExceptionChain@4 -RtlInitializeExtendedContext2@20 -RtlInitializeExtendedContext@12 RtlInitializeGenericTable@20 -RtlInitializeGenericTableAvl@20 -RtlInitializeHandleTable@12 -RtlInitializeNtUserPfn@24 +; RtlInitializeProfile@4 ; removed in Windows NT 3.5 RtlInitializeRXact@12 RtlInitializeResource@4 -RtlInitializeSListHead@4 -RtlInitializeSRWLock@4 RtlInitializeSid@12 -RtlInitializeSidEx@0 +; RtlInitializeStackTraceDataBase@12 ; removed in Windows NT 3.51, added back in Windows XP SP2 and removed again in Windows Server 2003 RtlInsertElementGenericTable@16 -RtlInsertElementGenericTableAvl@16 -RtlInsertElementGenericTableFull@24 -RtlInsertElementGenericTableFullAvl@24 -RtlInsertEntryHashTable@16 -RtlInt64ToUnicodeString@16 RtlIntegerToChar@16 -RtlIntegerToUnicodeString@12 -RtlInterlockedClearBitRun@12 -RtlInterlockedCompareExchange64@20 -RtlInterlockedFlushSList@4 -RtlInterlockedPopEntrySList@4 -RtlInterlockedPushEntrySList@8 -RtlInterlockedPushListSListEx@16 -RtlInvertRangeList@8 -RtlInterlockedSetBitRun@12 -RtlIoDecodeMemIoResource@16 -RtlIoEncodeMemIoResource@40 -RtlIpv4AddressToStringA@8 -RtlIpv4AddressToStringExA@16 -RtlIpv4AddressToStringExW@16 -RtlIpv4AddressToStringW@8 -RtlIpv4StringToAddressA@16 -RtlIpv4StringToAddressExA@16 -RtlIpv4StringToAddressExW@16 -RtlIpv4StringToAddressW@16 -RtlIpv6AddressToStringA@8 -RtlIpv6AddressToStringExA@20 -RtlIpv6AddressToStringExW@20 -RtlIpv6AddressToStringW@8 -RtlIpv6StringToAddressA@12 -RtlIpv6StringToAddressExA@16 -RtlIpv6StringToAddressExW@16 -RtlIpv6StringToAddressW@12 -RtlIsActivationContextActive@4 -RtlIsApiSetImplemented@4 -RtlIsCapabilitySid@4 -RtlIsCloudFilesPlaceholder@8 -RtlIsCriticalSectionLocked@4 -RtlIsCriticalSectionLockedByThread@4 -RtlIsCurrentProcess@4 -RtlIsCurrentThread@4 -RtlIsCurrentThreadAttachExempt@0 RtlIsDosDeviceName_U@4 -RtlIsElevatedRid@4 -RtlIsEnclaveFeaturePresent@4 RtlIsGenericTableEmpty@4 -RtlIsGenericTableEmptyAvl@4 -RtlIsMultiSessionSku@0 -RtlIsMultiUsersInSessionSku@0 -RtlIsNameInExpression@16 -RtlIsNameInUnUpcasedExpression@16 -RtlIsNameLegalDOS8Dot3@12 -RtlIsNonEmptyDirectoryReparsePointAllowed@4 -RtlIsNormalizedString@16 -RtlIsPackageSid@4 -RtlIsParentOfChildAppContainer@8 -RtlIsPartialPlaceholder@8 -RtlIsPartialPlaceholderFileHandle@8 -RtlIsPartialPlaceholderFileInfo@12 -RtlIsProcessorFeaturePresent@4 -RtlIsRangeAvailable@40 -RtlIsStateSeparationEnabled@0 -RtlIsTextUnicode@12 -RtlIsThreadWithinLoaderCallout@0 -RtlIsUntrustedObject@12 -RtlIsValidHandle@8 -RtlIsValidIndexHandle@12 -RtlIsValidLocaleName@8 -RtlIsValidProcessTrustLabelSid@4 -RtlIsZeroMemory@8 -RtlKnownExceptionFilter@4 -RtlLCIDToCultureName@8 -RtlLargeIntegerAdd@16 -RtlLargeIntegerArithmeticShift@12 -RtlLargeIntegerDivide@20 -RtlLargeIntegerNegate@8 -RtlLargeIntegerShiftLeft@12 -RtlLargeIntegerShiftRight@12 -RtlLargeIntegerSubtract@16 RtlLargeIntegerToChar@16 -RtlLcidToLocaleName@16 RtlLeaveCriticalSection@4 RtlLengthRequiredSid@4 RtlLengthSecurityDescriptor@4 RtlLengthSid@4 -RtlLengthSidAsUnicodeString@8 -RtlLoadString@32 RtlLocalTimeToSystemTime@8 -RtlLocaleNameToLcid@12 -RtlLocateExtendedFeature2@16 -RtlLocateExtendedFeature@12 -RtlLocateLegacyContext@8 -RtlLockBootStatusData@4 -RtlLockCurrentThread@0 RtlLockHeap@4 -RtlLockMemoryBlockLookaside@4 -RtlLockMemoryStreamRegion@24 -RtlLockMemoryZone@4 -RtlLockModuleSection@4 -RtlLogStackBackTrace@0 -RtlLookupAtomInAtomTable@12 +; RtlLogStackBackTrace@0 ; removed in Windows NT 3.51 RtlLookupElementGenericTable@8 -RtlLookupElementGenericTableAvl@8 -RtlLookupElementGenericTableFull@16 -RtlLookupElementGenericTableFullAvl@16 -RtlLookupEntryHashTable@12 -RtlLookupFirstMatchingElementGenericTableAvl@12 +; RtlLookupSymbolByAddress@24 ; removed in Windows NT 3.51 +; RtlLookupSymbolByName@16 ; removed in Windows NT 3.51 RtlMakeSelfRelativeSD@12 RtlMapGenericMask@8 -RtlMapSecurityErrorToNtStatus@4 -RtlMergeRangeLists@16 -RtlMoveMemory@12 -RtlMultiAppendUnicodeStringBuffer@12 -RtlMultiByteToUnicodeN@20 RtlMultiByteToUnicodeSize@12 -RtlMultipleAllocateHeap@20 -RtlMultipleFreeHeap@16 RtlNewInstanceSecurityObject@40 RtlNewSecurityGrantedAccess@24 RtlNewSecurityObject@24 -RtlNewSecurityObjectEx@32 -RtlNewSecurityObjectWithMultipleInheritance@36 RtlNormalizeProcessParams@4 -RtlNormalizeSecurityDescriptor@20 -RtlNormalizeString@20 -RtlNotifyFeatureUsage@4 -RtlNtPathNameToDosPathName@16 -RtlNtStatusToDosError@4 -RtlNtStatusToDosErrorNoTeb@4 RtlNumberGenericTableElements@4 -RtlNumberGenericTableElementsAvl@4 RtlNumberOfClearBits@4 -RtlNumberOfClearBitsInRange@12 RtlNumberOfSetBits@4 -RtlNumberOfSetBitsInRange@12 -RtlNumberOfSetBitsUlongPtr@4 RtlOemStringToUnicodeSize@4 RtlOemStringToUnicodeString@12 RtlOemToUnicodeN@20 RtlOpenCurrentUser@8 -RtlOsDeploymentState@4 -RtlOwnerAcesPresent@4 RtlPcToFileHeader@8 -RtlPinAtomInAtomTable@8 -RtlPopFrame@4 RtlPrefixString@12 RtlPrefixUnicodeString@12 -RtlProcessFlsData@4 -RtlProtectHeap@8 -RtlPublishWnfStateData@24 -RtlPushFrame@4 -RtlQueryActivationContextApplicationSettings@28 -RtlQueryAllFeatureConfigurations@16 -RtlQueryAtomInAtomTable@24 -RtlQueryCriticalSectionOwner@4 -RtlQueryDepthSList@4 -RtlQueryDynamicTimeZoneInformation@4 -RtlQueryElevationFlags@4 -RtlQueryEnvironmentVariable@24 +; RtlQueryEnvironmentVariable@0 ; removed in Windows NT 3.5 RtlQueryEnvironmentVariable_U@12 -RtlQueryFeatureConfiguration@16 -RtlQueryFeatureConfigurationChangeStamp@0 -RtlQueryFeatureUsageNotificationSubscriptions@8 -RtlQueryHeapInformation@20 -RtlQueryImageMitigationPolicy@20 RtlQueryInformationAcl@16 -RtlQueryInformationActivationContext@28 -RtlQueryInformationActiveActivationContext@16 -RtlQueryInterfaceMemoryStream@12 -RtlQueryModuleInformation@12 -RtlQueryPackageClaims@32 -RtlQueryPackageIdentity@24 -RtlQueryPackageIdentityEx@28 -RtlQueryPerformanceCounter@4 -RtlQueryPerformanceFrequency@4 -RtlQueryPointerMapping@8 -RtlQueryProcessBackTraceInformation@4 -RtlQueryProcessDebugInformation@12 -RtlQueryProcessHeapInformation@4 -RtlQueryProcessLockInformation@4 -RtlQueryProcessPlaceholderCompatibilityMode@0 -RtlQueryPropertyStore@8 -RtlQueryProtectedPolicy@8 -RtlQueryRegistryValueWithFallback@28 +; RtlQueryModuleInformation@24 ; removed in Windows NT 3.51 +RtlQueryProcessBackTraceInformation@4 ; Windows NT 3.1-3.5 has ABI "RtlQueryProcessBackTraceInformation@12", Windows NT 3.51 and new has ABI "RtlQueryProcessBackTraceInformation@4" +RtlQueryProcessHeapInformation@4 ; Windows NT 3.1-3.5 has ABI "RtlQueryProcessHeapInformation@12", Windows NT 3.51 and new has ABI "RtlQueryProcessHeapInformation@4" +RtlQueryProcessLockInformation@4 ; Windows NT 3.1-3.5 has ABI "RtlQueryProcessLockInformation@12", Windows NT 3.51 and new has ABI "RtlQueryProcessLockInformation@4" RtlQueryRegistryValues@20 -RtlQueryRegistryValuesEx@20 -RtlQueryResourcePolicy@16 RtlQuerySecurityObject@20 -RtlQueryTagHeap@20 -RtlQueryThreadPlaceholderCompatibilityMode@0 -RtlQueryThreadProfiling@8 RtlQueryTimeZoneInformation@4 -RtlQueryTokenHostIdAsUlong64@8 -RtlQueryUnbiasedInterruptTime@4 -RtlQueryValidationRunlevel@4 -RtlQueryWnfMetaNotification@20 -RtlQueryWnfStateData@24 -RtlQueryWnfStateDataWithExplicitScope@28 -RtlQueueApcWow64Thread@20 -RtlQueueWorkItem@12 -RtlRaiseCustomSystemEventTrigger@4 RtlRaiseException@4 RtlRaiseStatus@4 RtlRandom@4 -RtlRandomEx@4 -RtlRbInsertNodeEx@16 -RtlRbRemoveNode@8 -RtlReAllocateHeap@16 -RtlReadMemoryStream@16 -RtlReadOutOfProcessMemoryStream@16 -RtlReadThreadProfilingData@12 RtlRealPredecessor@4 RtlRealSuccessor@4 -RtlRegisterFeatureConfigurationChangeNotification@16 -RtlRegisterForWnfMetaNotification@24 -RtlRegisterSecureMemoryCacheCallback@4 -RtlRegisterThreadWithCsrss@0 -RtlRegisterWait@24 -RtlReleaseActivationContext@4 -RtlReleaseMemoryStream@4 -RtlReleasePath@4 RtlReleasePebLock@0 -RtlReleasePrivilege@4 -RtlReleaseRelativeName@4 RtlReleaseResource@4 -RtlReleaseSRWLockExclusive@4 -RtlReleaseSRWLockShared@4 RtlRemoteCall@28 -RtlRemoveEntryHashTable@12 -RtlRemovePointerMapping@8 -RtlRemovePrivileges@12 -RtlRemovePropertyStore@8 -RtlRemoveVectoredContinueHandler@4 -RtlRemoveVectoredExceptionHandler@4 -RtlReplaceSidInSd@16 -RtlReplaceSystemDirectoryInPath@16 -RtlReportException@12 -RtlReportExceptionEx@20 -RtlReportSilentProcessExit@8 -RtlReportSqmEscalation@24 -RtlResetMemoryBlockLookaside@4 -RtlResetMemoryZone@4 -RtlResetNtUserPfn@0 RtlResetRtlTranslations@4 -RtlRestoreBootStatusDefaults@4 -RtlRestoreContext@8 -RtlRestoreLastWin32Error@4 -RtlRestoreSystemBootStatusDefaults@0 -RtlRestoreThreadPreferredUILanguages@4 -RtlRetrieveNtUserPfn@12 -RtlRevertMemoryStream@4 RtlRunDecodeUnicodeString@8 RtlRunEncodeUnicodeString@8 -RtlRunOnceBeginInitialize@12 -RtlRunOnceComplete@12 -RtlRunOnceExecuteOnce@16 -RtlRunOnceInitialize@4 RtlSecondsSince1970ToTime@8 RtlSecondsSince1980ToTime@8 -RtlSeekMemoryStream@20 -RtlSelfRelativeToAbsoluteSD2@8 RtlSelfRelativeToAbsoluteSD@44 -RtlSendMsgToSm@8 RtlSetAllBits@4 -RtlSetAttributesSecurityDescriptor@12 -RtlSetBit@8 RtlSetBits@12 -RtlSetControlSecurityDescriptor@12 -RtlSetCriticalSectionSpinCount@8 RtlSetCurrentDirectory_U@4 RtlSetCurrentEnvironment@8 -RtlSetCurrentTransaction@4 -RtlSetDaclSecurityDescriptor@16 -RtlSetDynamicTimeZoneInformation@4 -RtlSetEnvironmentStrings@8 -RtlSetEnvironmentVar@20 RtlSetEnvironmentVariable@12 -RtlSetExtendedFeaturesMask@12 -RtlSetFeatureConfigurations@16 RtlSetGroupSecurityDescriptor@12 -RtlSetHeapInformation@16 -RtlSetImageMitigationPolicy@20 +; RtlSetHeapUserValue@8 ; removed in Windows NT 3.5 RtlSetInformationAcl@16 -RtlSetIoCompletionCallback@12 -RtlSetLastWin32Error@4 -RtlSetLastWin32ErrorAndNtStatusFromNtStatus@4 -RtlSetMemoryStreamSize@12 RtlSetOwnerSecurityDescriptor@12 -RtlSetPortableOperatingSystem@4 -RtlSetProcessDebugInformation@12 -RtlSetProcessIsCritical@0 -RtlSetProcessPlaceholderCompatibilityMode@4 -RtlSetProcessPreferredUILanguages@12 -RtlSetProtectedPolicy@12 -RtlSetProxiedProcessId@4 RtlSetSaclSecurityDescriptor@16 -RtlSetSearchPathMode@4 -RtlSetSecurityDescriptorRMControl@8 RtlSetSecurityObject@20 -RtlSetSecurityObjectEx@24 -RtlSetSystemBootStatus@16 -RtlSetSystemBootStatusEx@12 -RtlSetThreadErrorMode@8 -RtlSetThreadIsCritical@0 -RtlSetThreadPlaceholderCompatibilityMode@4 -RtlSetThreadPoolStartFunc@8 -RtlSetThreadPreferredUILanguages2@16 -RtlSetThreadPreferredUILanguages@12 -RtlSetThreadSubProcessTag@4 -RtlSetThreadWorkOnBehalfTicket@4 RtlSetTimeZoneInformation@4 -RtlSetTimer@28 -RtlSetUnhandledExceptionFilter@4 -RtlSetUserCallbackExceptionFilter@4 -RtlSetUserFlagsHeap@20 -RtlSetUserValueHeap@16 -RtlShutdownLpcServer@4 -RtlSidDominates@12 -RtlSidDominatesForTrust@12 -RtlSidEqualLevel@12 -RtlSidHashInitialize@12 -RtlSidHashLookup@8 -RtlSidIsHigherLevel@12 -RtlSizeHeap@12 -RtlSleepConditionVariableCS@12 -RtlSleepConditionVariableSRW@16 +; RtlSnapShotHeap@16 ; removed in Windows NT 3.51 RtlSplay@4 +; RtlStartProfile@0 ; removed in Windows NT 3.5 RtlStartRXact@4 -RtlStatMemoryStream@12 -RtlStringFromGUID@8 -RtlStringFromGUIDEx@12 -RtlStronglyEnumerateEntryHashTable@8 +; RtlStopProfile@0 ; removed in Windows NT 3.5 RtlSubAuthorityCountSid@4 RtlSubAuthoritySid@8 -RtlSubscribeForFeatureUsageNotification@8 -RtlSubscribeWnfStateChangeNotification@36 RtlSubtreePredecessor@4 RtlSubtreeSuccessor@4 -RtlSwitchedVVI@16 RtlSystemTimeToLocalTime@8 -RtlTestAndPublishWnfStateData@28 -RtlTestBit@8 -RtlTestProtectedAccess@8 RtlTimeFieldsToTime@8 RtlTimeToElapsedTimeFields@8 RtlTimeToSecondsSince1970@8 RtlTimeToSecondsSince1980@8 RtlTimeToTimeFields@8 -RtlTraceDatabaseAdd@16 -RtlTraceDatabaseCreate@20 -RtlTraceDatabaseDestroy@4 -RtlTraceDatabaseEnumerate@12 -RtlTraceDatabaseFind@16 -RtlTraceDatabaseLock@4 -RtlTraceDatabaseUnlock@4 -RtlTraceDatabaseValidate@4 -RtlTryAcquirePebLock@0 -RtlTryAcquireSRWLockExclusive@4 -RtlTryAcquireSRWLockShared@4 -RtlTryConvertSRWLockSharedToExclusiveOrRelease@4 -RtlTryEnterCriticalSection@4 -RtlUTF8StringToUnicodeString@12 -RtlUTF8ToUnicodeN@20 -RtlUdiv128@28 -RtlUnhandledExceptionFilter2@8 -RtlUnhandledExceptionFilter@4 -RtlUnicodeStringToAnsiSize@4 -RtlUnicodeStringToAnsiString@12 RtlUnicodeStringToCountedOemString@12 -RtlUnicodeStringToInteger@12 RtlUnicodeStringToOemSize@4 RtlUnicodeStringToOemString@12 -RtlUnicodeStringToUTF8String@12 RtlUnicodeToCustomCPN@24 -RtlUnicodeToMultiByteN@20 RtlUnicodeToMultiByteSize@12 RtlUnicodeToOemN@20 -RtlUnicodeToUTF8N@20 RtlUniform@4 -RtlUnlockBootStatusData@4 -RtlUnlockCurrentThread@0 RtlUnlockHeap@4 -RtlUnlockMemoryBlockLookaside@4 -RtlUnlockMemoryStreamRegion@24 -RtlUnlockMemoryZone@4 -RtlUnlockModuleSection@4 -RtlUnregisterFeatureConfigurationChangeNotification@4 -RtlUnsubscribeFromFeatureUsageNotifications@8 -RtlUnsubscribeWnfNotificationWaitForCompletion@4 -RtlUnsubscribeWnfNotificationWithCompletionCallback@12 -RtlUnsubscribeWnfStateChangeNotification@4 -RtlUnwind@16 RtlUpcaseUnicodeChar@4 RtlUpcaseUnicodeString@12 RtlUpcaseUnicodeStringToAnsiString@12 @@ -1617,712 +578,2338 @@ RtlUpcaseUnicodeStringToOemString@12 RtlUpcaseUnicodeToCustomCPN@24 RtlUpcaseUnicodeToMultiByteN@20 RtlUpcaseUnicodeToOemN@20 -RtlUpdateClonedCriticalSection@4 -RtlUpdateClonedSRWLock@8 -RtlUpdateTimer@16 RtlUpperChar@4 RtlUpperString@8 -RtlUsageHeap@12 -; Not sure. -RtlUserThreadStart RtlValidAcl@4 -RtlValidProcessProtection@4 -RtlValidRelativeSecurityDescriptor@12 RtlValidSecurityDescriptor@4 RtlValidSid@4 -RtlValidateCorrelationVector@4 -RtlValidateHeap@12 -RtlValidateProcessHeaps@0 -RtlValidateUnicodeString@8 -RtlVerifyVersionInfo@16 -RtlWaitForWnfMetaNotification@24 -RtlWaitOnAddress@16 -RtlWakeAddressAll@4 -RtlWakeAddressAllNoFence@4 -RtlWakeAddressSingle@4 -RtlWakeAddressSingleNoFence@4 -RtlWakeAllConditionVariable@4 -RtlWakeConditionVariable@4 -RtlWalkFrameChain@12 -RtlWalkHeap@8 -RtlWeaklyEnumerateEntryHashTable@8 -RtlWerpReportException@16 -RtlWnfCompareChangeStamp@8 -RtlWnfDllUnloadCallback@4 -RtlWow64CallFunction64@28 -RtlWow64EnableFsRedirection@4 -RtlWow64EnableFsRedirectionEx@8 -RtlWow64GetCurrentMachine@0 -RtlWow64GetEquivalentMachineCHPE@4 -RtlWow64GetProcessMachines@12 -RtlWow64GetSharedInfoProcess@12 -RtlWow64IsWowGuestMachineSupported@8 -RtlWow64LogMessageInEventLogger@12 -RtlWriteMemoryStream@16 RtlWriteRegistryValue@24 -RtlZeroHeap@8 -RtlZeroMemory@8 -RtlZombifyActivationContext@4 -RtlpApplyLengthFunction@16 -RtlpCheckDynamicTimeZoneInformation@8 -RtlpCleanupRegistryKeys@0 -RtlpConvertAbsoluteToRelativeSecurityAttribute@12 -RtlpConvertCultureNamesToLCIDs@8 -RtlpConvertLCIDsToCultureNames@8 -RtlpConvertRelativeToAbsoluteSecurityAttribute@16 -RtlpCreateProcessRegistryInfo@4 -RtlpEnsureBufferSize@12 -RtlpFreezeTimeBias@0 -RtlpGetDeviceFamilyInfoEnum@12 -RtlpGetLCIDFromLangInfoNode@12 -RtlpGetNameFromLangInfoNode@12 -RtlpGetSystemDefaultUILanguage@4 ; Check!!! gendef says @8 -RtlpGetUserOrMachineUILanguage4NLS@12 -RtlpInitializeLangRegistryInfo@4 -RtlpIsQualifiedLanguage@12 -RtlpLoadMachineUIByPolicy@12 -RtlpLoadUserUIByPolicy@12 -RtlpMergeSecurityAttributeInformation@16 -RtlpMuiFreeLangRegistryInfo@4 -RtlpMuiRegCreateRegistryInfo@0 -RtlpMuiRegFreeRegistryInfo@8 -RtlpMuiRegLoadRegistryInfo@8 -RtlpNotOwnerCriticalSection@0 ; Check!!! gebdef says @4 +; RtlpInitializeRtl@12 ; removed in Windows NT 4.0 RtlpNtCreateKey@24 RtlpNtEnumerateSubKey@16 RtlpNtMakeTemporaryKey@4 RtlpNtOpenKey@16 RtlpNtQueryValueKey@20 RtlpNtSetValueKey@16 -RtlpQueryDefaultUILanguage@8 -; Not sure. -RtlpQueryProcessDebugInformationRemote -RtlpRefreshCachedUILanguage@8 -RtlpSetInstallLanguage@8 -RtlpSetPreferredUILanguages@12 -RtlpSetUserPreferredUILanguages@12 -RtlpTimeFieldsToTime@12 -RtlpTimeToTimeFields@12 RtlpUnWaitCriticalSection@4 -RtlpVerifyAndCommitUILanguageSettings@4 RtlpWaitForCriticalSection@4 -RtlxAnsiStringToUnicodeSize@4 -RtlxOemStringToUnicodeSize@4 -RtlxUnicodeStringToAnsiSize@4 -RtlxUnicodeStringToOemSize@4 -SbExecuteProcedure@20 -SbSelectProcedure@16 -ShipAssert@8 -ShipAssertGetBufferInfo@8 -ShipAssertMsgA@12 -ShipAssertMsgW@12 -TpAllocAlpcCompletion@20 -TpAllocAlpcCompletionEx@20 -TpAllocCleanupGroup@4 -TpAllocIoCompletion@20 -TpAllocJobNotification@20 -TpAllocPool@8 -TpAllocTimer@16 -TpAllocWait@16 -TpAllocWork@16 -TpAlpcRegisterCompletionList@4 -TpAlpcUnregisterCompletionList@4 -TpCallbackDetectedUnrecoverableError@4 -TpCallbackIndependent@4 -TpCallbackLeaveCriticalSectionOnCompletion@8 -TpCallbackMayRunLong@4 -TpCallbackReleaseMutexOnCompletion@8 -TpCallbackReleaseSemaphoreOnCompletion@12 -TpCallbackSendAlpcMessageOnCompletion@16 -TpCallbackSendPendingAlpcMessage@4 -TpCallbackSetEventOnCompletion@8 -TpCallbackUnloadDllOnCompletion@8 -TpCancelAsyncIoOperation@4 -TpCaptureCaller@4 -TpCheckTerminateWorker@4 -TpDbgDumpHeapUsage@12 -TpDbgGetFreeInfo@8 -TpDbgSetLogRoutine@4 -TpDisablePoolCallbackChecks@4 -TpDisassociateCallback@4 -TpIsTimerSet@4 -TpPoolFreeUnusedNodes@4 -TpPostWork@4 -TpQueryPoolStackInformation@8 -TpReleaseAlpcCompletion@4 -TpReleaseCleanupGroup@4 -TpReleaseCleanupGroupMembers@12 -TpReleaseIoCompletion@4 -TpReleaseJobNotification@4 -TpReleasePool@4 -TpReleaseTimer@4 -TpReleaseWait@4 -TpReleaseWork@4 -TpSetDefaultPoolMaxThreads@4 -TpSetDefaultPoolStackInformation@4 -TpSetPoolMaxThreads@8 -TpSetPoolMaxThreadsSoftLimit@8 -TpSetPoolMinThreads@8 -TpSetPoolStackInformation@8 -TpSetPoolThreadBasePriority@8 -TpSetPoolThreadCpuSets@12 -TpSetPoolWorkerThreadIdleTimeout@12 -TpSetTimer@16 -TpSetTimerEx@16 -TpSetWait@12 -TpSetWaitEx@16 -TpSimpleTryPost@12 -TpStartAsyncIoOperation@4 -TpTimerOutstandingCallbackCount@4 -TpTrimPools@0 -TpWaitForAlpcCompletion@4 -TpWaitForIoCompletion@8 -TpWaitForJobNotification@4 -TpWaitForTimer@8 -TpWaitForWait@8 -TpWaitForWork@8 -VerSetConditionMask@16 -WerCheckEventEscalation@8 -WerReportExceptionWorker@4 -WerReportSQMEvent@12 -WerReportWatsonEvent@16 -WerReportSQMEvent@16 -WinSqmAddToAverageDWORD@12 -WinSqmAddToStream@16 -WinSqmAddToStreamEx@20 -WinSqmCheckEscalationAddToStreamEx@20 -WinSqmCheckEscalationSetDWORD64@20 -WinSqmCheckEscalationSetDWORD@16 -WinSqmCheckEscalationSetString@16 -WinSqmCommonDatapointDelete@4 -WinSqmCommonDatapointSetDWORD64@16 -WinSqmCommonDatapointSetDWORD@12 -WinSqmCommonDatapointSetStreamEx@20 -WinSqmCommonDatapointSetString@12 -WinSqmEndSession@4 -WinSqmEventEnabled@8 -WinSqmEventWrite@12 -WinSqmGetEscalationRuleStatus@8 -WinSqmGetInstrumentationProperty@16 -WinSqmIncrementDWORD@12 -WinSqmIsOptedIn@0 -WinSqmIsOptedInEx@4 -WinSqmIsSessionDisabled@4 -WinSqmSetDWORD64@16 -WinSqmSetDWORD@12 -WinSqmSetEscalationInfo@16 -WinSqmSetIfMaxDWORD@12 -WinSqmSetIfMinDWORD@12 -WinSqmSetString@12 -WinSqmStartSession@12 -WinSqmStartSessionForPartner@16 -WinSqmStartSqmOptinListener@0 ZwAcceptConnectPort@24 ZwAccessCheck@32 ZwAccessCheckAndAuditAlarm@44 -ZwAccessCheckByType@44 -ZwAccessCheckByTypeAndAuditAlarm@64 -ZwAccessCheckByTypeResultList@44 -ZwAccessCheckByTypeResultListAndAuditAlarm@64 -ZwAccessCheckByTypeResultListAndAuditAlarmByHandle@68 -ZwAcquireCrossVmMutant@8 -ZwAcquireCMFViewOwnership@12 -ZwAcquireProcessActivityReference@12 -ZwAddAtom@12 -ZwAddAtomEx@16 -ZwAddBootEntry@8 -ZwAddDriverEntry@8 ZwAdjustGroupsToken@24 ZwAdjustPrivilegesToken@24 -ZwAdjustTokenClaimsAndDeviceGroups@64 ZwAlertResumeThread@8 ZwAlertThread@4 -ZwAlertThreadByThreadId@4 ZwAllocateLocallyUniqueId@4 -ZwAllocateReserveObject@12 -ZwAllocateUserPhysicalPages@12 -ZwAllocateUserPhysicalPagesEx@20 -ZwAllocateUuids@16 ZwAllocateVirtualMemory@24 -ZwAllocateVirtualMemoryEx@28 -ZwAlpcAcceptConnectPort@36 -ZwAlpcCancelMessage@12 -ZwAlpcConnectPort@44 -ZwAlpcConnectPortEx@44 -ZwAlpcCreatePort@12 -ZwAlpcCreatePortSection@24 -ZwAlpcCreateResourceReserve@16 -ZwAlpcCreateSectionView@12 -ZwAlpcCreateSecurityContext@12 -ZwAlpcDeletePortSection@12 -ZwAlpcDeleteResourceReserve@12 -ZwAlpcDeleteSectionView@12 -ZwAlpcDeleteSecurityContext@12 -ZwAlpcDisconnectPort@8 -ZwAlpcImpersonateClientContainerOfPort@12 -ZwAlpcImpersonateClientOfPort@12 -ZwAlpcOpenSenderProcess@24 -ZwAlpcOpenSenderThread@24 -ZwAlpcQueryInformation@20 -ZwAlpcQueryInformationMessage@24 -ZwAlpcRevokeSecurityContext@12 -ZwAlpcSendWaitReceivePort@32 -ZwAlpcSetInformation@16 -ZwApphelpCacheControl@8 -ZwAreMappedFilesTheSame@8 -ZwAssignProcessToJobObject@8 -ZwAssociateWaitCompletionPacket@32 -ZwCallEnclave@16 -ZwCallbackReturn@12 -ZwCancelDeviceWakeupRequest@4 ZwCancelIoFile@8 -ZwCancelIoFileEx@12 -ZwCancelSynchronousIoFile@12 -ZwCancelTimer2@8 ZwCancelTimer@8 -ZwCancelWaitCompletionPacket@8 -ZwChangeProcessState@24 -ZwChangeThreadState@24 -ZwClearEvent@4 ZwClose@4 ZwCloseObjectAuditAlarm@12 -ZwCommitComplete@8 -ZwCommitEnlistment@8 -ZwCommitRegistryTransaction@8 -ZwCommitTransaction@8 -ZwCompactKeys@8 -ZwCompareObjects@8 -ZwCompareSigningLevels@8 -ZwCompareTokens@12 ZwCompleteConnectPort@4 -ZwCompressKey@4 ZwConnectPort@32 ZwContinue@8 -ZwContinueEx@8 -ZwConvertBetweenAuxiliaryCounterAndPerformanceCounter@16 -ZwCreateCrossVmEvent@24 -ZwCreateCrossVmMutant@24 -ZwCreateDebugObject@16 ZwCreateDirectoryObject@12 -ZwCreateDirectoryObjectEx@20 -ZwCreateEnclave@36 -ZwCreateEnlistment@32 ZwCreateEvent@20 ZwCreateEventPair@12 ZwCreateFile@44 -ZwCreateIRTimer@12 -ZwCreateIoCompletion@16 -ZwCreateIoRing@20 -ZwCreateJobObject@12 -ZwCreateJobSet@12 ZwCreateKey@28 -ZwCreateKeyTransacted@32 -ZwCreateKeyedEvent@16 -ZwCreateLowBoxToken@36 ZwCreateMailslotFile@32 ZwCreateMutant@16 ZwCreateNamedPipeFile@56 ZwCreatePagingFile@16 -ZwCreatePartition@16 ZwCreatePort@20 -ZwCreatePrivateNamespace@16 ZwCreateProcess@32 -ZwCreateProcessEx@36 -ZwCreateProcessStateChange@20 -ZwCreateProfile@36 -ZwCreateProfileEx@40 -ZwCreateRegistryTransaction@16 -ZwCreateResourceManager@28 +ZwCreateProfile@36 ; Windows NT 3.1-3.5 has ABI "ZwCreateProfile@28", Windows NT 3.51 and new has ABI "ZwCreateProfile@36" ZwCreateSection@28 -ZwCreateSectionEx@36 ZwCreateSemaphore@20 ZwCreateSymbolicLinkObject@16 ZwCreateThread@32 -ZwCreateThreadEx@44 -ZwCreateThreadStateChange@20 -ZwCreateTimer2@20 -ZwCreateTimer@16 +ZwCreateTimer@16 ; Windows NT 3.1-3.51 has ABI "ZwCreateTimer@12", Windows NT 4.0 and new has ABI "ZwCreateTimer@16" ZwCreateToken@52 -ZwCreateTokenEx@68 -ZwCreateTransaction@40 -ZwCreateTransactionManager@24 -ZwCreateUserProcess@44 -ZwCreateWaitCompletionPacket@12 -ZwCreateWaitablePort@20 -ZwCreateWnfStateName@28 -ZwCreateWorkerFactory@40 -ZwDebugActiveProcess@8 -ZwDebugContinue@12 ZwDelayExecution@8 -ZwDeleteAtom@4 -ZwDeleteBootEntry@4 -ZwDeleteDriverEntry@4 -ZwDeleteFile@4 ZwDeleteKey@4 -ZwDeleteObjectAuditAlarm@12 -ZwDeletePrivateNamespace@4 ZwDeleteValueKey@8 -ZwDeleteWnfStateData@8 -ZwDeleteWnfStateName@4 ZwDeviceIoControlFile@40 -ZwDirectGraphicsCall@20 -ZwDisableLastKnownGood@0 ZwDisplayString@4 -ZwDrawText@4 ZwDuplicateObject@28 ZwDuplicateToken@24 -ZwEnableLastKnownGood@0 -ZwEnumerateBootEntries@8 -ZwEnumerateDriverEntries@8 ZwEnumerateKey@24 -ZwEnumerateSystemEnvironmentValuesEx@12 -ZwEnumerateTransactionObject@20 ZwEnumerateValueKey@24 ZwExtendSection@8 -ZwFilterBootOption@20 -ZwFilterToken@24 -ZwFilterTokenEx@56 -ZwFindAtom@12 ZwFlushBuffersFile@8 -ZwFlushBuffersFileEx@20 -ZwFlushInstallUILanguage@8 ZwFlushInstructionCache@12 ZwFlushKey@4 -ZwFlushProcessWriteBuffers@0 ZwFlushVirtualMemory@16 ZwFlushWriteBuffer@0 -ZwFreeUserPhysicalPages@12 ZwFreeVirtualMemory@16 -ZwFreezeRegistry@4 -ZwFreezeTransactions@8 ZwFsControlFile@40 -ZwGetCachedSigningLevel@24 -ZwGetCompleteWnfStateSubscription@24 ZwGetContextThread@8 -ZwGetCurrentProcessorNumber@0 -ZwGetCurrentProcessorNumberEx@4 -ZwGetDevicePowerState@8 -ZwGetMUIRegistryInfo@12 -ZwGetNextProcess@20 -ZwGetNextThread@24 -ZwGetNlsSectionPtr@20 -ZwGetNotificationResourceManager@28 -ZwGetPlugPlayEvent@16 -ZwGetTickCount@0 -ZwGetWriteWatch@28 -ZwImpersonateAnonymousToken@4 +ZwGetTickCount@0 ; removed in Windows XP ZwImpersonateClientOfPort@8 ZwImpersonateThread@12 -ZwInitializeEnclave@20 -ZwInitializeNlsFiles@16 ZwInitializeRegistry@4 -ZwInitiatePowerAction@16 -ZwIsProcessInJob@8 -ZwIsSystemResumeAutomatic@0 -ZwIsUILanguageComitted@0 +; ZwInitializeVDM@0 ; removed in Windows NT 3.5 ZwListenPort@8 ZwLoadDriver@4 -ZwLoadEnclaveData@36 -ZwLoadKey2@12 -ZwLoadKey3@32 ZwLoadKey@8 -ZwLoadKeyEx@32 ZwLockFile@40 -ZwLockProductActivationKeys@8 -ZwLockRegistryKey@4 ZwLockVirtualMemory@16 -ZwMakePermanentObject@4 ZwMakeTemporaryObject@4 -ZwManageHotPatch@16 -ZwManagePartition@20 -ZwMapCMFModule@24 -ZwMapUserPhysicalPages@12 -ZwMapUserPhysicalPagesScatter@12 ZwMapViewOfSection@40 -ZwMapViewOfSectionEx@36 -ZwModifyBootEntry@4 -ZwModifyDriverEntry@4 ZwNotifyChangeDirectoryFile@36 -ZwNotifyChangeDirectoryFileEx@40 ZwNotifyChangeKey@40 -ZwNotifyChangeMultipleKeys@48 -ZwNotifyChangeSession@32 ZwOpenDirectoryObject@12 -ZwOpenEnlistment@20 ZwOpenEvent@12 ZwOpenEventPair@12 ZwOpenFile@24 -ZwOpenIoCompletion@12 -ZwOpenJobObject@12 ZwOpenKey@12 -ZwOpenKeyEx@16 -ZwOpenKeyTransacted@16 -ZwOpenKeyTransactedEx@20 -ZwOpenKeyedEvent@12 ZwOpenMutant@12 ZwOpenObjectAuditAlarm@48 -ZwOpenPartition@12 -ZwOpenPrivateNamespace@16 ZwOpenProcess@16 ZwOpenProcessToken@12 -ZwOpenProcessTokenEx@16 -ZwOpenRegistryTransaction@12 -ZwOpenResourceManager@20 ZwOpenSection@12 ZwOpenSemaphore@12 -ZwOpenSession@12 ZwOpenSymbolicLinkObject@12 ZwOpenThread@16 ZwOpenThreadToken@16 -ZwOpenThreadTokenEx@20 ZwOpenTimer@12 -ZwOpenTransaction@20 -ZwOpenTransactionManager@24 -ZwPlugPlayControl@12 -ZwPowerInformation@20 -ZwPrePrepareComplete@8 -ZwPrePrepareEnlistment@8 -ZwPrepareComplete@8 -ZwPrepareEnlistment@8 ZwPrivilegeCheck@12 ZwPrivilegeObjectAuditAlarm@24 ZwPrivilegedServiceAuditAlarm@20 -ZwPropagationComplete@16 -ZwPropagationFailed@12 ZwProtectVirtualMemory@20 -ZwPssCaptureVaSpaceBulk@20 ZwPulseEvent@8 -ZwQueryAttributesFile@8 -ZwQueryAuxiliaryCounterFrequency@4 -ZwQueryBootEntryOrder@8 -ZwQueryBootOptions@8 -ZwQueryDebugFilterState@8 ZwQueryDefaultLocale@8 -ZwQueryDefaultUILanguage@4 ZwQueryDirectoryFile@44 -ZwQueryDirectoryFileEx@40 ZwQueryDirectoryObject@28 -ZwQueryDriverEntryOrder@8 ZwQueryEaFile@36 ZwQueryEvent@20 -ZwQueryFullAttributesFile@8 -ZwQueryInformationAtom@20 -ZwQueryInformationByName@20 -ZwQueryInformationEnlistment@20 ZwQueryInformationFile@20 -ZwQueryInformationJobObject@20 ZwQueryInformationPort@20 ZwQueryInformationProcess@20 -ZwQueryInformationResourceManager@20 ZwQueryInformationThread@20 ZwQueryInformationToken@20 -ZwQueryInformationTransaction@20 -ZwQueryInformationTransactionManager@20 -ZwQueryInformationWorkerFactory@20 -ZwQueryInstallUILanguage@4 -ZwQueryIntervalProfile@8 -ZwQueryIoCompletion@20 -ZwQueryIoRingCapabilities@8 +ZwQueryIntervalProfile@8 ; Windows NT 3.1-3.51 has ABI "ZwQueryIntervalProfile@4", Windows NT 4.0 and new has ABI "ZwQueryIntervalProfile@8" ZwQueryKey@20 -ZwQueryLicenseValue@20 -ZwQueryMultipleValueKey@24 ZwQueryMutant@20 ZwQueryObject@20 -ZwQueryOpenSubKeys@8 -ZwQueryOpenSubKeysEx@16 ZwQueryPerformanceCounter@8 -ZwQueryPortInformationProcess@0 -ZwQueryQuotaInformationFile@36 ZwQuerySection@20 -ZwQuerySecurityAttributesToken@24 ZwQuerySecurityObject@20 -ZwQuerySecurityPolicy@24 ZwQuerySemaphore@20 ZwQuerySymbolicLinkObject@12 ZwQuerySystemEnvironmentValue@16 -ZwQuerySystemEnvironmentValueEx@20 ZwQuerySystemInformation@16 -ZwQuerySystemInformationEx@24 ZwQuerySystemTime@4 ZwQueryTimer@20 -ZwQueryTimerResolution@12 ZwQueryValueKey@24 ZwQueryVirtualMemory@24 ZwQueryVolumeInformationFile@20 -ZwQueryWnfStateData@24 -ZwQueryWnfStateNameInformation@20 -ZwQueueApcThread@20 -ZwQueueApcThreadEx2@28 -ZwQueueApcThreadEx@24 ZwRaiseException@12 ZwRaiseHardError@24 ZwReadFile@36 -ZwReadFileScatter@36 -ZwReadOnlyEnlistment@8 ZwReadRequestData@24 ZwReadVirtualMemory@20 -ZwReadVirtualMemoryEx@24 -ZwRecoverEnlistment@8 -ZwRecoverResourceManager@4 -ZwRecoverTransactionManager@4 -ZwRegisterProtocolAddressInformation@20 ZwRegisterThreadTerminatePort@4 -ZwReleaseCMFViewOwnership@0 -ZwReleaseKeyedEvent@16 ZwReleaseMutant@8 +; ZwReleaseProcessMutant@0 ; removed in Windows NT 4.0 ZwReleaseSemaphore@12 -ZwReleaseWorkerFactoryWorker@4 -ZwRemoveIoCompletion@20 -ZwRemoveIoCompletionEx@24 -ZwRemoveProcessDebug@8 -ZwRenameKey@8 -ZwRenameTransactionManager@8 +; ZwRenameValueKey@16 ; removed in Windows NT 3.5 ZwReplaceKey@12 -ZwReplacePartitionUnit@12 ZwReplyPort@8 ZwReplyWaitReceivePort@16 -ZwReplyWaitReceivePortEx@20 ZwReplyWaitReplyPort@8 -ZwRequestDeviceWakeup@4 ZwRequestPort@8 ZwRequestWaitReplyPort@12 -ZwRequestWakeupLatency@4 ZwResetEvent@8 -ZwResetWriteWatch@12 ZwRestoreKey@12 -ZwResumeProcess@4 ZwResumeThread@8 -ZwRevertContainerImpersonation@0 -ZwRollbackComplete@8 -ZwRollbackEnlistment@8 -ZwRollbackRegistryTransaction@8 -ZwRollbackTransaction@8 -ZwRollforwardTransactionManager@8 ZwSaveKey@8 -ZwSaveKeyEx@12 -ZwSaveMergedKeys@12 -ZwSecureConnectPort@36 -ZwSerializeBoot@0 -ZwSetBootEntryOrder@8 -ZwSetBootOptions@8 -ZwSetCachedSigningLevel2@24 -ZwSetCachedSigningLevel@20 ZwSetContextThread@8 -ZwSetDebugFilterState@12 ZwSetDefaultHardErrorPort@4 ZwSetDefaultLocale@8 -ZwSetDefaultUILanguage@4 -ZwSetDriverEntryOrder@8 ZwSetEaFile@16 ZwSetEvent@8 -ZwSetEventBoostPriority@4 ZwSetHighEventPair@4 ZwSetHighWaitLowEventPair@4 -ZwSetIRTimer@8 -ZwSetInformationDebugObject@20 -ZwSetInformationEnlistment@16 +; ZwSetHighWaitLowThread@0 ; removed in Windows 2000 ZwSetInformationFile@20 -ZwSetInformationIoRing@16 -ZwSetInformationJobObject@16 ZwSetInformationKey@16 -ZwSetInformationObject@16 ZwSetInformationProcess@16 -ZwSetInformationResourceManager@16 -ZwSetInformationSymbolicLink@16 ZwSetInformationThread@16 ZwSetInformationToken@16 -ZwSetInformationTransaction@16 -ZwSetInformationTransactionManager@16 -ZwSetInformationVirtualMemory@24 -ZwSetInformationWorkerFactory@16 -ZwSetIntervalProfile@8 -ZwSetIoCompletion@20 -ZwSetIoCompletionEx@24 +ZwSetIntervalProfile@8 ; Windows NT 3.1-3.5 has ABI "ZwSetIntervalProfile@4", Windows NT 3.51 and new has ABI "ZwSetIntervalProfile@8" ZwSetLdtEntries@24 ZwSetLowEventPair@4 ZwSetLowWaitHighEventPair@4 -ZwSetQuotaInformationFile@16 +; ZwSetLowWaitHighThread@0 ; removed in Windows 2000 ZwSetSecurityObject@12 ZwSetSystemEnvironmentValue@8 -ZwSetSystemEnvironmentValueEx@20 -ZwSetSystemInformation@12 -ZwSetSystemPowerState@12 ZwSetSystemTime@8 -ZwSetThreadExecutionState@8 -ZwSetTimer2@16 -ZwSetTimer@28 -ZwSetTimerEx@16 -ZwSetTimerResolution@12 -ZwSetUuidSeed@4 +ZwSetTimer@28 ; Windows NT 3.1-3.5 has ABI "ZwSetTimer@20", Windows NT 3.51 has ABI "ZwSetTimer@24", Windows NT 4.0 and new has ABI "ZwSetTimer@28" ZwSetValueKey@24 ZwSetVolumeInformationFile@20 -ZwSetWnfProcessNotificationEvent@4 ZwShutdownSystem@4 -ZwShutdownWorkerFactory@8 -ZwSignalAndWaitForSingleObject@16 -ZwSinglePhaseReject@8 ZwStartProfile@4 ZwStopProfile@4 -ZwSubmitIoRing@16 -ZwSubscribeWnfStateChange@16 -ZwSuspendProcess@4 ZwSuspendThread@8 ZwSystemDebugControl@24 -ZwTerminateEnclave@8 -ZwTerminateJobObject@8 ZwTerminateProcess@8 ZwTerminateThread@8 ZwTestAlert@0 -ZwThawRegistry@0 -ZwThawTransactions@0 -ZwTraceControl@24 -ZwTraceEvent@16 -ZwTranslateFilePath@16 -ZwUmsThreadYield@4 ZwUnloadDriver@4 -ZwUnloadKey2@8 ZwUnloadKey@4 -ZwUnloadKeyEx@8 ZwUnlockFile@20 ZwUnlockVirtualMemory@16 ZwUnmapViewOfSection@8 -ZwUnmapViewOfSectionEx@12 -ZwUnsubscribeWnfStateChange@4 -ZwUpdateWnfStateData@28 -ZwVdmControl@8 -ZwWaitForAlertByThreadId@8 -ZwWaitForDebugEvent@16 -ZwWaitForKeyedEvent@16 -ZwWaitForMultipleObjects32@20 +ZwVdmControl@8 ; Windows NT 3.1 has ABI "ZwVdmControl@16", Windows NT 3.5 and new has ABI "ZwVdmControl@8" +; ZwVdmStartExecution@0 ; removed in Windows NT 3.5 ZwWaitForMultipleObjects@20 +; ZwWaitForProcessMutant@0 ; removed in Windows NT 4.0 ZwWaitForSingleObject@12 -ZwWaitForWorkViaWorkerFactory@8 ZwWaitHighEventPair@4 ZwWaitLowEventPair@4 -ZwWorkerFactoryWorkerReady@4 -ZwWow64CallFunction64@28 -ZwWow64CsrAllocateCaptureBuffer@8 -ZwWow64CsrAllocateMessagePointer@12 -ZwWow64CsrCaptureMessageBuffer@16 -ZwWow64CsrCaptureMessageString@20 -ZwWow64CsrClientCallServer@16 -ZwWow64CsrClientConnectToServer@20 -ZwWow64CsrFreeCaptureBuffer@4 -ZwWow64CsrGetProcessId@0 -ZwWow64CsrIdentifyAlertableThread@0 -ZwWow64CsrVerifyRegion@8 -ZwWow64DebuggerCall@20 -ZwWow64GetCurrentProcessorNumberEx@4 -ZwWow64GetNativeSystemInformation@16 -ZwWow64InterlockedPopEntrySList@4 -ZwWow64QueryInformationProcess64@20 -ZwWow64QueryVirtualMemory64@32 -ZwWow64ReadVirtualMemory64@28 -ZwWow64WriteVirtualMemory64@28 ZwWriteFile@36 -ZwWriteFileGather@36 ZwWriteRequestData@24 ZwWriteVirtualMemory@20 +; xRtlDosPathNameToNtPathName@16 ; removed in Windows NT 3.5 + +; This is list of non-stdcall FPU emulator symbols, available since Windows NT 3.1 and removed in Windows XP SP2 and Windows Server 2003 SP1 +; NPXEMULATORTABLE DATA ; removed in Windows XP +; RestoreEm87Context +; SaveEm87Context +; __eCommonExceptions +; __eEmulatorInit +; __eF2XM1 +; __eFABS +; __eFADD32 +; __eFADD64 +; __eFADDPreg +; __eFADDreg +; __eFADDtop +; __eFCHS +; __eFCOM32 +; __eFCOM64 +; __eFCOM +; __eFCOMP32 +; __eFCOMP64 +; __eFCOMP +; __eFCOMPP +; __eFCOS +; __eFDECSTP +; __eFDIV32 +; __eFDIV64 +; __eFDIVPreg +; __eFDIVR32 +; __eFDIVR64 +; __eFDIVRPreg +; __eFDIVRreg +; __eFDIVRtop +; __eFDIVreg +; __eFDIVtop +; __eFFREE +; __eFIADD16 +; __eFIADD32 +; __eFICOM16 +; __eFICOM32 +; __eFICOMP16 +; __eFICOMP32 +; __eFIDIV16 +; __eFIDIV32 +; __eFIDIVR16 +; __eFIDIVR32 +; __eFILD16 +; __eFILD32 +; __eFILD64 +; __eFIMUL16 +; __eFIMUL32 +; __eFINCSTP +; __eFINIT +; __eFIST16 +; __eFIST32 +; __eFISTP16 +; __eFISTP32 +; __eFISTP64 +; __eFISUB16 +; __eFISUB32 +; __eFISUBR16 +; __eFISUBR32 +; __eFLD1 +; __eFLD32 +; __eFLD64 +; __eFLD80 +; __eFLDCW +; __eFLDENV +; __eFLDL2E +; __eFLDLN2 +; __eFLDPI +; __eFLDZ +; __eFMUL32 +; __eFMUL64 +; __eFMULPreg +; __eFMULreg +; __eFMULtop +; __eFPATAN +; __eFPREM +; __eFPREM1 +; __eFPTAN +; __eFRNDINT +; __eFRSTOR +; __eFSAVE +; __eFSCALE +; __eFSIN +; __eFSQRT +; __eFST32 +; __eFST64 +; __eFST +; __eFSTCW +; __eFSTENV +; __eFSTP32 +; __eFSTP64 +; __eFSTP80 +; __eFSTP +; __eFSTSW +; __eFSUB32 +; __eFSUB64 +; __eFSUBPreg +; __eFSUBR32 +; __eFSUBR64 +; __eFSUBRPreg +; __eFSUBRreg +; __eFSUBRtop +; __eFSUBreg +; __eFSUBtop +; __eFTST +; __eFUCOM +; __eFUCOMP +; __eFUCOMPP +; __eFXAM +; __eFXCH +; __eFXTRACT +; __eFYL2X +; __eFYL2XP1 +; __eGetStatusWord + +; This is list of symbols added in Windows NT 3.5 +LdrDisableThreadCalloutsForDll@4 +NlsMbCodePageTag DATA +NlsMbOemCodePageTag DATA +NtClearEvent@4 +NtCreateIoCompletion@16 +NtDeleteFile@4 +NtOpenIoCompletion@12 +NtQueryAttributesFile@8 +NtQueryIoCompletion@20 +NtQueryTimerResolution@12 +NtRemoveIoCompletion@20 +NtSetInformationObject@16 +NtSetSystemInformation@12 +NtSetTimerResolution@12 +RtlCompressBuffer@32 +RtlCutoverTimeToSystemTime@16 +RtlDecompressBuffer@24 +RtlDecompressFragment@32 +RtlFormatCurrentUserKeyPath@4 +RtlGetCompressionWorkSpaceSize@12 +RtlGetLongestNtPathLength@0 +; RtlGetUserFlagsHeap@16 ; removed in Windows NT 3.51 +; RtlGetUserValueHeap@16 ; removed in Windows NT 3.51 +RtlIsTextUnicode@12 +RtlSetUserFlagsHeap@20 +RtlSetUserValueHeap@16 +RtlWalkHeap@8 +RtlZeroHeap@8 +RtlxAnsiStringToUnicodeSize@4 +RtlxOemStringToUnicodeSize@4 +RtlxUnicodeStringToAnsiSize@4 +RtlxUnicodeStringToOemSize@4 +ZwClearEvent@4 +ZwCreateIoCompletion@16 +ZwDeleteFile@4 +ZwOpenIoCompletion@12 +ZwQueryAttributesFile@8 +ZwQueryIoCompletion@20 +ZwQueryTimerResolution@12 +ZwRemoveIoCompletion@20 +ZwSetInformationObject@16 +ZwSetSystemInformation@12 +ZwSetTimerResolution@12 + +; This is list of symbols added in Windows NT 3.51 +KiUserCallbackDispatcher@12 ; really stdcall @12, gendef detects it incorrectly +LdrEnumResources@20 +NtAllocateUuids@16 ; Windows NT 3.51-4.0 has ABI "NtAllocateUuids@12", Windows 2000 and new has ABI "NtAllocateUuids@16" +NtCallbackReturn@12 +; NtEnumerateBus@8 ; removed in Windows NT 4.0 +NtGetPlugPlayEvent@16 ; removed in Windows 8 +NtPlugPlayControl@12 ; Windows NT 3.51-4.0 has ABI "NtPlugPlayControl@16", Windows 2000 and new has ABI "NtPlugPlayControl@12" +; NtRegisterNewDevice@8 ; removed in Windows NT 4.0 +NtSetIoCompletion@20 +; NtW32Call@20 ; removed in Windows NT 4.0 SP4 +RtlCreateQueryDebugBuffer@8 +RtlCreateTagHeap@16 +RtlDestroyQueryDebugBuffer@4 +RtlEnumProcessHeaps@8 +RtlExtendHeap@16 ; removed in Windows Vista +RtlGetProcessHeaps@8 +RtlGetUserInfoHeap@20 +RtlIsNameLegalDOS8Dot3@12 +RtlProtectHeap@8 +RtlQueryProcessDebugInformation@12 +RtlQueryTagHeap@20 +RtlUsageHeap@12 ; removed in Windows Vista +RtlValidateProcessHeaps@0 +ZwAllocateUuids@16 ; Windows NT 3.51-4.0 has ABI "ZwAllocateUuids@12", Windows 2000 and new has ABI "ZwAllocateUuids@16" +ZwCallbackReturn@12 +; ZwEnumerateBus@8 ; remvoed in Windows NT 4.0 +ZwGetPlugPlayEvent@16 ; removed in Windows 8 +ZwPlugPlayControl@12 ; Windows NT 3.51-4.0 has ABI "ZwPlugPlayControl@16", Windows 2000 and new has ABI "ZwPlugPlayControl@12" +; ZwRegisterNewDevice@8 ; removed in Windows NT 4.0 +ZwSetIoCompletion@20 +ZwSetSystemPowerState@12 +; ZwW32Call@20 ; removed in Windows NT 4.0 SP4 + +; This is list of symbols added in Windows NT 4.0 +; public: virtual void *__thiscall CBufferAllocator::Allocate(unsigned long) +; ?Allocate@CBufferAllocator@@UAEPAXK@Z ; has WINAPI (@4) ; removed in Windows 2000 +KiRaiseUserExceptionDispatcher@0 +NlsAnsiCodePage DATA +NtAddAtom@12 ; Windows NT 4.0 has ABI "NtAddAtom@8", Windows 2000 and new has ABI "NtAddAtom@12" +; NtCreateChannel@8 ; removed in Windows XP +NtDeleteAtom@4 +NtDeleteObjectAuditAlarm@12 +NtFindAtom@12 ; Windows NT 4.0 has ABI "NtFindAtom@8", Windows 2000 and new has ABI "NtFindAtom@12" +; NtListenChannel@8 ; removed in Windows XP +NtLoadKey2@12 +; NtOpenChannel@8 ; removed in Windows XP +NtQueryFullAttributesFile@8 +NtQueryInformationAtom@20 +NtQueryMultipleValueKey@24 +; NtQueryOleDirectoryFile@44 ; removed in Windows 2000 +NtQueueApcThread@20 +; NtReplyWaitSendChannel@12 ; removed in Windows XP +; NtSendWaitReplyChannel@16 ; removed in Windows XP +; NtSetContextChannel@4 ; removed in Windows XP +NtSignalAndWaitForSingleObject@16 +NtYieldExecution@0 +; PropertyLengthAsVariant@16 ; removed in Windows Vista +RtlAddAtomToAtomTable@12 +RtlAddCompoundAce@24 +RtlAllocateHandle@8 +; RtlClosePropertySet@4 ; removed in Windows 2000 +; RtlCompareVariants@12 ; removed in Windows 2000 +; RtlConvertPropertyToVariant@16 ; removed in Windows Vista +; RtlConvertVariantToProperty@28 ; removed in Windows Vista +RtlCreateAtomTable@8 +; RtlCreatePropertySet@36 ; removed in Windows 2000 +RtlDeleteAtomFromAtomTable@8 +RtlDeleteNoSplay@8 +RtlDestroyAtomTable@4 +RtlDestroyHandleTable@4 +RtlDowncaseUnicodeString@12 +RtlEmptyAtomTable@8 +; RtlEnumerateProperties@24 ; removed in Windows 2000 +; RtlFlushPropertySet@4 ; removed in Windows 2000 +RtlFreeHandle@8 +RtlFreeUserThreadStack@8 ; removed in Windows Vista +; RtlGuidToPropertySetName@8 ; removed in Windows 2000 +RtlImageRvaToSection@12 +RtlImageRvaToVa@16 +RtlInitializeAtomPackage@4 +RtlInitializeHandleTable@12 +RtlIsValidHandle@8 +RtlIsValidIndexHandle@12 +RtlLookupAtomInAtomTable@12 +RtlPinAtomInAtomTable@8 +; RtlPropertySetNameToGuid@12 ; removed in Windows 2000 +RtlQueryAtomInAtomTable@24 +; RtlQueryProperties@28 ; removed in Windows 2000 +; RtlQueryPropertyNames@16 ; removed in Windows 2000 +; RtlQueryPropertySet@8 ; removed in Windows 2000 +RtlSetAttributesSecurityDescriptor@12 +; RtlSetProperties@28 ; removed in Windows 2000 +; RtlSetPropertyNames@16 ; removed in Windows 2000 +; RtlSetPropertySetClassId@8 ; removed in Windows 2000 +; RtlSetUnicodeCallouts@4 ; removed in Windows Vista +RtlTryEnterCriticalSection@4 +ZwAddAtom@12 ; Windows NT 4.0 has ABI "ZwAddAtom@8", Windows 2000 and new has ABI "ZwAddAtom@12" +; ZwCreateChannel@8 ; removed in Windows XP +ZwDeleteAtom@4 +ZwDeleteObjectAuditAlarm@12 +ZwFindAtom@12 ; Windows NT 4.0 has ABI "ZwFindAtom@8", Windows 2000 and new has ABI "ZwFindAtom@12" +; ZwListenChannel@8 ; removed in Windows XP +ZwLoadKey2@12 +; ZwOpenChannel@8 ; removed in Windows XP +ZwQueryFullAttributesFile@8 +ZwQueryInformationAtom@20 +ZwQueryMultipleValueKey@24 +; ZwQueryOleDirectoryFile@44 ; removed in Windows 2000 +ZwQueueApcThread@20 +; ZwReplyWaitSendChannel@12 ; removed in Windows XP +; ZwSendWaitReplyChannel@16 ; removed in Windows XP +; ZwSetContextChannel@4 ; removed in Windows XP +ZwSignalAndWaitForSingleObject@16 ZwYieldExecution@0 + +; In Windows NT 4.0 SP1 was not added any new symbol + +; This is list of symbols added in Windows NT 4.0 SP2 +NtReadFileScatter@36 +NtWriteFileGather@36 +; RtlOnMappedStreamEvent@12 ; removed in Windows 2000 +ZwReadFileScatter@36 +ZwWriteFileGather@36 + +; This is list of symbols added in Windows NT 4.0 SP3 +RtlInitializeCriticalSectionAndSpinCount@8 +RtlSetCriticalSectionSpinCount@8 + +; In Windows NT 4.0 SP4 was not added any new symbol but some were removed + +; In Windows NT 4.0 SP5 was not added any new symbol + +; In Windows NT 4.0 SP6 was not added any new symbol + +; In Windows NT 4.0 SP6a was not added any new symbol + +; This is list of symbols added in Windows 2000 +DbgPrintReturnControlC ; cdecl +LdrAlternateResourcesEnabled@0 ; removed in Windows Vista +LdrFlushAlternateResourceModules@0 +LdrLoadAlternateResourceModule@16 ; Windows 2000-2003 has ABI "LdrLoadAlternateResourceModule@8", Windows Vista and new has ABI "LdrLoadAlternateResourceModule@16" +LdrUnloadAlternateResourceModule@4 +NtAccessCheckByType@44 +NtAccessCheckByTypeAndAuditAlarm@64 +NtAccessCheckByTypeResultList@44 +NtAccessCheckByTypeResultListAndAuditAlarm@64 +NtAccessCheckByTypeResultListAndAuditAlarmByHandle@68 +NtAllocateUserPhysicalPages@12 +NtAreMappedFilesTheSame@8 +NtAssignProcessToJobObject@8 +NtCancelDeviceWakeupRequest@4 ; removed in Windows 7 +NtCreateJobObject@12 +NtCreateWaitablePort@20 +NtFilterToken@24 +NtFreeUserPhysicalPages@12 +NtGetDevicePowerState@8 +NtGetWriteWatch@28 +NtImpersonateAnonymousToken@4 +NtIsSystemResumeAutomatic@0 +NtMapUserPhysicalPages@12 +NtMapUserPhysicalPagesScatter@12 +NtNotifyChangeMultipleKeys@48 +NtOpenJobObject@12 +NtQueryDefaultUILanguage@4 +NtQueryInformationJobObject@20 +NtQueryInstallUILanguage@4 +NtQueryOpenSubKeys@8 +NtQueryQuotaInformationFile@36 +NtReplyWaitReceivePortEx@20 +NtRequestDeviceWakeup@4 ; removed in Windows 7 +NtResetWriteWatch@12 +NtSaveMergedKeys@12 +NtSecureConnectPort@36 +NtSetDefaultUILanguage@4 +NtSetInformationJobObject@16 +NtSetQuotaInformationFile@16 +NtSetThreadExecutionState@8 +NtSetUuidSeed@4 +NtTerminateJobObject@8 +RtlAddAccessAllowedAceEx@20 +RtlAddAccessAllowedObjectAce@28 +RtlAddAccessDeniedAceEx@20 +RtlAddAccessDeniedObjectAce@28 +RtlAddAuditAccessAceEx@28 +RtlAddAuditAccessObjectAce@36 +RtlAddRange@36 ; removed in Windows Server 2003 +RtlCallbackLpcClient@12 ; removed in Windows XP +RtlCancelTimer@8 +RtlCheckForOrphanedCriticalSections@4 +RtlConvertToAutoInheritSecurityObject@24 +RtlCopyRangeList@8 ; removed in Windows Server 2003 +RtlCreateLpcServer@24 ; removed in Windows XP +RtlCreateTimer@28 +RtlCreateTimerQueue@4 +RtlDebugPrintTimes@0 +RtlDefaultNpAcl@4 +RtlDeleteOwnersRanges@8 ; removed in Windows Server 2003 +RtlDeleteRange@24 ; removed in Windows Server 2003 +RtlDeleteTimer@12 +RtlDeleteTimerQueue@4 +RtlDeleteTimerQueueEx@8 +RtlDeregisterWait@4 +RtlDeregisterWaitEx@8 +RtlDnsHostNameToComputerName@12 +RtlEnableEarlyCriticalSectionEventCreation@0 +RtlFindLastBackwardRunClear@12 +RtlFindLeastSignificantBit@8 +RtlFindMostSignificantBit@8 +RtlFindNextForwardRunClear@12 +RtlFindRange@48 ; removed in Windows Server 2003 +; RtlFreeRangeList@4 ; removed in Windows Server 2003 +RtlGUIDFromString@8 +RtlGetFirstRange@12 ; removed in Windows Server 2003 +RtlGetNextRange@12 ; removed in Windows Server 2003 +RtlGetSecurityDescriptorRMControl@8 +RtlGetVersion@4 +RtlImpersonateLpcClient@8 ; removed in Windows XP +; RtlInitializeRangeList@4 ; removed in Windows Server 2003 +RtlInt64ToUnicodeString@16 +RtlInvertRangeList@8 ; removed in Windows Server 2003 +RtlIsRangeAvailable@40 ; removed in Windows Server 2003 +RtlMergeRangeLists@16 ; removed in Windows Server 2003 +RtlNewSecurityObjectEx@32 +RtlQueueWorkItem@12 +RtlRegisterWait@24 +RtlSelfRelativeToAbsoluteSD2@8 +RtlSetControlSecurityDescriptor@12 +RtlSetIoCompletionCallback@12 +RtlSetSecurityDescriptorRMControl@8 +RtlSetSecurityObjectEx@24 +RtlSetThreadPoolStartFunc@8 +RtlSetTimer@28 +RtlShutdownLpcServer@4 ; removed in Windows XP +RtlStringFromGUID@8 +@RtlUlongByteSwap@4 ; fastcall +@RtlUlonglongByteSwap@8 ; fastcall +RtlUpdateTimer@16 +@RtlUshortByteSwap@4 ; fastcall +RtlValidRelativeSecurityDescriptor@12 +RtlVerifyVersionInfo@16 +RtlWalkFrameChain@12 +VerSetConditionMask@16 +ZwAccessCheckByType@44 +ZwAccessCheckByTypeAndAuditAlarm@64 +ZwAccessCheckByTypeResultList@44 +ZwAccessCheckByTypeResultListAndAuditAlarm@64 +ZwAccessCheckByTypeResultListAndAuditAlarmByHandle@68 +ZwAllocateUserPhysicalPages@12 +ZwAreMappedFilesTheSame@8 +ZwAssignProcessToJobObject@8 +ZwCancelDeviceWakeupRequest@4 ; removed in Windows 7 +ZwCreateJobObject@12 +ZwCreateWaitablePort@20 +ZwFilterToken@24 +ZwFreeUserPhysicalPages@12 +ZwGetDevicePowerState@8 +ZwGetWriteWatch@28 +ZwImpersonateAnonymousToken@4 +ZwInitiatePowerAction@16 +ZwIsSystemResumeAutomatic@0 +ZwMapUserPhysicalPages@12 +ZwMapUserPhysicalPagesScatter@12 +ZwNotifyChangeMultipleKeys@48 +ZwOpenJobObject@12 +ZwPowerInformation@20 +ZwQueryDefaultUILanguage@4 +ZwQueryInformationJobObject@20 +ZwQueryInstallUILanguage@4 +ZwQueryOpenSubKeys@8 +ZwQueryQuotaInformationFile@36 +ZwReplyWaitReceivePortEx@20 +ZwRequestDeviceWakeup@4 ; removed in Windows 7 +ZwRequestWakeupLatency@4 ; removed in Windows 7 +ZwResetWriteWatch@12 +ZwSaveMergedKeys@12 +ZwSecureConnectPort@36 +ZwSetDefaultUILanguage@4 +ZwSetInformationJobObject@16 +ZwSetQuotaInformationFile@16 +ZwSetThreadExecutionState@8 +ZwSetUuidSeed@4 +ZwTerminateJobObject@8 + +; This is list of symbols added in Windows 2000 SP1 +RtlTraceDatabaseAdd@16 +RtlTraceDatabaseCreate@20 +RtlTraceDatabaseDestroy@4 +RtlTraceDatabaseEnumerate@12 +RtlTraceDatabaseFind@16 +RtlTraceDatabaseLock@4 +RtlTraceDatabaseUnlock@4 +RtlTraceDatabaseValidate@4 + +; In Windows 2000 SP2 was not added any new symbol + +; In Windows 2000 SP3 was not added any new symbol + +; In Windows 2000 SP4 was not added any new symbol + +; This is list of symbols added in Windows XP +CsrCaptureMessageMultiUnicodeStringsInPlace@12 +CsrGetProcessId@0 +DbgPrintEx ; cdecl +DbgQueryDebugFilterState@8 +DbgSetDebugFilterState@12 +DbgUiConvertStateChangeStructure@8 +DbgUiDebugActiveProcess@4 +DbgUiGetThreadDebugObject@0 +DbgUiIssueRemoteBreakin@4 +DbgUiRemoteBreakin@4 +DbgUiSetThreadDebugObject@4 +DbgUiStopDebugging@4 +; LdrAccessOutOfProcessResource@20 ; removed in Windows Vista +LdrAddRefDll@8 +; LdrCreateOutOfProcessImage@20 ; Windows XP has ABI "LdrCreateOutOfProcessImage@16", Windows Server 2003 has ABI "LdrCreateOutOfProcessImage@20", removed in Windows Vista +; LdrDestroyOutOfProcessImage@4 ; removed in Windows Vista +; LdrFindCreateProcessManifest@20 ; removed in Windows Vista +LdrFindResourceEx_U@20 +LdrGetDllHandleEx@20 +LdrInitShimEngineDynamic@4 ; Windows XP-7 has ABI "LdrInitShimEngineDynamic@4", Windows 8 an new has ABI "LdrInitShimEngineDynamic@8" +LdrLockLoaderLock@12 +LdrSetAppCompatDllRedirectionCallback@12 +LdrSetDllManifestProber@4 ; Windows XP-Vista has ABI "LdrSetDllManifestProber@4", Windows 7 an new has ABI "LdrSetDllManifestProber@12" +LdrUnlockLoaderLock@8 +NtAddBootEntry@8 +NtCompactKeys@8 +NtCompareTokens@12 +NtCompressKey@4 +NtCreateDebugObject@16 +NtCreateJobSet@12 +NtCreateKeyedEvent@16 +NtCreateProcessEx@36 +NtDebugActiveProcess@8 +NtDebugContinue@12 +NtDeleteBootEntry@4 +NtEnumerateBootEntries@8 +NtEnumerateSystemEnvironmentValuesEx@12 +NtIsProcessInJob@8 +NtLockProductActivationKeys@8 +NtLockRegistryKey@4 +NtMakePermanentObject@4 +NtModifyBootEntry@4 +NtOpenKeyedEvent@12 +NtOpenProcessTokenEx@16 +NtOpenThreadTokenEx@20 +NtQueryBootEntryOrder@8 +NtQueryBootOptions@8 +NtQueryDebugFilterState@8 +NtQueryPortInformationProcess@0 +NtQuerySystemEnvironmentValueEx@20 +NtReleaseKeyedEvent@16 +NtRemoveProcessDebug@8 +NtRenameKey@8 +NtResumeProcess@4 +NtSaveKeyEx@12 +NtSetBootEntryOrder@8 +NtSetBootOptions@8 +NtSetDebugFilterState@12 +NtSetEventBoostPriority@4 +NtSetInformationDebugObject@20 +NtSetSystemEnvironmentValueEx@20 +NtSuspendProcess@4 +NtTraceEvent@16 +NtTranslateFilePath@16 +NtUnloadKeyEx@8 +NtWaitForDebugEvent@16 +NtWaitForKeyedEvent@16 +RtlActivateActivationContext@12 +RtlActivateActivationContextEx@16 +@RtlActivateActivationContextUnsafeFast@8 ; fastcall +RtlAddRefActivationContext@4 +RtlAddRefMemoryStream@4 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlAddVectoredExceptionHandler@8 +RtlAddressInSectionTable@12 +RtlAppendPathElement@12 +RtlApplicationVerifierStop@40 +; RtlAssert2@20 ; removed in Windows Server 2003 +RtlCaptureContext@4 +RtlCaptureStackContext@12 +; RtlCheckProcessParameters@16 ; removed in Windows Vista +RtlCloneMemoryStream@8 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlCommitMemoryStream@8 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlComputeCrc32@12 +RtlComputeImportTableHash@12 +RtlComputePrivatizedDllName_U@12 +RtlCopyMemoryStreamTo@24 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlCopyOutOfProcessMemoryStreamTo@24 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlCreateActivationContext@24 +RtlCreateBootStatusDataFile@4 ; Windows XP-2003 has ABI "RtlCreateBootStatusDataFile@0", Windows Vista and new has ABI "RtlCreateBootStatusDataFile@4" +RtlCreateSystemVolumeInformationFolder@4 +RtlDeactivateActivationContext@8 +@RtlDeactivateActivationContextUnsafeFast@4 ; fastcall +RtlDeleteElementGenericTableAvl@8 +RtlDllShutdownInProgress@0 +RtlDosApplyFileIsolationRedirection_Ustr@36 +RtlDosSearchPath_Ustr@36 +RtlDowncaseUnicodeChar@4 +RtlDuplicateUnicodeString@12 +RtlEnumerateGenericTableAvl@8 +RtlEnumerateGenericTableLikeADirectory@28 +RtlEnumerateGenericTableWithoutSplayingAvl@8 +RtlExitUserThread@4 +RtlFinalReleaseOutOfProcessMemoryStream@4 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlFindActivationContextSectionGuid@20 +RtlFindActivationContextSectionString@20 +RtlFindCharInUnicodeString@16 +RtlFindClearRuns@16 +RtlFirstEntrySList@4 +RtlFlushSecureMemoryCache@8 +RtlFreeThreadActivationContextStack@0 +RtlGetActiveActivationContext@4 +RtlGetCurrentPeb@0 +RtlGetElementGenericTableAvl@8 +RtlGetFrame@0 +RtlGetLastNtStatus@0 +RtlGetLastWin32Error@0 +RtlGetLengthWithoutLastFullDosOrNtPathElement@12 +RtlGetLengthWithoutTrailingPathSeperators@12 +RtlGetNativeSystemInformation@16 +RtlGetNtVersionNumbers@12 +RtlGetSetBootStatusData@24 +RtlHashUnicodeString@16 +RtlInitMemoryStream@4 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlInitOutOfProcessMemoryStream@4 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlInitUnicodeStringEx@8 +RtlInitializeGenericTableAvl@20 +RtlInitializeSListHead@4 +RtlInsertElementGenericTableAvl@16 +RtlInterlockedFlushSList@4 +RtlInterlockedPopEntrySList@4 +RtlInterlockedPushEntrySList@8 +@RtlInterlockedPushListSList@16 ; fastcall +RtlIpv4AddressToStringA@8 +RtlIpv4AddressToStringW@8 +RtlIpv4StringToAddressA@16 +RtlIpv4StringToAddressW@16 +RtlIpv6AddressToStringA@8 +RtlIpv6AddressToStringW@8 +RtlIpv6StringToAddressA@12 +RtlIpv6StringToAddressW@12 +RtlIsActivationContextActive@4 +RtlIsGenericTableEmptyAvl@4 +RtlLockBootStatusData@4 +RtlLockMemoryStreamRegion@24 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlLogStackBackTrace@0 +RtlLookupElementGenericTableAvl@8 +RtlMapSecurityErrorToNtStatus@4 +RtlMultiAppendUnicodeStringBuffer@12 +RtlNewSecurityObjectWithMultipleInheritance@36 +RtlNtPathNameToDosPathName@16 +RtlNtStatusToDosErrorNoTeb@4 +RtlNumberGenericTableElementsAvl@4 +RtlPopFrame@4 +RtlPushFrame@4 +RtlQueryDepthSList@4 +RtlQueryHeapInformation@20 +RtlQueryInformationActivationContext@28 +RtlQueryInformationActiveActivationContext@16 +RtlQueryInterfaceMemoryStream@12 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlQueueApcWow64Thread@20 +RtlRandomEx@4 +RtlReadMemoryStream@16 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlReadOutOfProcessMemoryStream@16 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlRegisterSecureMemoryCacheCallback@4 +RtlReleaseActivationContext@4 +RtlReleaseMemoryStream@4 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlRemoveVectoredExceptionHandler@4 +RtlRestoreLastWin32Error@4 +RtlRevertMemoryStream@4 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlSeekMemoryStream@20 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlSetHeapInformation@16 +RtlSetLastWin32Error@4 +RtlSetLastWin32ErrorAndNtStatusFromNtStatus@4 +RtlSetMemoryStreamSize@12 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlSetProcessIsCritical ; cdecl +RtlSetThreadIsCritical ; cdecl +RtlStatMemoryStream@12 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlUnhandledExceptionFilter2@8 +RtlUnhandledExceptionFilter@4 +RtlUnlockBootStatusData@4 +RtlUnlockMemoryStreamRegion@24 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlValidateUnicodeString@8 +RtlWriteMemoryStream@16 ; not available in Windows XP x64 WoW64 version, but available in Windows Vista and new WoW64 version +RtlZombifyActivationContext@4 +RtlpApplyLengthFunction@16 +RtlpEnsureBufferSize@12 +RtlpNotOwnerCriticalSection@4 +ZwAddBootEntry@8 +ZwCompactKeys@8 +ZwCompareTokens@12 +ZwCompressKey@4 +ZwCreateDebugObject@16 +ZwCreateJobSet@12 +ZwCreateKeyedEvent@16 +ZwCreateProcessEx@36 +ZwDebugActiveProcess@8 +ZwDebugContinue@12 +ZwDeleteBootEntry@4 +ZwEnumerateBootEntries@8 +ZwEnumerateSystemEnvironmentValuesEx@12 +ZwIsProcessInJob@8 +ZwLockProductActivationKeys@8 +ZwLockRegistryKey@4 +ZwMakePermanentObject@4 +ZwModifyBootEntry@4 +ZwOpenKeyedEvent@12 +ZwOpenProcessTokenEx@16 +ZwOpenThreadTokenEx@20 +ZwQueryBootEntryOrder@8 +ZwQueryBootOptions@8 +ZwQueryDebugFilterState@8 +ZwQueryPortInformationProcess@0 +ZwQuerySystemEnvironmentValueEx@20 +ZwReleaseKeyedEvent@16 +ZwRemoveProcessDebug@8 +ZwRenameKey@8 +ZwResumeProcess@4 +ZwSaveKeyEx@12 +ZwSetBootEntryOrder@8 +ZwSetBootOptions@8 +ZwSetDebugFilterState@12 +ZwSetEventBoostPriority@4 +ZwSetInformationDebugObject@20 +ZwSetSystemEnvironmentValueEx@20 +ZwSuspendProcess@4 +ZwTraceEvent@16 +ZwTranslateFilePath@16 +ZwUnloadKeyEx@8 +ZwWaitForDebugEvent@16 +ZwWaitForKeyedEvent@16 vDbgPrintEx@16 vDbgPrintExWithPrefix@20 + +; This is list of symbols added in Windows XP SP1 +LdrEnumerateLoadedModules@12 +RtlIsThreadWithinLoaderCallout@0 + +; This is list of symbols added in Windows XP SP2 +LdrHotPatchRoutine@0 ; removed in Windows 8.1 +RtlGetUnloadEventTrace@0 +RtlIpv4AddressToStringExA@16 +RtlIpv4AddressToStringExW@16 +RtlIpv4StringToAddressExA@16 +RtlIpv4StringToAddressExW@16 +RtlIpv6AddressToStringExA@20 +RtlIpv6AddressToStringExW@20 +RtlIpv6StringToAddressExA@16 +RtlIpv6StringToAddressExW@16 + +; This is list of symbols added in Windows XP SP2 and in Windows Server 2003 SP1 (not available in 2003 without SP1) +KiFastSystemCall@0 +KiFastSystemCallRet@0 +KiIntSystemCall@0 +RtlDecodePointer@4 +RtlDecodeSystemPointer@4 +RtlEncodePointer@4 +RtlEncodeSystemPointer@4 + +; In Windows XP SP3 was not added any new symbol + +; This is list of symbols added in Windows Server 2003 +; EtwControlTraceA@20 ; removed in Windows Vista +; EtwControlTraceW@20 ; removed in Windows Vista +EtwCreateTraceInstanceId@8 +; EtwEnableTrace@24 ; removed in Windows Vista +; EtwEnumerateTraceGuids@12 ; removed in Windows Vista +; EtwFlushTraceA@16 ; removed in Windows Vista +; EtwFlushTraceW@16 ; removed in Windows Vista +EtwGetTraceEnableFlags@8 +EtwGetTraceEnableLevel@8 +EtwGetTraceLoggerHandle@4 +; EtwNotificationRegistrationA@20 ; removed in Windows Vista +; EtwNotificationRegistrationW@20 ; removed in Windows Vista +; EtwQueryAllTracesA@12 ; removed in Windows Vista +; EtwQueryAllTracesW@12 ; removed in Windows Vista +; EtwQueryTraceA@16 ; removed in Windows Vista +; EtwQueryTraceW@16 ; removed in Windows Vista +; EtwReceiveNotificationsA@16 ; removed in Windows Vista +; EtwReceiveNotificationsW@16 ; removed in Windows Vista +EtwRegisterTraceGuidsA@32 +EtwRegisterTraceGuidsW@32 +; EtwStartTraceA@12 ; removed in Windows Vista +; EtwStartTraceW@12 ; removed in Windows Vista +; EtwStopTraceA@16 ; removed in Windows Vista +; EtwStopTraceW@16 ; removed in Windows Vista +; EtwTraceEvent@12 ; removed in Windows Vista +EtwTraceEventInstance@20 +EtwTraceMessage ; cdecl +EtwTraceMessageVa@24 +EtwUnregisterTraceGuids@8 +; EtwUpdateTraceA@16 ; removed in Windows Vista +; EtwUpdateTraceW@16 ; removed in Windows Vista +; EtwpGetTraceBuffer@16 ; removed in Windows Vista +; EtwpSetHWConfigFunction@8 ; removed in Windows Vista +LdrQueryImageFileExecutionOptionsEx@28 +NtAddDriverEntry@8 +NtApphelpCacheControl@8 +NtDeleteDriverEntry@4 +NtEnumerateDriverEntries@8 +NtGetCurrentProcessorNumber@0 +NtGetTickCount@0 +NtLoadKeyEx@32 ; Windows Server 2003 has ABI "NtLoadKeyEx@16", Windows Vista and new has ABI "NtLoadKeyEx@32" +NtModifyDriverEntry@4 +NtQueryDriverEntryOrder@8 +NtQueryOpenSubKeysEx@16 +NtSetDriverEntryOrder@8 +NtUnloadKey2@8 +RtlCopyMappedMemory@12 +RtlDosPathNameToRelativeNtPathName_U@16 +RtlGetFullPathName_UstrEx@32 +RtlGetThreadErrorMode@0 +RtlImageNtHeaderEx@20 +RtlInitAnsiStringEx@8 +RtlInsertElementGenericTableFull@24 +RtlInsertElementGenericTableFullAvl@24 +RtlInterlockedCompareExchange64@20 +RtlLookupElementGenericTableFull@16 +RtlLookupElementGenericTableFullAvl@16 +RtlMultipleAllocateHeap@20 +RtlMultipleFreeHeap@16 +RtlReleaseRelativeName@4 +RtlSetEnvironmentStrings@8 +RtlSetThreadErrorMode@8 +RtlWow64EnableFsRedirection@4 +ZwAddDriverEntry@8 +ZwApphelpCacheControl@8 +ZwDeleteDriverEntry@4 +ZwEnumerateDriverEntries@8 +ZwGetCurrentProcessorNumber@0 +ZwLoadKeyEx@32 ; Windows Server 2003 has ABI "ZwLoadKeyEx@16", Windows Vista and new has ABI "ZwLoadKeyEx@32" +ZwModifyDriverEntry@4 +ZwQueryDriverEntryOrder@8 +ZwQueryOpenSubKeysEx@16 +ZwSetDriverEntryOrder@8 +ZwUnloadKey2@8 + +; This is list of symbols added in Windows Server 2003 SP1 and Windows XP x64 SP1 (WoW64 version) +ExpInterlockedPopEntrySListEnd@0 ; removed in Windows 10 November Update (Threshold 2 / 1511) WoW64 version, but available in non-WoW64 version +ExpInterlockedPopEntrySListFault@0 ; removed in Windows 10 November Update (Threshold 2 / 1511) WoW64 version, but available in non-WoW64 version +ExpInterlockedPopEntrySListResume@0 ; removed in Windows 10 November Update (Threshold 2 / 1511) WoW64 version, but available in non-WoW64 version +LdrOpenImageFileOptionsKey@12 +LdrQueryImageFileKeyOption@24 +NtWaitForMultipleObjects32@20 +NtWow64CsrAllocateCaptureBuffer@8 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrAllocateMessagePointer@12 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrCaptureMessageBuffer@16 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrCaptureMessageString@20 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrClientCallServer@16 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrClientConnectToServer@20 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrFreeCaptureBuffer@4 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrGetProcessId@0 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrIdentifyAlertableThread@0 ; available only in 32-bit WoW64 version on 64-bit system +; NtWow64CsrNewThread@0 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 7 +; NtWow64CsrSetPriorityClass@8 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 7 +NtWow64DebuggerCall@20 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64GetNativeSystemInformation@16 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64QueryInformationProcess64@20 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64QueryVirtualMemory64@32 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 10 (Threshold / 1507) +NtWow64ReadVirtualMemory64@28 ; available only in 32-bit WoW64 version on 64-bit system +RtlAcquirePrivilege@16 +RtlAddVectoredContinueHandler@8 +RtlAllocateActivationContextStack@4 +RtlDosPathNameToNtPathName_U_WithStatus@16 +RtlDosPathNameToRelativeNtPathName_U_WithStatus@16 +RtlFormatMessageEx@40 +RtlFreeActivationContextStack@4 +RtlGetCriticalSectionRecursionCount@4 +RtlGetCurrentProcessorNumber@0 +RtlIsCriticalSectionLocked@4 +RtlIsCriticalSectionLockedByThread@4 +RtlReleasePrivilege@4 +RtlRemoveVectoredContinueHandler@4 +RtlSetUnhandledExceptionFilter@4 +RtlWow64EnableFsRedirectionEx@8 +ZwWaitForMultipleObjects32@20 +ZwWow64CsrAllocateCaptureBuffer@8 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrAllocateMessagePointer@12 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrCaptureMessageBuffer@16 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrCaptureMessageString@20 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrClientCallServer@16 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrClientConnectToServer@20 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrFreeCaptureBuffer@4 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrGetProcessId@0 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrIdentifyAlertableThread@0 ; available only in 32-bit WoW64 version on 64-bit system +; ZwWow64CsrNewThread@0 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 7 +; ZwWow64CsrSetPriorityClass@8 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 7 +ZwWow64DebuggerCall@20 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64GetNativeSystemInformation@16 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64QueryInformationProcess64@20 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64QueryVirtualMemory64@32 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 10 (Threshold / 1507) +ZwWow64ReadVirtualMemory64@28 ; available only in 32-bit WoW64 version on 64-bit system + +; In Windows Server 2003 SP2 and Windows XP x64 SP2 (WoW64 version) was not added any new symbol + +; This is list of symbols added in Windows Vista +A_SHAFinal@8 +A_SHAInit@4 +A_SHAUpdate@12 +AlpcAdjustCompletionListConcurrencyCount@8 +AlpcFreeCompletionListMessage@8 +AlpcGetCompletionListLastMessageInformation@12 +AlpcGetCompletionListMessageAttributes@8 +AlpcGetHeaderSize@4 +AlpcGetMessageAttribute@8 +AlpcGetMessageFromCompletionList@8 +AlpcGetOutstandingCompletionListMessageCount@4 +AlpcInitializeMessageAttribute@16 +AlpcMaxAllowedMessageLength@0 +AlpcRegisterCompletionList@20 +AlpcRegisterCompletionListWorkerThread@4 +AlpcUnregisterCompletionList@4 +AlpcUnregisterCompletionListWorkerThread@4 +CsrVerifyRegion@8 +EtwDeliverDataBlock@4 +EtwEnumerateProcessRegGuids@12 +EtwEventActivityIdControl@8 +EtwEventEnabled@12 +EtwEventProviderEnabled@20 +EtwEventRegister@16 +EtwEventUnregister@8 +EtwEventWrite@20 +EtwEventWriteEndScenario@20 +EtwEventWriteFull@32 +EtwEventWriteStartScenario@20 +EtwEventWriteString@24 +EtwEventWriteTransfer@28 +EtwLogTraceEvent@12 +EtwNotificationRegister@20 +EtwNotificationUnregister@12 +EtwProcessPrivateLoggerRequest@4 +EtwRegisterSecurityProvider@0 +EtwReplyNotification@4 +EtwSendNotification@20 +EtwSetMark@16 +EtwWriteUMSecurityEvent@16 +EtwpCreateEtwThread@8 +EtwpGetCpuSpeed@8 ; Windows Vista-8 has ABI "EtwpGetCpuSpeed@8", Windows 8.1 and new has ABI "EtwpGetCpuSpeed@4" +; EtwpNotificationThread@0 ; removed in Windows 8.1 +LdrAddLoadAsDataTable@16 ; Windows Vista has ABI "LdrAddLoadAsDataTable@16", Windows 7 and new has ABI "LdrAddLoadAsDataTable@20" +LdrGetFailureData@0 +LdrGetFileNameFromLoadAsDataTable@8 +LdrGetProcedureAddressEx@20 +LdrLoadAlternateResourceModuleEx@20 +LdrQueryModuleServiceTags@12 +LdrRegisterDllNotification@16 +LdrRemoveLoadAsDataTable@16 +LdrResFindResource@36 +LdrResFindResourceDirectory@28 +LdrResRelease@12 +LdrResSearchResource@32 +LdrSetMUICacheType@4 +LdrUnloadAlternateResourceModuleEx@8 +LdrUnregisterDllNotification@4 +LdrVerifyImageMatchesChecksumEx@8 +MD4Final@4 +MD4Init@4 +MD4Update@12 +MD5Final@4 +MD5Init@4 +MD5Update@12 +NtAcquireCMFViewOwnership@12 ; removed in Windows 7 +NtAlpcAcceptConnectPort@36 +NtAlpcCancelMessage@12 +NtAlpcConnectPort@44 +NtAlpcCreatePort@12 +NtAlpcCreatePortSection@24 +NtAlpcCreateResourceReserve@16 +NtAlpcCreateSectionView@12 +NtAlpcCreateSecurityContext@12 +NtAlpcDeletePortSection@12 +NtAlpcDeleteResourceReserve@12 +NtAlpcDeleteSectionView@12 +NtAlpcDeleteSecurityContext@12 +NtAlpcDisconnectPort@8 +NtAlpcImpersonateClientOfPort@12 +NtAlpcOpenSenderProcess@24 +NtAlpcOpenSenderThread@24 +NtAlpcQueryInformation@20 +NtAlpcQueryInformationMessage@24 +NtAlpcRevokeSecurityContext@12 +NtAlpcSendWaitReceivePort@32 +NtAlpcSetInformation@16 +NtCancelIoFileEx@12 +NtCancelSynchronousIoFile@12 +; NtClearAllSavepointsTransaction@4 ; removed in Windows Vista SP1 +; NtClearSavepointTransaction@8 ; removed in Windows Vista SP1 +NtCommitComplete@8 +NtCommitEnlistment@8 +NtCommitTransaction@8 +NtCreateEnlistment@32 +NtCreateKeyTransacted@32 +NtCreatePrivateNamespace@16 +NtCreateResourceManager@28 +NtCreateThreadEx@44 +NtCreateTransaction@40 +NtCreateTransactionManager@24 +NtCreateUserProcess@44 +NtCreateWorkerFactory@40 +NtDeletePrivateNamespace@4 +NtEnumerateTransactionObject@20 +NtFlushInstallUILanguage@8 +NtFlushProcessWriteBuffers@0 +NtFreezeRegistry@4 +NtFreezeTransactions@8 +NtGetMUIRegistryInfo@12 +NtGetNextProcess@20 +NtGetNextThread@24 +NtGetNlsSectionPtr@20 +NtGetNotificationResourceManager@28 +NtInitializeNlsFiles@16 ; Windows Vista has ABI "NtInitializeNlsFiles@12", Windows Vista SP1 and SP2 has ABI "NtInitializeNlsFiles@16", Windows 7 and new has again ABI "NtInitializeNlsFiles@12" +NtIsUILanguageComitted@0 +; NtListTransactions@12 ; removed in Windows Vista SP1 +NtMapCMFModule@24 +; NtMarshallTransaction@24 ; removed in Windows Vista SP1 +NtOpenEnlistment@20 +NtOpenKeyTransacted@16 +NtOpenPrivateNamespace@16 +NtOpenResourceManager@20 +NtOpenSession@12 +NtOpenTransaction@20 +NtOpenTransactionManager@24 +NtPrePrepareComplete@8 +NtPrePrepareEnlistment@8 +NtPrepareComplete@8 +NtPrepareEnlistment@8 +NtPropagationComplete@16 +NtPropagationFailed@12 +; NtPullTransaction@28 ; removed in Windows Vista SP1 +NtQueryInformationEnlistment@20 +NtQueryInformationResourceManager@20 +NtQueryInformationTransaction@20 +NtQueryInformationTransactionManager@20 +NtQueryInformationWorkerFactory@20 +NtQueryLicenseValue@20 +NtReadOnlyEnlistment@8 +NtRecoverEnlistment@8 +NtRecoverResourceManager@4 +NtRecoverTransactionManager@4 +NtRegisterProtocolAddressInformation@20 +NtReleaseCMFViewOwnership@0 ; removed in Windows 7 +NtReleaseWorkerFactoryWorker@4 +NtRemoveIoCompletionEx@24 +NtRollbackComplete@8 +NtRollbackEnlistment@8 +; NtRollbackSavepointTransaction@8 ; removed in Windows Vista SP1 +NtRollbackTransaction@8 +NtRollforwardTransactionManager@8 +; NtSavepointComplete@8 ; removed in Windows Vista SP1 +; NtSavepointTransaction@12 ; removed in Windows Vista SP1 +NtSetInformationEnlistment@16 +NtSetInformationResourceManager@16 +NtSetInformationTransaction@16 +NtSetInformationTransactionManager@16 +NtSetInformationWorkerFactory@16 +NtShutdownWorkerFactory@8 +NtSinglePhaseReject@8 +; NtStartTm@0 ; removed in Windows Vista SP1 +NtThawRegistry@0 +NtThawTransactions@0 +NtTraceControl@24 +NtWaitForWorkViaWorkerFactory@8 ; Windows Vista-7 has ABI "NtWaitForWorkViaWorkerFactory@8", Windows 8 has ABI "NtWaitForWorkViaWorkerFactory@16", Windows 8.1 and new has ABI "NtWaitForWorkViaWorkerFactory@20" +NtWorkerFactoryWorkerReady@4 +NtWow64CallFunction64@28 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64CsrVerifyRegion@8 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64WriteVirtualMemory64@28 ; available only in 32-bit WoW64 version on 64-bit system +; ResCCloseRuntimeView@4 ; removed in Windows Vista SP1 +; ResCCompareCacheIDs@8 ; removed in Windows Vista SP1 +; ResCCreateCultureMap@12 ; removed in Windows Vista SP1 +; ResCCreateDefaultCultureMap@4 ; removed in Windows Vista SP1 +; ResCCreateRuntimeView@16 ; removed in Windows Vista SP1 +; ResCDirectoryCreateAndPopulate@12 ; removed in Windows Vista SP1 +; ResCDirectoryCreateMapping@16 ; removed in Windows Vista SP1 +; ResCDirectoryFree@4 ; removed in Windows Vista SP1 +; ResCDirectoryGetBaseFolder@4 ; removed in Windows Vista SP1 +; ResCDirectoryGetEntry@24 ; removed in Windows Vista SP1 +; ResCDirectoryGetEntryCopy@28 ; removed in Windows Vista SP1 +; ResCDirectoryGetEntryEx@32 ; removed in Windows Vista SP1 +; ResCDirectoryGetEntryExCopy@36 ; removed in Windows Vista SP1 +; ResCDirectoryGetEntryIndex@24 ; removed in Windows Vista SP1 +; ResCDirectoryGetEntryIndexEx@32 ; removed in Windows Vista SP1 +; ResCDirectoryGetFirstEntry@20 ; removed in Windows Vista SP1 +; ResCDirectoryGetFirstEntryIndex@20 ; removed in Windows Vista SP1 +; ResCDirectoryGetSegmentIndex@8 ; removed in Windows Vista SP1 +; ResCDirectoryGetSegmentName@8 ; removed in Windows Vista SP1 +; ResCDirectoryLoadFixedSize@4 ; removed in Windows Vista SP1 +; ResCDirectoryOpenMapping@8 ; removed in Windows Vista SP1 +; ResCFreeCultureMap@4 ; removed in Windows Vista SP1 +; ResCGetCacheIndices@16 ; removed in Windows Vista SP1 +; ResCGetCultureID@8 ; removed in Windows Vista SP1 +; ResCGetCultureIndex@8 ; removed in Windows Vista SP1 +; ResCGetCultureName@16 ; removed in Windows Vista SP1 +; ResCGetHighestCacheIndex@4 ; removed in Windows Vista SP1 +; ResCGetHighestConsecutiveCacheIndex@12 ; removed in Windows Vista SP1 +; ResCGetIndexedName@20 ; removed in Windows Vista SP1 +; ResCGetName@16 ; removed in Windows Vista SP1 +; ResCGetRegistryBaseFolder@16 ; removed in Windows Vista SP1 +; ResCGetRegistryConfig@8 ; removed in Windows Vista SP1 +; ResCGetRegistryLatestIndex@8 ; removed in Windows Vista SP1 +; ResCGetRegistryMappingPrefix@16 ; removed in Windows Vista SP1 +; ResCGetRegistryStatus@8 ; removed in Windows Vista SP1 +; ResCGetSubIndexedName@24 ; removed in Windows Vista SP1 +; ResCInitRuntimeView@8 ; removed in Windows Vista SP1 +; ResCInitRuntimeViewEx@12 ; removed in Windows Vista SP1 +; ResCKeDirectoryOpenMapping@20 ; removed in Windows Vista SP1 +; ResCKeGetBaseFolder@8 ; removed in Windows Vista SP1 +; ResCKeGetCacheIndices@8 ; removed in Windows Vista SP1 +; ResCKeInitRuntimeViewEx@4 ; removed in Windows Vista SP1 +; ResCKeSegmentOpenMapping@8 ; removed in Windows Vista SP1 +; ResCLoadCultureMap@4 ; removed in Windows Vista SP1 +; ResCOpenRegistryKey@24 ; removed in Windows Vista SP1 +; ResCOpenRuntimeView@8 ; removed in Windows Vista SP1 +; ResCReleaseInitMutex@4 ; removed in Windows Vista SP1 +; ResCReloadCultureMap@4 ; removed in Windows Vista SP1 +; ResCRequestInitMutex@8 ; removed in Windows Vista SP1 +; ResCRuntimeGetAnySegmentData@20 ; removed in Windows Vista SP1 +; ResCRuntimeGetCultureID@8 ; removed in Windows Vista SP1 +; ResCRuntimeGetEntryData@8 ; removed in Windows Vista SP1 +; ResCRuntimeGetEntryDataEx@12 ; removed in Windows Vista SP1 +; ResCRuntimeGetResourceData@32 ; removed in Windows Vista SP1 +; ResCRuntimeGetResourceDataEx@36 ; removed in Windows Vista SP1 +; ResCRuntimeGetResourceDataForCulture@32 ; removed in Windows Vista SP1 +; ResCRuntimeGetSegmentData@16 ; removed in Windows Vista SP1 +; ResCRuntimeGetSegmentDataEx@20 ; removed in Windows Vista SP1 +; ResCRuntimeViewLoadCultureMap@4 ; removed in Windows Vista SP1 +; ResCSaveRegistryBaseFolder@8 ; removed in Windows Vista SP1 +; ResCSaveRegistryConfig@8 ; removed in Windows Vista SP1 +; ResCSaveRegistryLatestIndex@8 ; removed in Windows Vista SP1 +; ResCSaveRegistryStatus@8 ; removed in Windows Vista SP1 +; ResCSegmentCreateAndPopulate@12 ; removed in Windows Vista SP1 +; ResCSegmentCreateMapping@20 ; removed in Windows Vista SP1 +; ResCSegmentFree@4 ; removed in Windows Vista SP1 +; ResCSegmentGetData@8 ; removed in Windows Vista SP1 +; ResCSegmentLoadFixedSize@4 ; removed in Windows Vista SP1 +; ResCSegmentOpenMapping@8 ; removed in Windows Vista SP1 +; ResCSegmentReserveMapping@16 ; removed in Windows Vista SP1 +; ResCSetCacheSecurityType@4 ; removed in Windows Vista SP1 +RtlAcquireSRWLockExclusive@4 +RtlAcquireSRWLockShared@4 +RtlAddMandatoryAce@24 +RtlAddSIDToBoundaryDescriptor@8 +RtlAllocateMemoryBlockLookaside@12 +RtlAllocateMemoryZone@12 +RtlBarrier@8 +RtlBarrierForDelete@8 +RtlCleanUpTEBLangLists@0 +RtlCloneUserProcess@20 +RtlCmDecodeMemIoResource@8 +RtlCmEncodeMemIoResource@24 +RtlCommitDebugInfo@8 +RtlCompareAltitudes@8 +RtlCompareUnicodeStrings@20 +RtlConnectToSm@16 +RtlConvertLCIDToString@20 +RtlCreateBoundaryDescriptor@8 +RtlCreateEnvironmentEx@12 +RtlCreateMemoryBlockLookaside@20 +RtlCreateMemoryZone@12 +RtlCreateProcessParametersEx@44 +RtlCreateServiceSid@12 +RtlCreateUserStack@24 +RtlCultureNameToLCID@8 +RtlDeCommitDebugInfo@12 +RtlDeleteBarrier@4 +RtlDeleteBoundaryDescriptor@4 +RtlDestroyMemoryBlockLookaside@4 +RtlDestroyMemoryZone@4 +RtlExitUserProcess@4 +RtlExpandEnvironmentStrings@24 +RtlExtendMemoryBlockLookaside@8 +RtlExtendMemoryZone@8 +RtlFindAceByType@12 +RtlFindClosestEncodableLength@12 +RtlFlsAlloc@8 +RtlFlsFree@4 +RtlFreeMemoryBlockLookaside@8 +RtlFreeUserStack@4 +RtlGetCurrentTransaction@0 +RtlGetFileMUIPath@28 +RtlGetIntegerAtom@8 +RtlGetParentLocaleName@16 +RtlGetProductInfo@20 +RtlGetSystemPreferredUILanguages@20 +RtlGetThreadLangIdByIndex@16 +RtlGetThreadPreferredUILanguages@16 +RtlGetUILanguageInfo@20 +RtlGetUnloadEventTraceEx@12 +RtlGetUserPreferredUILanguages@20 +RtlHeapTrkInitialize@4 +RtlIdnToAscii@20 +RtlIdnToNameprepUnicode@20 +RtlIdnToUnicode@20 +RtlImpersonateSelfEx@12 +RtlInitBarrier@12 +RtlInitializeConditionVariable@4 +RtlInitializeCriticalSectionEx@12 +RtlInitializeNtUserPfn@24 +RtlInitializeSRWLock@4 +RtlIoDecodeMemIoResource@16 +RtlIoEncodeMemIoResource@40 +RtlIsCurrentThreadAttachExempt@0 +RtlIsNormalizedString@16 +RtlIsValidLocaleName@8 +RtlLCIDToCultureName@8 +RtlLcidToLocaleName@16 +RtlLocaleNameToLcid@12 +RtlLockCurrentThread@0 +RtlLockMemoryBlockLookaside@4 +RtlLockMemoryZone@4 +RtlLockModuleSection@4 +RtlNormalizeString@20 +RtlOwnerAcesPresent@4 +RtlProcessFlsData@4 ; Windows Vista-10 has ABI "RtlProcessFlsData@4", Windows 10 May 2019 Update (19H1 / 1903) and new has ABI "RtlProcessFlsData@8" +RtlQueryActivationContextApplicationSettings@28 +RtlQueryCriticalSectionOwner@4 ; Windows Vista-8.1 has ABI "RtlQueryCriticalSectionOwner@4", Windows 10 and new has ABI "RtlQueryCriticalSectionOwner@8" +RtlQueryDynamicTimeZoneInformation@4 +RtlQueryElevationFlags@4 +RtlQueryEnvironmentVariable@24 +RtlQueryModuleInformation@12 +RtlRegisterThreadWithCsrss@0 +RtlReleaseSRWLockExclusive@4 +RtlReleaseSRWLockShared@4 +RtlRemovePrivileges@12 +RtlReportException@12 +RtlResetMemoryBlockLookaside@4 +RtlResetMemoryZone@4 +RtlRetrieveNtUserPfn@12 +RtlRunOnceBeginInitialize@12 +RtlRunOnceComplete@12 +RtlRunOnceExecuteOnce@16 +RtlRunOnceInitialize@4 +RtlSendMsgToSm@8 +RtlSetCurrentTransaction@4 +RtlSetDynamicTimeZoneInformation@4 +RtlSetEnvironmentVar@20 +RtlSetProcessDebugInformation@12 +RtlSetThreadPreferredUILanguages@12 +RtlSidDominates@12 +RtlSidEqualLevel@12 +RtlSidHashInitialize@12 +RtlSidHashLookup@8 +RtlSidIsHigherLevel@12 +RtlSleepConditionVariableCS@12 +RtlSleepConditionVariableSRW@16 +RtlTestBit@8 +RtlTryAcquirePebLock@0 +RtlUnlockCurrentThread@0 +RtlUnlockMemoryBlockLookaside@4 +RtlUnlockMemoryZone@4 +RtlUnlockModuleSection@4 +RtlUpdateClonedCriticalSection@4 +RtlUpdateClonedSRWLock@8 +RtlUserThreadStart@8 +RtlWakeAllConditionVariable@4 +RtlWakeConditionVariable@4 +RtlWerpReportException@16 ; Windows Vista-8 has ABI "RtlWerpReportException@16", Windows 8.1 and new has ABI "RtlWerpReportException@24" +RtlWow64CallFunction64@28 +RtlWow64LogMessageInEventLogger@12 ; available only in 32-bit WoW64 version on 64-bit system +RtlpCleanupRegistryKeys@0 +RtlpConvertCultureNamesToLCIDs@8 +RtlpConvertLCIDsToCultureNames@8 +RtlpCreateProcessRegistryInfo@4 +RtlpGetLCIDFromLangInfoNode@12 +RtlpGetNameFromLangInfoNode@12 +RtlpGetSystemDefaultUILanguage@4 ; Windows Vista has ABI "RtlpGetSystemDefaultUILanguage@4", Windows 7 and new has ABI "RtlpGetSystemDefaultUILanguage@8" +RtlpGetUserOrMachineUILanguage4NLS@12 +RtlpInitializeLangRegistryInfo@4 +RtlpIsQualifiedLanguage@12 +RtlpLoadMachineUIByPolicy@12 +RtlpLoadUserUIByPolicy@12 +RtlpMuiFreeLangRegistryInfo@4 +RtlpMuiRegCreateRegistryInfo@0 +RtlpMuiRegFreeRegistryInfo@8 +RtlpMuiRegLoadRegistryInfo@8 +RtlpQueryDefaultUILanguage@8 +RtlpQueryProcessDebugInformationRemote@4 ; available only in 32-bit WoW64 version on 64-bit system, since Windows 10 Creators Update (Redstone 2 / 1703) available also in non-WoW64 version +RtlpRefreshCachedUILanguage@8 +RtlpSetInstallLanguage@8 +RtlpSetPreferredUILanguages@12 +RtlpSetUserPreferredUILanguages@12 +RtlpVerifyAndCommitUILanguageSettings@4 +ShipAssert@8 +ShipAssertGetBufferInfo@8 +ShipAssertMsgA@12 +ShipAssertMsgW@12 +TpAllocAlpcCompletion@20 +TpAllocCleanupGroup@4 +TpAllocIoCompletion@20 +TpAllocPool@8 +TpAllocTimer@16 +TpAllocWait@16 +TpAllocWork@16 +TpCallbackLeaveCriticalSectionOnCompletion@8 +TpCallbackMayRunLong@4 +TpCallbackReleaseMutexOnCompletion@8 +TpCallbackReleaseSemaphoreOnCompletion@12 +TpCallbackSetEventOnCompletion@8 +TpCallbackUnloadDllOnCompletion@8 +TpCancelAsyncIoOperation@4 +TpCaptureCaller@4 +TpCheckTerminateWorker@4 +TpDbgDumpHeapUsage@12 +TpDbgSetLogRoutine@4 +TpDisassociateCallback@4 +TpIsTimerSet@4 +TpPostWork@4 +TpReleaseAlpcCompletion@4 +TpReleaseCleanupGroup@4 +TpReleaseCleanupGroupMembers@12 +TpReleaseIoCompletion@4 +TpReleasePool@4 +TpReleaseTimer@4 +TpReleaseWait@4 +TpReleaseWork@4 +TpSetPoolMaxThreads@8 +TpSetPoolMinThreads@8 +TpSetTimer@16 +TpSetWait@12 +TpSimpleTryPost@12 +TpStartAsyncIoOperation@4 +TpWaitForAlpcCompletion@4 +TpWaitForIoCompletion@8 +TpWaitForTimer@8 +TpWaitForWait@8 +TpWaitForWork@8 +WerCheckEventEscalation@8 ; removed in Windows 7 +WerReportSQMEvent@16 ; Windows Vista has ABI "WerReportSQMEvent@12", Windows 7 and new has ABI "WerReportSQMEvent@16" +WerReportWatsonEvent@16 ; removed in Windows 7 +WinSqmAddToStream@16 +WinSqmEndSession@4 +WinSqmEventEnabled@8 +WinSqmEventWrite@12 +WinSqmIsOptedIn@0 +WinSqmSetString@12 +WinSqmStartSession@12 +ZwAcquireCMFViewOwnership@12 ; removed in Windows 7 +ZwAlpcAcceptConnectPort@36 +ZwAlpcCancelMessage@12 +ZwAlpcConnectPort@44 +ZwAlpcCreatePort@12 +ZwAlpcCreatePortSection@24 +ZwAlpcCreateResourceReserve@16 +ZwAlpcCreateSectionView@12 +ZwAlpcCreateSecurityContext@12 +ZwAlpcDeletePortSection@12 +ZwAlpcDeleteResourceReserve@12 +ZwAlpcDeleteSectionView@12 +ZwAlpcDeleteSecurityContext@12 +ZwAlpcDisconnectPort@8 +ZwAlpcImpersonateClientOfPort@12 +ZwAlpcOpenSenderProcess@24 +ZwAlpcOpenSenderThread@24 +ZwAlpcQueryInformation@20 +ZwAlpcQueryInformationMessage@24 +ZwAlpcRevokeSecurityContext@12 +ZwAlpcSendWaitReceivePort@32 +ZwAlpcSetInformation@16 +ZwCancelIoFileEx@12 +ZwCancelSynchronousIoFile@12 +; ZwClearAllSavepointsTransaction@4 ; removed in Windows Vista SP1 +; ZwClearSavepointTransaction@8 ; removed in Windows Vista SP1 +ZwCommitComplete@8 +ZwCommitEnlistment@8 +ZwCommitTransaction@8 +ZwCreateEnlistment@32 +ZwCreateKeyTransacted@32 +ZwCreatePrivateNamespace@16 +ZwCreateResourceManager@28 +ZwCreateThreadEx@44 +ZwCreateTransaction@40 +ZwCreateTransactionManager@24 +ZwCreateUserProcess@44 +ZwCreateWorkerFactory@40 +ZwDeletePrivateNamespace@4 +ZwEnumerateTransactionObject@20 +ZwFlushInstallUILanguage@8 +ZwFlushProcessWriteBuffers@0 +ZwFreezeRegistry@4 +ZwFreezeTransactions@8 +ZwGetMUIRegistryInfo@12 +ZwGetNextProcess@20 +ZwGetNextThread@24 +ZwGetNlsSectionPtr@20 +ZwGetNotificationResourceManager@28 +ZwInitializeNlsFiles@16 ; Windows Vista has ABI "ZwInitializeNlsFiles@12", Windows Vista SP1 and SP2 has ABI "ZwInitializeNlsFiles@16", Windows 7 and new has again ABI "ZwInitializeNlsFiles@12" +ZwIsUILanguageComitted@0 +; ZwListTransactions@12 ; removed in Windows Vista SP1 +ZwMapCMFModule@24 +; ZwMarshallTransaction@24 ; removed in Windows Vista SP1 +ZwOpenEnlistment@20 +ZwOpenKeyTransacted@16 +ZwOpenPrivateNamespace@16 +ZwOpenResourceManager@20 +ZwOpenSession@12 +ZwOpenTransaction@20 +ZwOpenTransactionManager@24 +ZwPrePrepareComplete@8 +ZwPrePrepareEnlistment@8 +ZwPrepareComplete@8 +ZwPrepareEnlistment@8 +ZwPropagationComplete@16 +ZwPropagationFailed@12 +; ZwPullTransaction@28 ; removed in Windows Vista SP1 +ZwQueryInformationEnlistment@20 +ZwQueryInformationResourceManager@20 +ZwQueryInformationTransaction@20 +ZwQueryInformationTransactionManager@20 +ZwQueryInformationWorkerFactory@20 +ZwQueryLicenseValue@20 +ZwReadOnlyEnlistment@8 +ZwRecoverEnlistment@8 +ZwRecoverResourceManager@4 +ZwRecoverTransactionManager@4 +ZwRegisterProtocolAddressInformation@20 +ZwReleaseCMFViewOwnership@0 ; removed in Windows 7 +ZwReleaseWorkerFactoryWorker@4 +ZwRemoveIoCompletionEx@24 +ZwRollbackComplete@8 +ZwRollbackEnlistment@8 +; ZwRollbackSavepointTransaction@8 ; removed in Windows Vista SP1 +ZwRollbackTransaction@8 +ZwRollforwardTransactionManager@8 +; ZwSavepointComplete@8 ; removed in Windows Vista SP1 +; ZwSavepointTransaction@12 ; removed in Windows Vista SP1 +ZwSetInformationEnlistment@16 +ZwSetInformationResourceManager@16 +ZwSetInformationTransaction@16 +ZwSetInformationTransactionManager@16 +ZwSetInformationWorkerFactory@16 +ZwShutdownWorkerFactory@8 +ZwSinglePhaseReject@8 +; ZwStartTm@0 ; removed in Windows Vista SP1 +ZwThawRegistry@0 +ZwThawTransactions@0 +ZwTraceControl@24 +ZwWaitForWorkViaWorkerFactory@8 ; Windows Vista-7 has ABI "ZwWaitForWorkViaWorkerFactory@8", Windows 8 has ABI "ZwWaitForWorkViaWorkerFactory@16", Windows 8.1 and new has ABI "ZwWaitForWorkViaWorkerFactory@20" +ZwWorkerFactoryWorkerReady@4 +ZwWow64CallFunction64@28 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64CsrVerifyRegion@8 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64WriteVirtualMemory64@28 ; available only in 32-bit WoW64 version on 64-bit system +; _ResCGetRegistryFlags@16 ; removed in Windows Vista SP1 +; _ResCMatchFlags@12 ; removed in Windows Vista SP1 +; _ResCSaveRegistryFlags@16 ; removed in Windows Vista SP1 + +; This is list of symbols added in Windows Vista SP1 +LdrpResGetMappingSize@16 +LdrpResGetRCConfig@20 ; removed in Windows 7 +LdrpResGetResourceDirectory@20 +NtRenameTransactionManager@8 +NtReplacePartitionUnit@12 +NtdllDefWindowProc_A@16 ; same as user32.DefWindowProcA +NtdllDefWindowProc_W@16 ; same as user32.DefWindowProcW +NtdllDialogWndProc_A@16 ; same as user32.DefDlgProcA +NtdllDialogWndProc_W@16 ; same as user32.DefDlgProcW +RtlDeregisterSecureMemoryCacheCallback@4 +RtlInitializeExceptionChain@4 +RtlNumberOfSetBitsUlongPtr@4 +RtlpCheckDynamicTimeZoneInformation@8 +ZwRenameTransactionManager@8 +ZwReplacePartitionUnit@12 + +; This is list of symbols added in Windows Vista SP2 +RtlpInterlockedPopEntrySeqSListEnd@0 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 7 +RtlpInterlockedPopEntrySeqSListFault@0 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 7 +RtlpInterlockedPopEntrySeqSListResume@0 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 7 + +; This is list of symbols added in Windows 7 +AlpcRundownCompletionList@4 +EtwEventWriteEx@40 +EtwEventWriteNoRegistration@16 +EvtIntReportAuthzEventAndSourceAsync@44 +EvtIntReportEventAndSourceAsync@44 +LdrGetDllHandleByMapping@8 +LdrGetDllHandleByName@12 +LdrResGetRCConfig@20 +LdrRscIsTypeExist@16 +LdrWx86FormatVirtualImage@12 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 10 Creators Update (Redstone 2 / 1703) +NtAllocateReserveObject@12 +NtCreateProfileEx@40 +NtDisableLastKnownGood@0 +NtDrawText@4 +NtEnableLastKnownGood@0 +NtNotifyChangeSession@32 +NtOpenKeyEx@16 +NtOpenKeyTransactedEx@20 +NtQuerySecurityAttributesToken@24 +NtQuerySystemInformationEx@24 +NtQueueApcThreadEx@24 +NtSerializeBoot@0 +NtSetIoCompletionEx@24 +NtSetTimerEx@16 +NtUmsThreadYield@4 +NtWow64GetCurrentProcessorNumberEx@4 ; available only in 32-bit WoW64 version on 64-bit system +NtWow64InterlockedPopEntrySList@4 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 8 +RtlAcquireReleaseSRWLockExclusive@4 +RtlAddIntegrityLabelToBoundaryDescriptor@8 +RtlContractHashTable@4 +RtlCopyExtendedContext@12 +RtlCreateHashTable@12 +RtlCreateProcessReflection@24 +RtlCreateVirtualAccountSid@16 +RtlDeleteHashTable@4 +RtlDetectHeapLeaks@0 +RtlDisableThreadProfiling@4 +RtlEnableThreadProfiling@20 +RtlEndEnumerationHashTable@8 +RtlEndWeakEnumerationHashTable@8 +RtlEnumerateEntryHashTable@8 +RtlEthernetAddressToStringA@8 +RtlEthernetAddressToStringW@8 +RtlEthernetStringToAddressA@12 +RtlEthernetStringToAddressW@12 +RtlExpandHashTable@4 +RtlFillMemoryUlonglong@16 +RtlGetCurrentProcessorNumberEx@4 +RtlGetEnabledExtendedFeatures@8 +RtlGetExtendedContextLength@8 +RtlGetExtendedFeaturesMask@4 +RtlGetFullPathName_UEx@20 +RtlGetLocaleFileMappingAddress@12 +RtlGetNextEntryHashTable@8 +RtlGetProcessPreferredUILanguages@16 +RtlInitEnumerationHashTable@8 +RtlInitWeakEnumerationHashTable@8 +RtlInitializeExtendedContext@12 +RtlInsertEntryHashTable@16 +RtlInterlockedClearBitRun@12 +RtlInterlockedSetBitRun@12 +RtlIsNameInExpression@16 +RtlKnownExceptionFilter@4 +RtlLoadString@32 +RtlLocateExtendedFeature@12 +RtlLocateLegacyContext@8 +RtlLookupEntryHashTable@12 +RtlQueryPerformanceCounter@4 +RtlQueryPerformanceFrequency@4 +RtlQueryThreadProfiling@8 +RtlReadThreadProfilingData@12 +RtlRemoveEntryHashTable@12 +RtlReplaceSidInSd@16 +RtlReportSilentProcessExit@8 +RtlReportSqmEscalation@24 +RtlSetExtendedFeaturesMask@12 +RtlSetProcessPreferredUILanguages@12 +RtlSetUserCallbackExceptionFilter@4 ; available only in 32-bit WoW64 version on 64-bit system +RtlTryAcquireSRWLockExclusive@4 +RtlTryAcquireSRWLockShared@4 +RtlUTF8ToUnicodeN@20 +RtlUnicodeToUTF8N@20 +RtlWeaklyEnumerateEntryHashTable@8 +SbExecuteProcedure@20 +SbSelectProcedure@16 +TpAllocAlpcCompletionEx@20 +TpAlpcRegisterCompletionList@4 +TpAlpcUnregisterCompletionList@4 +TpCallbackIndependent@4 +TpDbgGetFreeInfo@8 ; removed in Windows 8 +TpDisablePoolCallbackChecks@4 +TpPoolFreeUnusedNodes@4 ; removed in Windows 8 +TpQueryPoolStackInformation@8 +TpSetDefaultPoolMaxThreads@4 +TpSetDefaultPoolStackInformation@4 +TpSetPoolStackInformation@8 +WinSqmAddToAverageDWORD@12 +WinSqmAddToStreamEx@20 +WinSqmCheckEscalationAddToStreamEx@20 +WinSqmCheckEscalationSetDWORD64@20 +WinSqmCheckEscalationSetDWORD@16 +WinSqmCheckEscalationSetString@16 +WinSqmCommonDatapointDelete@4 +WinSqmCommonDatapointSetDWORD64@16 +WinSqmCommonDatapointSetDWORD@12 +WinSqmCommonDatapointSetStreamEx@20 +WinSqmCommonDatapointSetString@12 +WinSqmGetEscalationRuleStatus@8 +WinSqmGetInstrumentationProperty@16 +WinSqmIncrementDWORD@12 +WinSqmIsOptedInEx@4 +WinSqmSetDWORD64@16 +WinSqmSetDWORD@12 +WinSqmSetEscalationInfo@16 +WinSqmSetIfMaxDWORD@12 +WinSqmSetIfMinDWORD@12 +ZwAllocateReserveObject@12 +ZwCreateProfileEx@40 +ZwDisableLastKnownGood@0 +ZwDrawText@4 +ZwEnableLastKnownGood@0 +ZwNotifyChangeSession@32 +ZwOpenKeyEx@16 +ZwOpenKeyTransactedEx@20 +ZwQuerySecurityAttributesToken@24 +ZwQuerySystemInformationEx@24 +ZwQueueApcThreadEx@24 +ZwSerializeBoot@0 +ZwSetIoCompletionEx@24 +ZwSetTimerEx@16 +ZwUmsThreadYield@4 +ZwWow64GetCurrentProcessorNumberEx@4 ; available only in 32-bit WoW64 version on 64-bit system +ZwWow64InterlockedPopEntrySList@4 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 10 (Threshold / 1507) + +; This is list of ordinal-only symbols added in Windows 7 +; Symbol names are taken from: +; https://www.geoffchappell.com/studies/windows/win32/ntdll/history/ords61.htm +; AitLogFeatureUsageByApp@4 @1 NONAME ; removed in Windows 10 (Threshold / 1507) +; AitFireParentUsageEvent@16 @2 NONAME ; removed in Windows 10 (Threshold / 1507) +; SbtLogSystemUsageByParent@32 @3 NONAME ; removed in Windows 10 (Threshold / 1507) +; SbtLogSystemUsageByStack@28 @4 NONAME ; FIXME: Windows 7 has ABI @28, Windows 8 and 8.1 has ABI @20, removed in Windows 10 (Threshold / 1507) +; SbtDisableForCurrentProcess@0 @5 NONAME ; removed in Windows 10 (Threshold / 1507) +; SbtLogDllMapping@8 @6 NONAME ; FIXME: Windows 7 has ABI @8, Windows 8 and 8.1 has ABI @0, removed in Windows 10 (Threshold / 1507) +; SbtLogExeInitializing@0 @7 NONAME ; removed in Windows 10 (Threshold / 1507) +; RtlDispatchAPC@12 @8 NONAME ; since Windows 10 Creators Update (Redstone 2 / 1703) available as normal symbol + +; This is list of symbols added in Windows 7 SP1 +RtlCopyContext@12 + +; This is list of symbols added in Windows 8 +ApiSetQueryApiSetPresence@8 +EtwEventSetInformation@20 +LdrAddDllDirectory@8 +LdrAppxHandleIntegrityFailure@4 +LdrGetDllDirectory@4 +LdrGetDllFullName@8 +LdrGetDllPath@16 +LdrGetProcedureAddressForCaller@24 +LdrProcessRelocationBlockEx@20 +LdrQueryOptionalDelayLoadedAPI@16 +LdrRemoveDllDirectory@4 +LdrResolveDelayLoadedAPI@24 +LdrResolveDelayLoadsFromDll@12 +LdrSetDefaultDllDirectories@4 +LdrSetDllDirectory@4 +LdrStandardizeSystemPath@4 +LdrSystemDllInitBlock DATA +NtAddAtomEx@16 +NtAdjustTokenClaimsAndDeviceGroups@64 +NtAlertThreadByThreadId@4 +NtAlpcConnectPortEx@44 +NtAssociateWaitCompletionPacket@32 +NtCancelWaitCompletionPacket@8 +NtCreateDirectoryObjectEx@20 +NtCreateIRTimer@12 ; Windows 8-10 has ABI "NtCreateIRTimer@8", Windows 10 Creators Update (Redstone 2 / 1703) and new has ABI "NtCreateIRTimer@12" +NtCreateLowBoxToken@36 +NtCreateTokenEx@68 +NtCreateWaitCompletionPacket@12 +NtCreateWnfStateName@28 +NtDeleteWnfStateData@8 +NtDeleteWnfStateName@4 +NtFilterBootOption@20 +NtFilterTokenEx@56 +NtFlushBuffersFileEx@20 +NtGetCachedSigningLevel@24 +NtQueryWnfStateData@24 +NtQueryWnfStateNameInformation@20 +NtSetCachedSigningLevel@20 +NtSetIRTimer@8 +NtSetInformationVirtualMemory@24 +NtSubscribeWnfStateChange@16 +NtUnmapViewOfSectionEx@12 +NtUnsubscribeWnfStateChange@4 +NtUpdateWnfStateData@28 +NtWaitForAlertByThreadId@8 +; NtWaitForWnfNotifications@8 ; removed in Windows 8.1 +; NtWow64AllocateVirtualMemory64@28 ; available only in 32-bit WoW64 version on 64-bit system +RtlAddResourceAttributeAce@28 +RtlAddScopedPolicyIDAce@20 +RtlAllocateWnfSerializationGroup@0 +RtlAppxIsFileOwnedByTrustedInstaller@8 +RtlAvlInsertNodeEx@16 +RtlAvlRemoveNode@8 +RtlCanonicalizeDomainName@12 +RtlCheckPortableOperatingSystem@4 +RtlCheckTokenCapability@12 +RtlCheckTokenMembership@12 +RtlCheckTokenMembershipEx@16 +RtlClearBit@8 +RtlCopyBitMap@12 +RtlCrc32@12 +RtlCrc64@16 +RtlCreateHashTableEx@16 +RtlDecompressBufferEx@28 +RtlDeleteElementGenericTableAvlEx@8 +RtlEqualWnfChangeStamps@8 +RtlExtractBitMap@16 +RtlFlushHeaps@0 +RtlGetAppContainerNamedObjectPath@16 +RtlGetExePath@8 +RtlGetSearchPath@4 +RtlGetSystemTimePrecise@0 +RtlInterlockedPushListSListEx@16 +RtlIsCapabilitySid@4 +RtlIsPackageSid@4 +RtlIsUntrustedObject@12 +RtlLengthSidAsUnicodeString@8 +RtlNumberOfClearBitsInRange@12 +RtlNumberOfSetBitsInRange@12 +RtlPublishWnfStateData@24 +RtlQueryPackageIdentity@24 +RtlQueryRegistryValuesEx@20 +RtlQueryUnbiasedInterruptTime@4 +RtlQueryValidationRunlevel@4 +RtlQueryWnfMetaNotification@20 +RtlQueryWnfStateData@24 +RtlQueryWnfStateDataWithExplicitScope@28 +RtlRbInsertNodeEx@16 +RtlRbRemoveNode@8 +RtlRegisterForWnfMetaNotification@24 +RtlReleasePath@4 +RtlResetNtUserPfn@0 +RtlSetBit@8 +RtlSetPortableOperatingSystem@4 +RtlSetSearchPathMode@4 +RtlSubscribeWnfStateChangeNotification@36 +RtlTestAndPublishWnfStateData@28 +RtlTryConvertSRWLockSharedToExclusiveOrRelease@4 +RtlUnsubscribeWnfNotificationWaitForCompletion@4 +RtlUnsubscribeWnfNotificationWithCompletionCallback@12 +RtlUnsubscribeWnfStateChangeNotification@4 +RtlWaitForWnfMetaNotification@24 +RtlWaitOnAddress@16 +RtlWakeAddressAll@4 +RtlWakeAddressAllNoFence@4 +RtlWakeAddressSingle@4 +RtlWakeAddressSingleNoFence@4 +RtlWnfCompareChangeStamp@8 ; removed in Windows 11 2024 Update (Hudson Valley / 24H2) +RtlWnfDllUnloadCallback@4 +RtlpConvertAbsoluteToRelativeSecurityAttribute@12 +RtlpConvertRelativeToAbsoluteSecurityAttribute@16 +RtlpFreezeTimeBias DATA +RtlpMergeSecurityAttributeInformation@16 +; RtlpWnfNotificationThread@16 ; removed in Windows 8.1 +TpAllocJobNotification@20 +TpCallbackDetectedUnrecoverableError@4 +TpReleaseJobNotification@4 +TpSetPoolThreadBasePriority@8 +TpSetTimerEx@16 +TpSetWaitEx@16 +TpTimerOutstandingCallbackCount@4 +TpWaitForJobNotification@4 +WinSqmIsSessionDisabled@4 +ZwAddAtomEx@16 +ZwAdjustTokenClaimsAndDeviceGroups@64 +ZwAlertThreadByThreadId@4 +ZwAlpcConnectPortEx@44 +ZwAssociateWaitCompletionPacket@32 +ZwCancelWaitCompletionPacket@8 +ZwCreateDirectoryObjectEx@20 +ZwCreateIRTimer@12 ; Windows 8-10 has ABI "ZwCreateIRTimer@8", Windows 10 Creators Update (Redstone 2 / 1703) and new has ABI "ZwCreateIRTimer@12" +ZwCreateLowBoxToken@36 +ZwCreateTokenEx@68 +ZwCreateWaitCompletionPacket@12 +ZwCreateWnfStateName@28 +ZwDeleteWnfStateData@8 +ZwDeleteWnfStateName@4 +ZwFilterBootOption@20 +ZwFilterTokenEx@56 +ZwFlushBuffersFileEx@20 +ZwGetCachedSigningLevel@24 +ZwQueryWnfStateData@24 +ZwQueryWnfStateNameInformation@20 +ZwSetCachedSigningLevel@20 +ZwSetIRTimer@8 +ZwSetInformationVirtualMemory@24 +ZwSubscribeWnfStateChange@16 +ZwUnmapViewOfSectionEx@12 +ZwUnsubscribeWnfStateChange@4 +ZwUpdateWnfStateData@28 +ZwWaitForAlertByThreadId@8 +; ZwWaitForWnfNotifications@8 ; removed in Windows 8.1 +; ZwWow64AllocateVirtualMemory64@28 ; available only in 32-bit WoW64 version on 64-bit system + +; This is list of symbols added in Windows 8.1 +LdrSetImplicitPathOptions@8 +NtCancelTimer2@8 +NtCreateTimer2@20 +NtGetCompleteWnfStateSubscription@24 +NtSetTimer2@16 +NtSetWnfProcessNotificationEvent@4 +PssNtCaptureSnapshot@16 +PssNtDuplicateSnapshot@20 +PssNtFreeRemoteSnapshot@8 +PssNtFreeSnapshot@4 +PssNtFreeWalkMarker@4 +PssNtQuerySnapshot@16 +PssNtValidateDescriptor@8 +PssNtWalkSnapshot@20 +RtlAddProcessTrustLabelAce@24 +RtlAllocateAndInitializeSidEx@16 +RtlGetAppContainerParent@8 +RtlGetAppContainerSidType@8 +RtlIsParentOfChildAppContainer@8 +RtlIsValidProcessTrustLabelSid@4 +RtlQueryPackageIdentityEx@28 +RtlSidDominatesForTrust@12 +RtlStringFromGUIDEx@12 +RtlTestProtectedAccess@8 +RtlValidProcessProtection@4 +TpCallbackSendAlpcMessageOnCompletion@16 +TpCallbackSendPendingAlpcMessage@4 +WinSqmStartSessionForPartner@16 +ZwCancelTimer2@8 +ZwCreateTimer2@20 +ZwGetCompleteWnfStateSubscription@24 +ZwSetTimer2@16 +ZwSetWnfProcessNotificationEvent@4 + +; This is list of symbols added in Windows 10 (Threshold / 1507) +DbgUiConvertStateChangeStructureEx@8 +LdrFastFailInLoaderCallout@0 +NtAlpcImpersonateClientContainerOfPort@12 +NtCompareObjects@8 +NtCreatePartition@16 ; Windows 10 has ABI "NtCreatePartition@20", Windows 10 November Update (Threshold 2 / 1511) and new has ABI "NtCreatePartition@16" +NtGetCurrentProcessorNumberEx@4 +NtManagePartition@20 +NtOpenPartition@12 +NtRevertContainerImpersonation@0 +NtSetInformationSymbolicLink@16 +; NtWow64IsProcessorFeaturePresent@4 ; available only in 32-bit WoW64 version on 64-bit system +RtlCapabilityCheck@12 +RtlCheckSandboxedToken@8 +RtlConvertDeviceFamilyInfoToString@16 +RtlConvertSRWLockExclusiveToShared@4 +RtlDecodeRemotePointer@12 +RtlDeriveCapabilitySidsFromName@12 +RtlEncodeRemotePointer@12 +RtlEndStrongEnumerationHashTable@8 +RtlFindUnicodeSubstring@12 +RtlGetDeviceFamilyInfoEnum@12 +RtlGetInterruptTimePrecise@4 +RtlInitStringEx@8 +RtlInitStrongEnumerationHashTable@8 +RtlInitializeSidEx@0 +RtlIsMultiSessionSku@0 +RtlIsProcessorFeaturePresent@4 +RtlOsDeploymentState@4 +RtlQueryPackageClaims@32 ; Windows 10 has ABI "RtlQueryPackageClaims@28", Windows 10 Anniversary Update (Redstone / 1607) and new has ABI "RtlQueryPackageClaims@32" +RtlQueryProtectedPolicy@8 +RtlQueryResourcePolicy@16 +RtlSetProtectedPolicy@12 +RtlSetThreadSubProcessTag@4 +RtlStronglyEnumerateEntryHashTable@8 +RtlSwitchedVVI@16 +RtlpGetDeviceFamilyInfoEnum@12 +TpSetPoolMaxThreadsSoftLimit@8 +TpSetPoolWorkerThreadIdleTimeout@12 +TpTrimPools@0 +WinSqmStartSqmOptinListener@0 +ZwAlpcImpersonateClientContainerOfPort@12 +ZwCompareObjects@8 +ZwCreatePartition@16 ; Windows 10 has ABI "ZwCreatePartition@20", Windows 10 November Update (Threshold 2 / 1511) and new has ABI "ZwCreatePartition@16" +ZwGetCurrentProcessorNumberEx@4 +ZwManagePartition@20 +ZwOpenPartition@12 +ZwRevertContainerImpersonation@0 +ZwSetInformationSymbolicLink@16 +; ZwWow64IsProcessorFeaturePresent@4 ; available only in 32-bit WoW64 version on 64-bit system + +; This is list of symbols added in Windows 10 November Update (Threshold 2 / 1511) +NtCreateEnclave@36 +NtInitializeEnclave@20 +NtLoadEnclaveData@36 +RtlGetCurrentServiceSessionId@0 +RtlWow64GetCurrentMachine@0 +ZwCreateEnclave@36 +ZwInitializeEnclave@20 +ZwLoadEnclaveData@36 + +; This is list of symbols added in Windows 10 Anniversary Update (Redstone / 1607) +NtCommitRegistryTransaction@8 +NtCreateRegistryTransaction@16 +NtOpenRegistryTransaction@12 +NtQuerySecurityPolicy@24 +NtRollbackRegistryTransaction@8 +NtSetCachedSigningLevel2@24 +RtlAreLongPathsEnabled@0 +RtlCheckBootStatusIntegrity@8 +RtlClearThreadWorkOnBehalfTicket@0 +RtlFindExportedRoutineByName@8 +RtlGetActiveConsoleId@0 +RtlGetConsoleSessionForegroundProcessId@0 +RtlGetSuiteMask@0 +RtlGetThreadWorkOnBehalfTicket@8 +RtlGuardCheckLongJumpTarget@12 +; RtlIsLongPathAwareProcessByManifest@0 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +RtlIsMultiUsersInSessionSku@0 +RtlLocateExtendedFeature2@16 +RtlReplaceSystemDirectoryInPath@16 +RtlReportExceptionEx@20 +RtlRestoreBootStatusDefaults@4 +RtlSetThreadWorkOnBehalfTicket@4 +; RtlSparseBitmapCtxAreAllClear@20 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxAreAllSet@20 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxCheckBit@12 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxCleanup@4 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxClearBits@24 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxClearBitsEx@32 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxCountBitsSet@4 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxFindNextBitSet@12 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxFindSetRuns@36 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxInitialize@4 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxMetadataForBit@16 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxOrBitmap@8 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxPrepareBits@20 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxSetBits@24 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxSetBitsEx@32 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxStart@8 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapCtxSubtractBitmap@12 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +; RtlSparseBitmapEnumerateBitmap@12 ; removed in Windows 10 Creators Update (Redstone 2 / 1703) +RtlWow64GetProcessMachines@12 +RtlWow64IsWowGuestMachineSupported@8 +; Wow64Transition DATA ; available only in 32-bit WoW64 version on 64-bit system +ZwCommitRegistryTransaction@8 +ZwCreateRegistryTransaction@16 +ZwOpenRegistryTransaction@12 +ZwQuerySecurityPolicy@24 +ZwRollbackRegistryTransaction@8 +ZwSetCachedSigningLevel2@24 + +; This is list of symbols added in Windows 10 Creators Update (Redstone 2 / 1703) +LdrParentInterlockedPopEntrySList DATA +LdrParentRtlInitializeNtUserPfn DATA +LdrParentRtlResetNtUserPfn DATA +LdrParentRtlRetrieveNtUserPfn DATA +LdrUpdatePackageSearchPath@4 +LdrpChildNtdll DATA +NtAcquireProcessActivityReference@12 +NtCompareSigningLevels@8 +; NtContinueCHPE@8 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 10 Fall Creators Update (Redstone 3 / 1709) +NtConvertBetweenAuxiliaryCounterAndPerformanceCounter@16 +; NtLoadHotPatch@8 ; removed in Windows 10 October 2018 Update (Redstone 5 / 1809) +NtQueryAuxiliaryCounterFrequency@4 +NtQueryInformationByName@20 +RtlAddAccessFilterAce@32 +RtlCreateUserProcessEx@20 +RtlDispatchAPC@12 ; before Windows 10 Creators Update (Redstone 2 / 1703) available as ordinal-only symbol +RtlGetNtSystemRoot@0 +RtlGetSessionProperties@8 +RtlGetTokenNamedObjectPath@12 +RtlIsElevatedRid@4 +RtlIsNonEmptyDirectoryReparsePointAllowed@4 +; RtlIsPlaceholderFileHandle@8 ; removed in Windows 10 Fall Creators Update (Redstone 3 / 1709) +; RtlIsPlaceholderFileInfo@12 ; removed in Windows 10 Fall Creators Update (Redstone 3 / 1709) +RtlLookupFirstMatchingElementGenericTableAvl@12 +; RtlLookupFunctionEntryCHPE@12 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 10 Fall Creators Update (Redstone 3 / 1709) +; RtlUnwindEx@24 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 10 Fall Creators Update (Redstone 3 / 1709) +WerReportExceptionWorker@4 +ZwAcquireProcessActivityReference@12 +ZwCompareSigningLevels@8 +; ZwContinueCHPE@8 ; available only in 32-bit WoW64 version on 64-bit system, removed in Windows 10 Fall Creators Update (Redstone 3 / 1709) +ZwConvertBetweenAuxiliaryCounterAndPerformanceCounter@16 +; ZwLoadHotPatch@8 ; removed in Windows 10 October 2018 Update (Redstone 5 / 1809) +ZwQueryAuxiliaryCounterFrequency@4 +ZwQueryInformationByName@20 + +; This is list of symbols added in Windows 10 Fall Creators Update (Redstone 3 / 1709) +EtwCheckCoverage@4 +LdrCallEnclave@12 +LdrControlFlowGuardEnforced@0 +LdrCreateEnclave@36 +LdrDeleteEnclave@4 +LdrInitializeEnclave@20 +LdrLoadEnclaveModule@12 +NtCallEnclave@16 +NtNotifyChangeDirectoryFileEx@40 +NtQueryDirectoryFileEx@40 +NtTerminateEnclave@8 +RtlCapabilityCheckForSingleSessionSku@12 +RtlCheckSystemBootStatusIntegrity@4 +RtlDosLongPathNameToNtPathName_U_WithStatus@16 +RtlDosLongPathNameToRelativeNtPathName_U_WithStatus@16 +RtlExtendCorrelationVector@4 +RtlGetSystemBootStatus@16 +RtlGetSystemBootStatusEx@12 +RtlIncrementCorrelationVector@4 +RtlInitializeCorrelationVector@12 +RtlIsCloudFilesPlaceholder@8 +RtlIsCurrentProcess@4 +RtlIsCurrentThread@4 +RtlIsPartialPlaceholder@8 +RtlIsPartialPlaceholderFileHandle@8 +RtlIsPartialPlaceholderFileInfo@12 +RtlIsStateSeparationEnabled@0 +RtlQueryImageMitigationPolicy@20 +RtlQueryThreadPlaceholderCompatibilityMode@0 +RtlRestoreSystemBootStatusDefaults@0 +RtlSetImageMitigationPolicy@20 +RtlSetProxiedProcessId@4 +RtlSetSystemBootStatus@16 +RtlSetSystemBootStatusEx@12 +RtlSetThreadPlaceholderCompatibilityMode@4 +RtlValidateCorrelationVector@4 +RtlWow64GetEquivalentMachineCHPE@4 +RtlWow64GetSharedInfoProcess@12 +; RtlWow64PopAllCrossProcessWork@4 ; removed in Windows 10 October 2018 Update (Redstone 5 / 1809) +; RtlWow64PopCrossProcessWork@4 ; removed in Windows 10 October 2018 Update (Redstone 5 / 1809) +; RtlWow64PushCrossProcessWork@8 ; removed in Windows 10 October 2018 Update (Redstone 5 / 1809) +ZwCallEnclave@16 +ZwNotifyChangeDirectoryFileEx@40 +ZwQueryDirectoryFileEx@40 +ZwTerminateEnclave@8 + +; This is list of symbols added in Windows 10 April 2018 Update (Redstone 4 / 1803) +NtAllocateVirtualMemoryEx@28 +NtMapViewOfSectionEx@36 +RtlGetPersistedStateLocation@28 +RtlIsNameInUnUpcasedExpression@16 +RtlQueryProcessPlaceholderCompatibilityMode@0 +RtlQueryRegistryValueWithFallback@28 +RtlQueryTokenHostIdAsUlong64@8 +RtlRaiseCustomSystemEventTrigger@4 +RtlSetProcessPlaceholderCompatibilityMode@4 +ZwAllocateVirtualMemoryEx@28 +ZwMapViewOfSectionEx@36 + +; This is list of symbols added in Windows 10 October 2018 Update (Redstone 5 / 1809) +ApiSetQueryApiSetPresenceEx@12 +LdrIsModuleSxsRedirected@4 +NtCreateSectionEx@36 +NtManageHotPatch@16 +RtlCreateProcessParametersWithTemplate@12 +RtlGetExtendedContextLength2@16 +RtlGetMultiTimePrecise@12 +RtlInitializeExtendedContext2@20 +; RtlUserFiberStart@0 +RtlpTimeFieldsToTime@12 +RtlpTimeToTimeFields@12 +ZwCreateSectionEx@36 +ZwManageHotPatch@16 + +; This is list of symbols added in Windows 10 May 2019 Update (19H1 / 1903) +NtCreateCrossVmEvent@24 +RtlConstructCrossVmEventPath@12 +RtlDoesNameContainWildCards@4 +RtlFlsGetValue@8 +RtlFlsSetValue@8 +RtlUdiv128@28 +TpSetPoolThreadCpuSets@12 +ZwCreateCrossVmEvent@24 + +; In Windows 10 November 2019 Update (19H2 /1909) was not added any new symbol + +; This is list of symbols added in Windows 10 May 2020 Update (20H1 / 2004) +NtAcquireCrossVmMutant@8 +NtAllocateUserPhysicalPagesEx@20 +NtContinueEx@8 +NtCreateCrossVmMutant@24 +NtDirectGraphicsCall@20 +NtLoadKey3@32 +NtPssCaptureVaSpaceBulk@20 +RtlConstructCrossVmMutexPath@12 +; RtlDisownModuleHeapAllocation@8 +RtlFreeUTF8String@4 +RtlGetReturnAddressHijackTarget@0 +RtlInitUTF8String@8 +RtlInitUTF8StringEx@8 +RtlIsZeroMemory@8 +RtlNormalizeSecurityDescriptor@20 +RtlNotifyFeatureUsage@4 +RtlQueryAllFeatureConfigurations@16 +RtlQueryFeatureConfiguration@16 +RtlQueryFeatureConfigurationChangeStamp@0 +RtlQueryFeatureUsageNotificationSubscriptions@8 +RtlRegisterFeatureConfigurationChangeNotification@16 +RtlRestoreThreadPreferredUILanguages@4 +RtlSetFeatureConfigurations@16 +RtlSetThreadPreferredUILanguages2@16 +RtlSubscribeForFeatureUsageNotification@8 +RtlUTF8StringToUnicodeString@12 +RtlUnicodeStringToUTF8String@12 +RtlUnregisterFeatureConfigurationChangeNotification@4 +RtlUnsubscribeFromFeatureUsageNotifications@8 +ZwAcquireCrossVmMutant@8 +ZwAllocateUserPhysicalPagesEx@20 +ZwContinueEx@8 +ZwCreateCrossVmMutant@24 +ZwDirectGraphicsCall@20 +ZwLoadKey3@32 +ZwPssCaptureVaSpaceBulk@20 + +; In Windows 10 October 2020 Update (20H2) was not added any new symbol + +; In Windows 10 May 2021 Update (21H1) was not added any new symbol + +; This is list of symbols added in Windows 10 November 2021 Update (21H2) +RtlGetSystemTimeAndBias@12 + +; In Windows 10 2022 Update (22H2) was not added any new symbol + +; This is list of symbols added in Windows 11 (Sun Valley / 21H2) (WoW64 version) +; LdrHotPatchNotify@4 +; MicrosoftTelemetryAssertTriggeredUM@4 +NtChangeProcessState@24 +NtChangeThreadState@24 +NtCreateIoRing@20 +NtCreateProcessStateChange@20 +NtCreateThreadStateChange@20 +NtQueryIoRingCapabilities@8 +NtQueueApcThreadEx2@28 +NtReadVirtualMemoryEx@24 +NtSetInformationIoRing@16 +NtSubmitIoRing@16 +RtlCompareExchangePointerMapping@16 +RtlCompareExchangePropertyStore@16 +; RtlConvertHostPerfCounterToPerfCounter@20 +RtlDelayExecution@8 +RtlGetImageFileMachines@8 +RtlGetSystemGlobalData@12 +RtlIsApiSetImplemented@4 +RtlIsEnclaveFeaturePresent@4 +RtlQueryPointerMapping@8 +RtlQueryPropertyStore@8 +RtlRemovePointerMapping@8 +RtlRemovePropertyStore@8 +RtlRestoreContext ; cdecl +ZwChangeProcessState@24 +ZwChangeThreadState@24 +ZwCreateIoRing@20 +ZwCreateProcessStateChange@20 +ZwCreateThreadStateChange@20 +ZwQueryIoRingCapabilities@8 +ZwQueueApcThreadEx2@28 +ZwReadVirtualMemoryEx@24 +ZwSetInformationIoRing@16 +ZwSubmitIoRing@16 + +; This is list of symbols added in Windows 11 2022 Update (Sun Valley 2 / 22H2) (WoW64 version) +; NtCopyFileChunk@40 +; NtCreateCpuPartition@20 ; Windows 10 has ABI "NtCreateCpuPartition@12", Windows 11 2024 Update (Hudson Valley / 24H2) and new has ABI "NtCreateCpuPartition@20" +; NtOpenCpuPartition@12 +; NtQueryInformationCpuPartition@20 +; NtSetInformationCpuPartition@28 +; RtlOverwriteFeatureConfigurationBuffer@16 +; TpWorkOnBehalfClearTicket@4 +; TpWorkOnBehalfSetTicket@8 +; ZwCopyFileChunk@40 +; ZwCreateCpuPartition@20 ; Windows 10 has ABI "ZwCreateCpuPartition@12", Windows 11 2024 Update (Hudson Valley / 24H2) and new has ABI "ZwCreateCpuPartition@20" +; ZwOpenCpuPartition@12 +; ZwQueryInformationCpuPartition@20 +; ZwSetInformationCpuPartition@28 + +; This is list of symbols added in Windows 11 2023 Update (Sun Valley 3 / 23H2) (WoW64 version) +; RtlIsFeatureEnabledForEnterprise@4 + +; This is list of symbols added in Windows 11 2024 Update (Hudson Valley / 24H2) (WoW64 version) +; NtAlertMultipleThreadByThreadId@16 +; NtAlertThreadByThreadIdEx@8 +; NtSetEventEx@12 +; NtWow64GetCurrentProcessorNumber@0 +; RtlFlsAllocEx@12 +; RtlFlsGetValue2@4 +; RtlGetAcesBufferSize@8 +; RtlGetCurrentThreadPrimaryGroup@0 +; RtlGetFeatureToggleConfiguration@12 +; RtlGetFeatureTogglesChangeToken@0 +; RtlLogUnexpectedCodepath@4 +; RtlNotifyFeatureToggleUsage@12 +; RtlQueryAllInternalFeatureConfigurations@16 +; RtlRcuAllocate@4 +; RtlRcuFree@4 +; RtlRcuReadLock@0 +; RtlRcuReadUnlock@0 +; RtlRcuSynchronize@4 +; RtlTlsAlloc@4 +; RtlTlsFree@4 +; RtlTlsSetValue@8 +; RtlValidateUserCallTarget@8 +; RtlXRestore@12 +; RtlXSave@12 +; ZwAlertMultipleThreadByThreadId@16 +; ZwAlertThreadByThreadIdEx@8 +; ZwSetEventEx@12 +; ZwWow64GetCurrentProcessorNumber@0 + +; This is list of symbols added in Windows 11 2025 Update (Hudson Valley 2 / 25H2) (WoW64 version) +; ApiSetGetImplementationHost@12 +; ApiSetQuerySchema@8 +; RtlQueryAllInternalRuntimeFeatureConfigurations@20 +; RtlQueryInternalFeatureConfiguration@16 diff --git a/lib/libc/mingw/lib32/odbc32.def b/lib/libc/mingw/lib32/odbc32.def index d9205174cdacf1e802aef06189a1fdd7433b78dd..3da60501d1b2c5e71a2c747b26f921c2a5aadef8 100644 --- a/lib/libc/mingw/lib32/odbc32.def +++ b/lib/libc/mingw/lib32/odbc32.def @@ -6,6 +6,8 @@ CursorLibLockDbc@8 CursorLibLockDesc@8 CursorLibLockStmt@8 CursorLibTransact@12 +DllBidEntryPoint@36 +GetODBCSharedData@0 LockHandle@12 MpHeapAlloc MpHeapCompact @@ -39,6 +41,7 @@ SQLBrowseConnectA@24 SQLBrowseConnectW@24 SQLBulkOperations@8 SQLCancel@4 +SQLCancelHandle@8 SQLCloseCursor@4 SQLColAttribute@28 SQLColAttributeA@28 @@ -52,6 +55,7 @@ SQLColumnPrivilegesW@36 SQLColumns@36 SQLColumnsA@36 SQLColumnsW@36 +SQLCompleteAsync@12 SQLConnect@28 SQLConnectA@28 SQLConnectW@28 diff --git a/lib/libc/mingw/lib32/oleacc.def b/lib/libc/mingw/lib32/oleacc.def index e369523baf8c05b1bb68815bdbca61faedb3d347..0da85e72d2fa695def6099cf0f18c4bc082d60ea 100644 --- a/lib/libc/mingw/lib32/oleacc.def +++ b/lib/libc/mingw/lib32/oleacc.def @@ -1,21 +1,26 @@ ; ; Definition file of OLEACC.dll -; Automatic generated by gendef +; Automatic generated by gendef 1.1 ; written by Kai Tietz 2008 +; The def file has to be processed by --kill-at (-k) option of dlltool or ld ; LIBRARY "OLEACC.dll" EXPORTS -DllRegisterServer@0 -DllUnregisterServer@0 +;DllRegisterServer@0 +;DllUnregisterServer@0 +AccGetRunningUtilityState@12 +AccNotifyTouchInteraction@16 +AccSetRunningUtilityState@12 AccessibleChildren@20 AccessibleObjectFromEvent@20 AccessibleObjectFromPoint@16 AccessibleObjectFromWindow@16 +AccessibleObjectFromWindowTimeout@24 CreateStdAccessibleObject@16 CreateStdAccessibleProxyA@20 CreateStdAccessibleProxyW@20 -DllCanUnloadNow@0 -DllGetClassObject@12 +;DllCanUnloadNow@0 +;DllGetClassObject@12 GetOleaccVersionInfo@8 GetProcessHandleFromHwnd@4 GetRoleTextA@12 diff --git a/lib/libc/mingw/libsrc/ativscp-uuid.c b/lib/libc/mingw/libsrc/ativscp-uuid.c deleted file mode 100644 index 4cfdc3e80520d2ff87ed3ec6ef33e631c151a98a..0000000000000000000000000000000000000000 --- a/lib/libc/mingw/libsrc/ativscp-uuid.c +++ /dev/null @@ -1,16 +0,0 @@ -/* ativscp-uuid.c */ -/* Generate GUIDs for ActiveScript interfaces */ - -/* All IIDs defined in this file were extracted from - * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ - -/* All CLSIDs defined in this file were extracted from - * HKEY_CLASSES_ROOT\CLSID\ */ - -#define INITGUID -#include -DEFINE_GUID(IID_IActiveScript,0xbb1a2ae1,0xa4f9,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); -DEFINE_GUID(IID_IActiveScriptError,0xeae1ba61,0xa4ed,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); -DEFINE_GUID(IID_IActiveScriptParse,0xbb1a2ae2,0xa4f9,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); -DEFINE_GUID(IID_IActiveScriptSite,0xdb01a1e3,0xa42b,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); -DEFINE_GUID(IID_IActiveScriptSiteWindow,0xd10f6761,0x83e9,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); diff --git a/lib/libc/mingw/libsrc/uuid.c b/lib/libc/mingw/libsrc/uuid.c index 48d555b38d60294ac581145cbaa8924390a0462b..bff218d1d86ad7b96acfa66d9d75a5a0a230dfbe 100644 --- a/lib/libc/mingw/libsrc/uuid.c +++ b/lib/libc/mingw/libsrc/uuid.c @@ -14,6 +14,7 @@ #define INITGUID #include +#include #include #include #include diff --git a/lib/libc/mingw/stdio/fopen64.c b/lib/libc/mingw/math/acospi.c similarity index 67% rename from lib/libc/mingw/stdio/fopen64.c rename to lib/libc/mingw/math/acospi.c index 1c6e78db561505279320ae771d525a78220f7930..b68ee223486a8e6e95529385d9f25d1a10e108f8 100644 --- a/lib/libc/mingw/stdio/fopen64.c +++ b/lib/libc/mingw/math/acospi.c @@ -3,9 +3,12 @@ * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#include -FILE* fopen64 (const char* filename, const char* mode) +#include + +#include "pi_const.h" + +double __cdecl acospi(double x) { - return fopen (filename, mode); + return acos(x) / __pi_type(x); } diff --git a/lib/libc/mingw/misc/mb_wc_common.h b/lib/libc/mingw/math/acospif.c similarity index 66% rename from lib/libc/mingw/misc/mb_wc_common.h rename to lib/libc/mingw/math/acospif.c index c640fb776754f96742c2814631ab623d5b50b229..f08724d660e3bf4f8ed070bc857bd2813357629a 100644 --- a/lib/libc/mingw/misc/mb_wc_common.h +++ b/lib/libc/mingw/math/acospif.c @@ -4,6 +4,11 @@ * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#include <_mingw.h> +#include -unsigned int __cdecl ___lc_codepage_func(void); +#include "pi_const.h" + +float __cdecl acospif(float x) +{ + return acosf(x) / __pi_type(x); +} diff --git a/lib/libc/mingw/stdio/lseek64.c b/lib/libc/mingw/math/acospil.c similarity index 64% rename from lib/libc/mingw/stdio/lseek64.c rename to lib/libc/mingw/math/acospil.c index afda7cefbbc11e6cdb524b11ac946df36a79f35c..a13ee024cb843bbd1986bad0a602e361052fb061 100644 --- a/lib/libc/mingw/stdio/lseek64.c +++ b/lib/libc/mingw/math/acospil.c @@ -3,10 +3,12 @@ * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#include -_off64_t lseek64(int fd,_off64_t offset, int whence) +#include + +#include "pi_const.h" + +long double __cdecl acospil(long double x) { - return _lseeki64(fd, (_off64_t) offset, whence); + return acosl(x) / __pi_type(x); } - diff --git a/lib/libc/mingw/stdio/ftello64.c b/lib/libc/mingw/math/asinpi.c similarity index 59% rename from lib/libc/mingw/stdio/ftello64.c rename to lib/libc/mingw/math/asinpi.c index a0192fbe6d4c8650f64be598f2d91eebb3886f41..747f633536e97b86ea13f43fc2568466b428fe46 100644 --- a/lib/libc/mingw/stdio/ftello64.c +++ b/lib/libc/mingw/math/asinpi.c @@ -3,14 +3,12 @@ * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#include -_off64_t -ftello64 (FILE * stream) +#include + +#include "pi_const.h" + +double __cdecl asinpi(double x) { - fpos_t pos; - if (fgetpos(stream, &pos)) - return -1LL; - else - return ((off64_t) pos); + return asin(x) / __pi_type(x); } diff --git a/lib/libc/mingw/math/asinpif.c b/lib/libc/mingw/math/asinpif.c new file mode 100644 index 0000000000000000000000000000000000000000..d3b4fe119bd336a34397791c216296e89658329c --- /dev/null +++ b/lib/libc/mingw/math/asinpif.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +float __cdecl asinpif(float x) +{ + return asinf(x) / __pi_type(x); +} diff --git a/lib/libc/mingw/math/asinpil.c b/lib/libc/mingw/math/asinpil.c new file mode 100644 index 0000000000000000000000000000000000000000..718f5d21a409042f6929764f62ac095b04518841 --- /dev/null +++ b/lib/libc/mingw/math/asinpil.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +long double __cdecl asinpil(long double x) +{ + return asinl(x) / __pi_type(x); +} diff --git a/lib/libc/mingw/math/atan2pi.c b/lib/libc/mingw/math/atan2pi.c new file mode 100644 index 0000000000000000000000000000000000000000..800977a416dce2fa111f27a469051cfc22056e2f --- /dev/null +++ b/lib/libc/mingw/math/atan2pi.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +double __cdecl atan2pi(double y, double x) +{ + return atan2(y, x) / __pi_type(y); +} diff --git a/lib/libc/mingw/math/atan2pif.c b/lib/libc/mingw/math/atan2pif.c new file mode 100644 index 0000000000000000000000000000000000000000..00711753be97a73e5e05395d09e4f0f6d2c021d0 --- /dev/null +++ b/lib/libc/mingw/math/atan2pif.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +float __cdecl atan2pif(float y, float x) +{ + return atan2f(y, x) / __pi_type(y); +} diff --git a/lib/libc/mingw/math/atan2pil.c b/lib/libc/mingw/math/atan2pil.c new file mode 100644 index 0000000000000000000000000000000000000000..9d0e57645d2e9fec3d1086f1c70b855b1cdf63f4 --- /dev/null +++ b/lib/libc/mingw/math/atan2pil.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +long double __cdecl atan2pil(long double y, long double x) +{ + return atan2l(y, x) / __pi_type(y); +} diff --git a/lib/libc/mingw/math/atanpi.c b/lib/libc/mingw/math/atanpi.c new file mode 100644 index 0000000000000000000000000000000000000000..ae68e1ffbeac0fec0364f76a2f9eacc8069ef6e3 --- /dev/null +++ b/lib/libc/mingw/math/atanpi.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +double __cdecl atanpi(double x) +{ + return atan(x) / __pi_type(x); +} diff --git a/lib/libc/mingw/math/atanpif.c b/lib/libc/mingw/math/atanpif.c new file mode 100644 index 0000000000000000000000000000000000000000..af9e3b64696035a6b59bf592aaeb208f1796a073 --- /dev/null +++ b/lib/libc/mingw/math/atanpif.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +float __cdecl atanpif(float x) +{ + return atanf(x) / __pi_type(x); +} diff --git a/lib/libc/mingw/math/atanpil.c b/lib/libc/mingw/math/atanpil.c new file mode 100644 index 0000000000000000000000000000000000000000..830df9bbacdddfc2df9fd8d876b512bd682c8057 --- /dev/null +++ b/lib/libc/mingw/math/atanpil.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +long double __cdecl atanpil(long double x) +{ + return atanl(x) / __pi_type(x); +} diff --git a/lib/libc/mingw/math/cospi.c b/lib/libc/mingw/math/cospi.c new file mode 100644 index 0000000000000000000000000000000000000000..e8b86f5c918722765c5008e96202851498c97ae9 --- /dev/null +++ b/lib/libc/mingw/math/cospi.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +double __cdecl cospi(double x) +{ + x = fmod(x, 2.0); + return cos(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/math/cospif.c b/lib/libc/mingw/math/cospif.c new file mode 100644 index 0000000000000000000000000000000000000000..b1c8212a1e86cbb01d4ebd356328c896165e4e17 --- /dev/null +++ b/lib/libc/mingw/math/cospif.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +float __cdecl cospif(float x) +{ + x = fmodf(x, 2.0F); + return cosf(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/math/cospil.c b/lib/libc/mingw/math/cospil.c new file mode 100644 index 0000000000000000000000000000000000000000..91e29586d6b05301487bdf6de74f376d12fbd661 --- /dev/null +++ b/lib/libc/mingw/math/cospil.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +long double __cdecl cospil(long double x) +{ + x = fmodl(x, 2.0L); + return cosl(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/math/pi_const.h b/lib/libc/mingw/math/pi_const.h new file mode 100644 index 0000000000000000000000000000000000000000..7e8f1f29014df92e991fe193c7e87976fcfbfc32 --- /dev/null +++ b/lib/libc/mingw/math/pi_const.h @@ -0,0 +1,17 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#define __pi_type(x) \ +__builtin_choose_expr ( \ + __builtin_types_compatible_p (__typeof__ (x), float), \ + 3.14159265F, \ + __builtin_choose_expr ( \ + __builtin_types_compatible_p (__typeof__ (x), double), \ + 3.14159265358979323846, \ + __builtin_choose_expr ( \ + __builtin_types_compatible_p (__typeof__ (x), long double), \ + 3.1415926535897932384626433832795029L, \ + __builtin_trap()))) diff --git a/lib/libc/mingw/math/sinpi.c b/lib/libc/mingw/math/sinpi.c new file mode 100644 index 0000000000000000000000000000000000000000..4f9eda4b6629fd69bacf4e958e05ded149ce6f1c --- /dev/null +++ b/lib/libc/mingw/math/sinpi.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +double __cdecl sinpi(double x) +{ + x = remainder(x, 2.0); + return sin(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/math/sinpif.c b/lib/libc/mingw/math/sinpif.c new file mode 100644 index 0000000000000000000000000000000000000000..07110d1a4c754ff378d95cc4ceb524abfad55a1d --- /dev/null +++ b/lib/libc/mingw/math/sinpif.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +float __cdecl sinpif(float x) +{ + x = remainderf(x, 2.0F); + return sinf(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/math/sinpil.c b/lib/libc/mingw/math/sinpil.c new file mode 100644 index 0000000000000000000000000000000000000000..4fe7d9e1c21201d3f831b2043cdbdb4218ddd0e1 --- /dev/null +++ b/lib/libc/mingw/math/sinpil.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +long double __cdecl sinpil(long double x) +{ + x = remainderl(x, 2.0L); + return sinl(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/math/tanpi.c b/lib/libc/mingw/math/tanpi.c new file mode 100644 index 0000000000000000000000000000000000000000..405f704c6961669392aeb47e5e5228d6a2f08a2b --- /dev/null +++ b/lib/libc/mingw/math/tanpi.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +double __cdecl tanpi(double x) +{ + x = remainder(x, 2.0); + return tan(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/math/tanpif.c b/lib/libc/mingw/math/tanpif.c new file mode 100644 index 0000000000000000000000000000000000000000..f11aac54054eb44075deef1d558cd9a7972f2b30 --- /dev/null +++ b/lib/libc/mingw/math/tanpif.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +float __cdecl tanpif(float x) +{ + x = remainderf(x, 2.0F); + return tanf(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/math/tanpil.c b/lib/libc/mingw/math/tanpil.c new file mode 100644 index 0000000000000000000000000000000000000000..059fabc6f2d6461a95427d0be1c35ab4723c094d --- /dev/null +++ b/lib/libc/mingw/math/tanpil.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +#include "pi_const.h" + +long double __cdecl tanpil(long double x) +{ + x = remainderl(x, 2.0L); + return tanl(x * __pi_type(x)); +} diff --git a/lib/libc/mingw/misc/__mingw_filename_cp.c b/lib/libc/mingw/misc/__mingw_filename_cp.c new file mode 100644 index 0000000000000000000000000000000000000000..48f3dd557f537bf873c1090db489430ee5e6a68a --- /dev/null +++ b/lib/libc/mingw/misc/__mingw_filename_cp.c @@ -0,0 +1,33 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include + +/* By default the ANSI (ACP) is used, fallack to default ANSI when function AreFileApisANSI() is not available */ +static BOOL WINAPI fallbackAreFileApisANSI(VOID) { return TRUE; } + +unsigned int __cdecl __mingw_filename_cp(void) +{ + if (___lc_codepage_func() == CP_UTF8) + return CP_UTF8; + + /* Function AreFileApisANSI() is not available in older Windows versions, so resolve it at runtime */ + static __typeof__(AreFileApisANSI) *myAreFileApisANSI = NULL; + if (!myAreFileApisANSI) { + FARPROC farproc = NULL; + HMODULE kernel32 = GetModuleHandleA("kernel32.dll"); + if (kernel32) + farproc = GetProcAddress(kernel32, "AreFileApisANSI"); + if (!farproc) + farproc = (FARPROC)(PVOID)fallbackAreFileApisANSI; + (void)InterlockedExchangePointer((PVOID*)&myAreFileApisANSI, (PVOID)farproc); + } + return myAreFileApisANSI() ? CP_ACP : CP_OEMCP; +} diff --git a/lib/libc/mingw/misc/__mingw_isleadbyte_cp.c b/lib/libc/mingw/misc/__mingw_isleadbyte_cp.c new file mode 100644 index 0000000000000000000000000000000000000000..5066482874a87dd72a7724cea5f117f7fc36156a --- /dev/null +++ b/lib/libc/mingw/misc/__mingw_isleadbyte_cp.c @@ -0,0 +1,42 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include + +static BOOL WINAPI fallback_IsDBCSLeadByteEx(UINT cp, BYTE c) +{ + int i; + CPINFO cp_info; + if (GetCPInfo(cp, &cp_info) && cp_info.MaxCharSize == 2) { + for (i = 0; i < MAX_LEADBYTES && cp_info.LeadByte[i]; i += 2) { + if (c >= cp_info.LeadByte[i] && c <= cp_info.LeadByte[i+1]) + return TRUE; + } + } + return FALSE; +} + +_Static_assert(__builtin_types_compatible_p(__typeof__(fallback_IsDBCSLeadByteEx), __typeof__(IsDBCSLeadByteEx)), + "Functions fallback_IsDBCSLeadByteEx() and IsDBCSLeadByteEx() are not compatible"); + +int __cdecl __mingw_isleadbyte_cp(int c, unsigned int cp) +{ + static __typeof__(IsDBCSLeadByteEx) *call_IsDBCSLeadByteEx = NULL; + if (!call_IsDBCSLeadByteEx) { + FARPROC farproc = NULL; + HMODULE kernel32 = GetModuleHandleA("kernel32.dll"); + if (kernel32) + farproc = GetProcAddress(kernel32, "IsDBCSLeadByteEx"); + if (!farproc) + farproc = (FARPROC)(PVOID)fallback_IsDBCSLeadByteEx; + (void)InterlockedExchangePointer((PVOID*)&call_IsDBCSLeadByteEx, (PVOID)farproc); + } + return call_IsDBCSLeadByteEx(cp, c); +} diff --git a/lib/libc/mingw/misc/_assert.c b/lib/libc/mingw/misc/_assert.c new file mode 100644 index 0000000000000000000000000000000000000000..c8c8548201f12af71e6d257bc6190b26b39401fd --- /dev/null +++ b/lib/libc/mingw/misc/_assert.c @@ -0,0 +1,46 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include +#include +#include +#include +#include + +/* This is import symbol name for "_assert" from CRT DLL library */ +extern void (__cdecl *__MINGW_IMP_SYMBOL(__msvcrt_assert))(const char *message, const char *file, unsigned line); + +/* Turn off _O_WTEXT, _O_U16TEXT or _O_U8TEXT mode on stderr stream + * by changing mode to _O_TEXT, because fprintf (called by __msvcrt_assert) + * does not work (and does nothing) on FILE* stream in some of those modes. + * Only fwprintf works with those modes, but _assert uses fprintf. + * Before changing the FILE* stream mode, it is required to flush buffers. */ +void __cdecl _assert(const char *message, const char *file, unsigned line) +{ + /* stderr expands to function call */ + FILE *stream = stderr; + /* Cache fd used by `stderr` */ + int fd = _fileno (stream); + /* We need to restore previous mode in case `_assert` returns; it can happen + * if program has called _set_error_mode(_OUT_TO_MSGBOX) and user pressed + * "Ignore" button in popped up message box. */ + int oldmode; + + /* Change `stderr` mode to `_O_TEXT` */ + fflush(stream); + oldmode = _setmode(fd, _O_TEXT); + + /* Call CRT `_assert` */ + __MINGW_IMP_SYMBOL(__msvcrt_assert)(message, file, line); + + /* Restore `stderr` mode to `oldmode` */ + fflush (stream); + if (_setmode (fd, oldmode) != _O_TEXT) { + abort (); + } +} + +void (__cdecl *__MINGW_IMP_SYMBOL(_assert))(const char *message, const char *file, unsigned line) = _assert; diff --git a/lib/libc/mingw/misc/btowc.c b/lib/libc/mingw/misc/btowc.c new file mode 100644 index 0000000000000000000000000000000000000000..d69b6bd03bfdae36960a9c1e83d96c82b08f6d99 --- /dev/null +++ b/lib/libc/mingw/misc/btowc.c @@ -0,0 +1,32 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#define __LARGE_MBSTATE_T + +#include /* MB_LEN_MAX */ +#include +#include /* EOF */ +#include /* MB_CUR_MAX */ + +wint_t btowc (int c) +{ + if (c == EOF) + return (WEOF); + + /* Use dummy string so that mbrtowc will never return (size_t)-2 */ + char str[MB_LEN_MAX] = {(unsigned char) c, 0, 0, 0, 0}; + + wint_t wc = WEOF; + mbstate_t state = {0}; + + if (mbrtowc (&wc, (char *) str, MB_CUR_MAX, &state) == (size_t) -1) { + return WEOF; + } + + return wc; +} + +wint_t (__cdecl *__MINGW_IMP_SYMBOL (btowc)) (int) = btowc; diff --git a/lib/libc/mingw/misc/dirent.c b/lib/libc/mingw/misc/dirent.c index 4897cf492fa1747fa5496eeffea00d1af360baa9..f65fdea3234b808b4db57dfeb0230ce187043999 100644 --- a/lib/libc/mingw/misc/dirent.c +++ b/lib/libc/mingw/misc/dirent.c @@ -152,7 +152,13 @@ _treaddir (_TDIR * dirp) { /* We haven't started the search yet. */ /* Start the search */ - dirp->dd_handle = _tfindfirst (dirp->dd_name, &(dirp->dd_dta)); + dirp->dd_handle = +#ifdef _WIN64 + _tfindfirst64i32 +#else + _tfindfirst32 +#endif + (dirp->dd_name, &(dirp->dd_dta)); if (dirp->dd_handle == -1) { @@ -168,7 +174,13 @@ _treaddir (_TDIR * dirp) else { /* Get the next search entry. */ - if (_tfindnext (dirp->dd_handle, &(dirp->dd_dta))) + if ( +#ifdef _WIN64 + _tfindnext64i32 +#else + _tfindnext32 +#endif + (dirp->dd_handle, &(dirp->dd_dta))) { /* We are off the end or otherwise error. _findnext sets errno to ENOENT if no more file diff --git a/lib/libc/mingw/misc/dirname.c b/lib/libc/mingw/misc/dirname.c index 7e6c8d58a3efeccc7c69728cb584a5f51f8520fa..6d0330ce569a71a4d39c54243103d6770682573a 100644 --- a/lib/libc/mingw/misc/dirname.c +++ b/lib/libc/mingw/misc/dirname.c @@ -7,6 +7,7 @@ #define WIN32_LEAN_AND_MEAN #endif #include +#include #include #include @@ -91,7 +92,7 @@ do_get_path_info(struct path_info* info, char* path) int dbcs_tb, prev_dir_sep, dir_sep; /* Get the code page for paths in the same way as `fopen()`. */ - cp = AreFileApisANSI() ? CP_ACP : CP_OEMCP; + cp = __mingw_filename_cp(); /* Set the structure to 'no data'. */ info->prefix_end = NULL; @@ -112,7 +113,7 @@ do_get_path_info(struct path_info* info, char* path) if(dbcs_tb) dbcs_tb = 0; - else if(IsDBCSLeadByteEx(cp, *pos)) + else if(__mingw_isleadbyte_cp(*pos, cp)) dbcs_tb = 1; else dir_sep = IS_DIR_SEP(*pos); @@ -156,7 +157,7 @@ do_get_path_info(struct path_info* info, char* path) if(dbcs_tb) dbcs_tb = 0; - else if(IsDBCSLeadByteEx(cp, *pos)) + else if(__mingw_isleadbyte_cp(*pos, cp)) dbcs_tb = 1; else dir_sep = IS_DIR_SEP(*pos); diff --git a/lib/libc/mingw/misc/dllmain.c b/lib/libc/mingw/misc/dllmain.c index 7f97b0a89ed52d5aae10f9851ce3ed05c838efca..3f5b5261bffae5b63826829a9103d290d7bf5708 100644 --- a/lib/libc/mingw/misc/dllmain.c +++ b/lib/libc/mingw/misc/dllmain.c @@ -1,4 +1,4 @@ -#include +#include #define _DECL_DLLMAIN #include diff --git a/lib/libc/mingw/misc/fedisableexcept.c b/lib/libc/mingw/misc/fedisableexcept.c new file mode 100644 index 0000000000000000000000000000000000000000..5c3328d02c3b95f489437af2f1357c3051110223 --- /dev/null +++ b/lib/libc/mingw/misc/fedisableexcept.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE +#include +#include + +int __cdecl fedisableexcept(int excepts) +{ + if (excepts & ~FE_ALL_EXCEPT) return -1; + int old_excepts = fegetexcept(); + __mingw_controlfp(excepts, excepts); + return old_excepts; +} diff --git a/lib/libc/mingw/misc/feenableexcept.c b/lib/libc/mingw/misc/feenableexcept.c new file mode 100644 index 0000000000000000000000000000000000000000..7bd6f757fc07ba39df2bce93c72f08d43bf9c214 --- /dev/null +++ b/lib/libc/mingw/misc/feenableexcept.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE +#include +#include + +int __cdecl feenableexcept(int excepts) +{ + if (excepts & ~FE_ALL_EXCEPT) return -1; + int old_excepts = fegetexcept(); + __mingw_controlfp(0, excepts); + return old_excepts; +} diff --git a/lib/libc/mingw/misc/fegetenv.c b/lib/libc/mingw/misc/fegetenv.c index c1169cda7c96889e3dec92c158c7fa2f85ccb506..165832f5dccf8e555caf7602a6925940db378e54 100644 --- a/lib/libc/mingw/misc/fegetenv.c +++ b/lib/libc/mingw/misc/fegetenv.c @@ -13,11 +13,12 @@ int fegetenv(fenv_t *env) { #if defined(__i386__) || (defined(__x86_64__) && !defined(__arm64ec__)) - unsigned int x87, sse; + unsigned int x87, sse = 0; __mingw_control87_2(0, 0, &x87, &sse); env->_Fe_ctl = fenv_encode(x87, sse); __mingw_setfp(NULL, 0, &x87, 0); - __mingw_setfp_sse(NULL, 0, &sse, 0); + if (__mingw_has_sse()) + __mingw_setfp_sse(NULL, 0, &sse, 0); env->_Fe_stat = fenv_encode(x87, sse); #else env->_Fe_ctl = fenv_encode(0, __mingw_controlfp(0, 0)); diff --git a/lib/libc/mingw/misc/fegetexcept.c b/lib/libc/mingw/misc/fegetexcept.c new file mode 100644 index 0000000000000000000000000000000000000000..6bbf8d1bde8b94cae967f5cd5aeafd4a0b4b81d2 --- /dev/null +++ b/lib/libc/mingw/misc/fegetexcept.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include + +int __cdecl fegetexcept(void) +{ + return ~__mingw_controlfp(0, 0) & FE_ALL_EXCEPT; +} diff --git a/lib/libc/mingw/misc/fegetexceptflag.c b/lib/libc/mingw/misc/fegetexceptflag.c index cc9bdde4b761562e4d422c0fa114a425eadf5071..ed1eee6276813058bbba58372c086bddeb2cd0de 100644 --- a/lib/libc/mingw/misc/fegetexceptflag.c +++ b/lib/libc/mingw/misc/fegetexceptflag.c @@ -15,9 +15,10 @@ int fegetexceptflag(fexcept_t *status, int excepts) { #if defined(__i386__) || (defined(__x86_64__) && !defined(__arm64ec__)) - unsigned int x87, sse; + unsigned int x87, sse = 0; __mingw_setfp(NULL, 0, &x87, 0); - __mingw_setfp_sse(NULL, 0, &sse, 0); + if (__mingw_has_sse()) + __mingw_setfp_sse(NULL, 0, &sse, 0); *status = fenv_encode(x87 & excepts, sse & excepts); #else *status = fenv_encode(0, __mingw_statusfp() & excepts); diff --git a/lib/libc/mingw/misc/ftime32.c b/lib/libc/mingw/misc/ftime32.c new file mode 100644 index 0000000000000000000000000000000000000000..2ff79bab457bc2ed4cd6d6804a572d5c862b503b --- /dev/null +++ b/lib/libc/mingw/misc/ftime32.c @@ -0,0 +1,38 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include +#include +#include + +int __cdecl ftime32(struct __timeb32 *tb32); +int __cdecl ftime32(struct __timeb32 *tb32) +{ + /* + * Both 32-bit and 64-bit MS _ftime functions have void return value and do not signal overflow. + * So if 32-bit POSIX ftime function wants to detect overflow it has to call 64-bit _ftime function. + * msvc defines ftime as alias to _ftime, which always fills all members even if they overflow. + * So for compatibility with application code written for msvc ftime function, always fill + * in our mingw-w64 POSIX ftime function all __timeb32 members, even if they are overflowed. + * And if overflow happens, correctly sets errno to EOVERFLOW and returns negative value. + */ + struct __timeb64 tb64; + _ftime64(&tb64); + tb32->time = (__time32_t)tb64.time; /* truncate */ + tb32->millitm = tb64.millitm; + tb32->timezone = tb64.timezone; + tb32->dstflag = tb64.dstflag; + if (tb64.time < INT32_MIN || tb64.time > INT32_MAX) { + errno = EOVERFLOW; + return -1; + } + return 0; +} + +/* On 32-bit systems is ftime ABI using 32-bit time_t */ +#ifndef _WIN64 +int __attribute__ ((alias("ftime32"))) __cdecl ftime(struct timeb *); +#endif diff --git a/lib/libc/mingw/misc/ftime64.c b/lib/libc/mingw/misc/ftime64.c new file mode 100644 index 0000000000000000000000000000000000000000..c30003b0302a7a3606f811a3022921eb67399415 --- /dev/null +++ b/lib/libc/mingw/misc/ftime64.c @@ -0,0 +1,19 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +int __cdecl ftime64(struct __timeb64 *tb64); +int __cdecl ftime64(struct __timeb64 *tb64) +{ + _ftime64(tb64); + return 0; +} + +/* On 64-bit systems is ftime ABI using 64-bit time_t */ +#ifdef _WIN64 +int __attribute__ ((alias("ftime64"))) __cdecl ftime(struct timeb *); +#endif diff --git a/lib/libc/mingw/misc/ftruncate.c b/lib/libc/mingw/misc/ftruncate.c deleted file mode 100644 index 4ee59d67b40134b0dca9d77ac0904229d3bc9793..0000000000000000000000000000000000000000 --- a/lib/libc/mingw/misc/ftruncate.c +++ /dev/null @@ -1,8 +0,0 @@ - -int _chsize(int _FileHandle,long _Size); -int ftruncate(int __fd,int __length); - -int ftruncate(int __fd,int __length) -{ - return _chsize (__fd,__length); -} diff --git a/lib/libc/mingw/misc/getopt.c b/lib/libc/mingw/misc/getopt.c index fc317e34e84fd6bdd107e948b05ab4ee2ca77051..5fb7868429ad7f8cc5c43b8ad767971648130151 100644 --- a/lib/libc/mingw/misc/getopt.c +++ b/lib/libc/mingw/misc/getopt.c @@ -319,6 +319,7 @@ getopt_internal(int nargc, char * const *nargv, const char *options, { char *oli; /* option letter list index */ int optchar, short_too; + size_t var_size; static int posixly_correct = -1; if (options == NULL) @@ -339,7 +340,7 @@ getopt_internal(int nargc, char * const *nargv, const char *options, * optreset != 0 for GNU compatibility. */ if (posixly_correct == -1 || optreset != 0) - posixly_correct = (GetEnvironmentVariableW(L"POSIXLY_CORRECT", NULL, 0) != 0); + posixly_correct = (getenv_s(&var_size, NULL, 0, "POSIXLY_CORRECT") == 0 && var_size > 0); if (*options == '-') flags |= FLAG_ALLARGS; else if (posixly_correct || *options == '+') diff --git a/lib/libc/mingw/misc/memalignment.c b/lib/libc/mingw/misc/memalignment.c new file mode 100644 index 0000000000000000000000000000000000000000..4e6cf1551ac7abbe6a146ac0975c7cbae662c0f4 --- /dev/null +++ b/lib/libc/mingw/misc/memalignment.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include + +size_t memalignment(const void *p); + +size_t memalignment(const void *p) +{ + return (size_t)p & -(size_t)p; +} diff --git a/lib/libc/mingw/misc/memset_explicit.c b/lib/libc/mingw/misc/memset_explicit.c new file mode 100644 index 0000000000000000000000000000000000000000..015f3775a6fcbfbccaa4fdd13a549a9104e9fc3a --- /dev/null +++ b/lib/libc/mingw/misc/memset_explicit.c @@ -0,0 +1,16 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#define __CRT__NO_INLINE +#include + +void * __cdecl +memset_explicit (void *d, int c, size_t len) +{ + memset(d, c, len); + __asm__ __volatile__("" ::: "memory"); + return d; +} diff --git a/lib/libc/mingw/misc/mingw_controlfp.c b/lib/libc/mingw/misc/mingw_controlfp.c index c7f553a4dd8727f18933da038e14659a1b9d9dba..087217a942eb76b69165de45111e2c8cdf539331 100644 --- a/lib/libc/mingw/misc/mingw_controlfp.c +++ b/lib/libc/mingw/misc/mingw_controlfp.c @@ -7,7 +7,14 @@ #include "internal.h" #if defined(__i386__) || (defined(__x86_64__) && !defined(__arm64ec__)) -/* Internal MinGW version of _control87_2 */ +/* Internal MinGW version of MS __control87_2 with following differences: + * - Availability: + * - MinGW provides both i386 and x64 implementation + * - MS provides only i386 implementation and only for msvcr80+ + * - Usage of x87 fwait instruction which triggers pending x87 exceptions: + * - MinGW does not call it + * - MS calls it before reading x87 cw + */ int __mingw_control87_2( unsigned int newval, unsigned int mask, unsigned int *x86_cw, unsigned int *sse2_cw ) { @@ -30,7 +37,20 @@ int __mingw_control87_2( unsigned int newval, unsigned int mask, } #endif -/* Internal MinGW version of _control87 */ +/* Internal MinGW version of MS _control87 with following differences: + * - Usage of x87 fwait instruction which triggers pending x87 exceptions: + * - MinGW does not call it + * - MS x64 does not call it + * - MS i386 calls it before reading x87 cw + * - Source of the flags: + * - MinGW i386 and x64 returns from both x87 and SSE2 + * - MS i386 msvcrt from Vista+ and msvcr80+ returns from both x87 and SSE2 + * - MS i386 msvcrt before Vista and pre-msvcr80 returns from x87 + * - MS x64 returns from SSE2 + * This makes behavior of MinGW version same for all builds, + * always returns information from both x87 and SSE2 and + * never triggers pending x87 exceptions. + */ unsigned int __mingw_controlfp(unsigned int newval, unsigned int mask) { unsigned int flags = 0; diff --git a/lib/libc/mingw/misc/mingw_mbwc_convert.c b/lib/libc/mingw/misc/mingw_mbwc_convert.c index 26e876fdcf2dfe36400a1ffe7c12be77413f0291..90f7a36adade988e95e0d2a71b8da7cd05206a16 100644 --- a/lib/libc/mingw/misc/mingw_mbwc_convert.c +++ b/lib/libc/mingw/misc/mingw_mbwc_convert.c @@ -1,22 +1,51 @@ #include #include #include +#include #include #include int __cdecl __mingw_str_wide_utf8(const wchar_t * const wptr, char **mbptr, size_t *buflen) { - size_t len; + int len; char *buf; int ret = 0; len = WideCharToMultiByte(CP_UTF8, 0, wptr, -1, NULL, 0, NULL, NULL); /* Get utf-8 string length */ + if (len <= 0) { + switch (GetLastError()) { + case ERROR_INVALID_PARAMETER: /* CP_UTF8 is not supported */ + case ERROR_INVALID_FLAGS: /* CP_UTF8 is not supported */ + errno = ENOSYS; + *mbptr = NULL; + if (buflen != NULL) *buflen = 0; + return 0; + case NO_ERROR: + if (len == 0) + break; + /* fallthrough */ + default: + errno = EINVAL; + *mbptr = NULL; + if (buflen != NULL) *buflen = 0; + return 0; + } + } buf = calloc(len + 1, sizeof (char)); /* Can we assume sizeof char always = 1? */ if(!buf) len = 0; else { - if (len != 0) ret = WideCharToMultiByte(CP_UTF8, 0, wptr, -1, buf, len, NULL, NULL); /*Do actual conversion*/ - buf[len] = '0'; /* Must terminate */ + if (len != 0) { + ret = WideCharToMultiByte(CP_UTF8, 0, wptr, -1, buf, len, NULL, NULL); /*Do actual conversion*/ + if (ret < 0 || (ret == 0 && GetLastError() != NO_ERROR)) { + free(buf); + errno = EINVAL; + *mbptr = NULL; + if (buflen != NULL) *buflen = 0; + return 0; + } + } + buf[len] = '\0'; /* Must terminate */ } *mbptr = buf; /* Set string pointer to allocated buffer */ if(buflen != NULL) *buflen = (len) * sizeof (char); /* Give length of allocated memory if needed. */ @@ -25,17 +54,45 @@ int __cdecl __mingw_str_wide_utf8(const wchar_t * const wptr, char **mbptr, size int __cdecl __mingw_str_utf8_wide(const char *const mbptr, wchar_t **wptr, size_t *buflen) { - size_t len; + int len; wchar_t *buf; int ret = 0; len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, mbptr, -1, NULL, 0); /* Get converted size */ + if (len <= 0) { + switch (GetLastError()) { + case ERROR_INVALID_PARAMETER: /* CP_UTF8 or MB_ERR_INVALID_CHARS is not supported */ + case ERROR_INVALID_FLAGS: /* CP_UTF8 or MB_ERR_INVALID_CHARS is not supported */ + errno = ENOSYS; + *wptr = NULL; + if (buflen != NULL) *buflen = 0; + return 0; + case NO_ERROR: + if (len == 0) + break; + /* fallthrough */ + default: + errno = EINVAL; + *wptr = NULL; + if (buflen != NULL) *buflen = 0; + return 0; + } + } buf = calloc(len + 1, sizeof (wchar_t)); /* Allocate memory accordingly */ if(!buf) len = 0; else { - if (len != 0) ret = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, mbptr, -1, buf, len); /* Do conversion */ - buf[len] = L'0'; /* Must terminate */ + if (len != 0) { + ret = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, mbptr, -1, buf, len); /* Do conversion */ + if (ret < 0 || (ret == 0 && GetLastError() != NO_ERROR)) { + free(buf); + errno = EINVAL; + *wptr = NULL; + if (buflen != NULL) *buflen = 0; + return 0; + } + } + buf[len] = L'\0'; /* Must terminate */ } *wptr = buf; /* Set string pointer to allocated buffer */ if (buflen != NULL) *buflen = len * sizeof (wchar_t); /* Give length of allocated memory if needed. */ diff --git a/lib/libc/mingw/misc/mingw_setfp.c b/lib/libc/mingw/misc/mingw_setfp.c index 14fda6e248814b94547042e6ee4af3fc63487edc..137a5556ed5ba6a34504690353e8c99b62affc93 100644 --- a/lib/libc/mingw/misc/mingw_setfp.c +++ b/lib/libc/mingw/misc/mingw_setfp.c @@ -118,18 +118,52 @@ void __mingw_setfp( unsigned int *cw, unsigned int cw_mask, #if defined(__arm64ec__) __mingw_setfp_sse(cw, cw_mask, sw, sw_mask); #elif defined(__i386__) || defined(__x86_64__) - unsigned long oldcw = 0, newcw = 0; - unsigned long oldsw = 0, newsw = 0; + unsigned long newcw = 0, newsw = 0; unsigned int flags; + int use_fnstenv_fldenv; + struct { + WORD control_word; + WORD unused1; + WORD status_word; + WORD unused2; + WORD tag_word; + WORD unused3; + DWORD instruction_pointer; + WORD code_segment; + WORD unused4; + DWORD operand_addr; + WORD data_segment; + WORD unused5; + } fenv; cw_mask &= _MCW_EM | _MCW_IC | _MCW_RC | _MCW_PC; sw_mask &= _MCW_EM; + use_fnstenv_fldenv = ((sw && sw_mask != 0) || (cw && cw_mask != 0)); + + if (!use_fnstenv_fldenv) + { + /* Fast path: when we are not going to change sw/cw which is indicated + * by zero mask then load sw/cw via fast fnstsw/fnstcw instruction. + */ + __asm__ __volatile__( "fnstsw %0" : "=m" (newsw) ); + __asm__ __volatile__( "fnstcw %0" : "=m" (newcw) ); + } + else + { + /* Slow path: when we are going to change sw/cw or we do not know yet then + * load whole x87 env via slow fnstenv as it is needed for changing sw/cw. + * Note that fnstenv masks all floating-point exceptions after storing the + * x87 env. And after the fnstenv call, it is always required to restore + * masking of previous floating-point exceptions via the fldenv call. + */ + __asm__ __volatile__( "fnstenv %0" : "=m" (fenv) ); + newsw = fenv.status_word; + newcw = fenv.control_word; + } + if (sw) { - __asm__ __volatile__( "fstsw %0" : "=m" (newsw) ); - oldsw = newsw; - flags = 0; if (newsw & 0x1) flags |= _SW_INVALID; if (newsw & 0x2) flags |= _SW_DENORMAL; @@ -151,9 +185,6 @@ void __mingw_setfp( unsigned int *cw, unsigned int cw_mask, if (cw) { - __asm__ __volatile__( "fstcw %0" : "=m" (newcw) ); - oldcw = newcw; - flags = 0; if (newcw & 0x1) flags |= _EM_INVALID; if (newcw & 0x2) flags |= _EM_DENORMAL; @@ -198,35 +229,18 @@ void __mingw_setfp( unsigned int *cw, unsigned int cw_mask, if (*cw & _IC_AFFINE) newcw |= 0x1000; } - if (oldsw != newsw && (newsw & 0x3f)) + /* For changing sw/cw always use fldenv. + * Do not use fldcw as it can generate pending floating-point exception. + * When the fnstenv was called then it is required to call fldenv to + * restore previous floating-point exceptions. + */ + if (use_fnstenv_fldenv) { - struct { - WORD control_word; - WORD unused1; - WORD status_word; - WORD unused2; - WORD tag_word; - WORD unused3; - DWORD instruction_pointer; - WORD code_segment; - WORD unused4; - DWORD operand_addr; - WORD data_segment; - WORD unused5; - } fenv; - - __asm__ __volatile__( "fnstenv %0" : "=m" (fenv) ); fenv.control_word = newcw; fenv.status_word = newsw; __asm__ __volatile__( "fldenv %0" : : "m" (fenv) : "st", "st(1)", "st(2)", "st(3)", "st(4)", "st(5)", "st(6)", "st(7)" ); - return; } - - if (oldsw != newsw) - __asm__ __volatile__( "fnclex" ); - if (oldcw != newcw) - __asm__ __volatile__( "fldcw %0" : : "m" (newcw) ); #elif defined(__aarch64__) ULONG_PTR old_fpsr = 0, fpsr = 0, old_fpcr = 0, fpcr = 0; unsigned int flags; diff --git a/lib/libc/mingw/misc/mingw_wcstold.c b/lib/libc/mingw/misc/mingw_wcstold.c index 2f66bee2b6399515280908dc1782a721a389d094..407e1696cab5ef14fbafdc196115611b08b3840f 100644 --- a/lib/libc/mingw/misc/mingw_wcstold.c +++ b/lib/libc/mingw/misc/mingw_wcstold.c @@ -23,8 +23,6 @@ #include #include -#include "mb_wc_common.h" - long double __mingw_wcstold (const wchar_t * __restrict__ wcs, wchar_t ** __restrict__ wcse) { char * cs; diff --git a/lib/libc/mingw/misc/mkdtemp.c b/lib/libc/mingw/misc/mkdtemp.c new file mode 100644 index 0000000000000000000000000000000000000000..977aff2f13b47e8fe24a2dd1b4296c029eb0a8cc --- /dev/null +++ b/lib/libc/mingw/misc/mkdtemp.c @@ -0,0 +1,83 @@ +#define _CRT_RAND_S +#include +#include +#include +#include +#include +#include + +/* + The mkdtemp() function generates a unique temporary name from template, + the creates the directory with that name and returns pointer to the modified + template string. + + The template may be any name with at least six trailing Xs, for example + /tmp/temp.XXXXXXXX. The trailing Xs are replaced with a unique digit and + letter combination that makes the file name unique. Since it will be + modified, template must not be a string constant, but should be declared as + a character array. + */ +char *__cdecl mkdtemp (char *template_name) +{ + int j, ret, len, index; + unsigned int i, r; + + /* These are the (62) characters used in temporary filenames. */ + static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + + /* The last six characters of template must be "XXXXXX" */ + if (template_name == NULL || (len = strlen (template_name)) < 6 + || memcmp (template_name + (len - 6), "XXXXXX", 6)) { + errno = EINVAL; + return NULL; + } + + /* User may supply more than six trailing Xs */ + for (index = len - 6; index > 0 && template_name[index - 1] == 'X'; index--); + + /* Like OpenBSD, mkdtemp() will try 2 ** 31 combinations before giving up. */ + for (i = 0; i <= INT_MAX; i++) { + for(j = index; j < len; j++) { + if (rand_s(&r)) + r = rand() ^ _time32(NULL); + template_name[j] = letters[r % 62]; + } + ret = _mkdir(template_name); + if (ret == 0) return template_name; + if (ret != 0 && errno != EEXIST) return NULL; + } + + return NULL; +} + +#if 0 +#include +int main () +{ + int i; + + for (i = 0; i < 10; i++) { + char template_name[] = { "temp_XXXXXX" }; + char *name = mkdtemp (template_name); + if (name) { + fprintf (stderr, "name=%s\n", name); + rmdir (name); + } else { + fprintf (stderr, "errno=%d\n", errno); + } + } + + for (i = 0; i < 10; i++) { + char template_name[] = { "temp_XXXXXXXX" }; + char *name = mkdtemp (template_name); + if (name) { + fprintf (stderr, "name=%s\n", name); + rmdir (name); + } else { + fprintf (stderr, "errno=%d\n", errno); + } + } + + return 0; +} +#endif diff --git a/lib/libc/mingw/misc/mkstemp.c b/lib/libc/mingw/misc/mkstemp.c index 7291efcc811b1dcd061848dd02edffa8411455f4..b42df3cb65f8922a0a098716fb0336385a319607 100644 --- a/lib/libc/mingw/misc/mkstemp.c +++ b/lib/libc/mingw/misc/mkstemp.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -46,7 +47,7 @@ int __cdecl mkstemp (char *template_name) for (i = 0; i <= INT_MAX; i++) { for(j = index; j < len; j++) { if (rand_s(&r)) - r = rand(); + r = rand() ^ _time32(NULL); template_name[j] = letters[r % 62]; } fd = _sopen(template_name, diff --git a/lib/libc/mingw/misc/ucrt_mbsinit.c b/lib/libc/mingw/misc/ucrt_mbsinit.c new file mode 100644 index 0000000000000000000000000000000000000000..d653372986a0da787acff8e3fc4a0dbe73c57bfd --- /dev/null +++ b/lib/libc/mingw/misc/ucrt_mbsinit.c @@ -0,0 +1,14 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#undef __MSVCRT_VERSION__ +#define _UCRT +#include + +int __cdecl mbsinit(const mbstate_t *_P) +{ + return (!_P || _P->_Wchar == 0); +} diff --git a/lib/libc/mingw/misc/wctob.c b/lib/libc/mingw/misc/wctob.c new file mode 100644 index 0000000000000000000000000000000000000000..4a3c2408c982ec90590b4b5c0baf9823709ef4b8 --- /dev/null +++ b/lib/libc/mingw/misc/wctob.c @@ -0,0 +1,39 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#define __LARGE_MBSTATE_T + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include +#include +#include +#include +#include +#include + +int wctob (wint_t wc) +{ + /* Return early */ + if (IS_LOW_SURROGATE (wc) || IS_HIGH_SURROGATE (wc) || wc == WEOF) { + return EOF; + } + + mbstate_t state = {0}; + /* Buffer large enough to hold any multibyte character */ + char mbc[MB_LEN_MAX]; + + size_t length = wcrtomb (mbc, wc, &state); + if (length > 1) { + return EOF; + } + + return (unsigned char) mbc[0]; +} + +int (__cdecl *__MINGW_IMP_SYMBOL (wctob)) (wint_t) = wctob; diff --git a/lib/libc/mingw/stdio/__mingw_fix_fstat_finish.c b/lib/libc/mingw/stdio/__mingw_fix_fstat_finish.c new file mode 100644 index 0000000000000000000000000000000000000000..724b9607657d255b3bd6de6a784e8324f7c68e0e --- /dev/null +++ b/lib/libc/mingw/stdio/__mingw_fix_fstat_finish.c @@ -0,0 +1,18 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include +#include +#include "__mingw_fix_stat.h" + +int __mingw_fix_fstat_finish(int ret, int fd, unsigned short *mode) +{ + /* msvcrt's _fstat fills S_IFREG for directories. Fix it to S_IFDIR. */ + BY_HANDLE_FILE_INFORMATION fi; + if (ret == 0 && S_ISREG(*mode) && GetFileInformationByHandle((HANDLE)_get_osfhandle(fd), &fi) && (fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + *mode = (*mode & ~S_IFMT) | S_IFDIR; + return ret; +} diff --git a/lib/libc/mingw/stdio/__mingw_fix_stat.h b/lib/libc/mingw/stdio/__mingw_fix_stat.h new file mode 100644 index 0000000000000000000000000000000000000000..438182913f73dbbc7cd54724a779b64feadf9963 --- /dev/null +++ b/lib/libc/mingw/stdio/__mingw_fix_stat.h @@ -0,0 +1,65 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#ifndef __MINGW_FIX_STAT_H +#define __MINGW_FIX_STAT_H + +char* __mingw_fix_stat_path (const char* _path); +wchar_t* __mingw_fix_wstat_path (const wchar_t* _path); +int __mingw_fix_stat_finish(int ret, const void *orig_path, void *used_path, + unsigned short mode); +int __mingw_fix_fstat_finish(int ret, int fd, unsigned short *mode); +int __mingw_fix_wstat_fallback_fd(int ret, const wchar_t *filename, unsigned short mode); +int __mingw_fix_stat_fallback_fd(int ret, const char *filename, unsigned short mode); + +#define __MINGW_FIXED_FSTAT(fstat_func, fd, obj) ({ \ + int _fstat_ret = fstat_func(fd, obj); \ + _fstat_ret = __mingw_fix_fstat_finish(_fstat_ret, fd, &(obj)->st_mode); \ + _fstat_ret; \ +}) + +#define __MINGW_CHOOSE_CHAR_WCHART_EXPR(var, char_expr, wchart_expr, other_expr) \ + __builtin_choose_expr(__builtin_types_compatible_p(typeof(var), char), char_expr, \ + __builtin_choose_expr(__builtin_types_compatible_p(typeof(var), wchar_t), wchart_expr, \ + other_expr)) + +#define __MINGW_PATH_PTR_TYPE(path) \ + typeof(__MINGW_CHOOSE_CHAR_WCHART_EXPR((path)[0], (char*)0, (wchar_t*)0, (void)0)) + +#define __MINGW_FIX_STAT_PATH(path) \ + __MINGW_CHOOSE_CHAR_WCHART_EXPR((path)[0], __mingw_fix_stat_path, __mingw_fix_wstat_path, NULL)(path) + +#define __MINGW_FIX_STAT_FALLBACK_FD(ret, path, mode) \ + __MINGW_CHOOSE_CHAR_WCHART_EXPR((path)[0], __mingw_fix_stat_fallback_fd, __mingw_fix_wstat_fallback_fd, NULL)((ret), (path), (mode)) + +#define __MINGW_CREATE_FILE(path, ...) \ + __MINGW_CHOOSE_CHAR_WCHART_EXPR((path)[0], CreateFileA, CreateFileW, NULL)((path), ##__VA_ARGS__) + +#define __MINGW_STR_PBRK(path, accept) \ + __MINGW_CHOOSE_CHAR_WCHART_EXPR((path)[0], strpbrk, wcspbrk, NULL)((path), __MINGW_CHOOSE_CHAR_WCHART_EXPR((path)[0], accept, L##accept, NULL)) + +#define __MINGW_FIXED_STAT(fstat_func, stat_func, filename, obj) ({ \ + /* First call CRT _stat function with mingw path correction */ \ + int _stat_ret; \ + __MINGW_PATH_PTR_TYPE(filename) path = __MINGW_FIX_STAT_PATH(filename); \ + if (path == NULL && (filename) != NULL) { \ + _stat_ret = -1; \ + } else { \ + _stat_ret = (stat_func)(path, (obj)); \ + _stat_ret = __mingw_fix_stat_finish(_stat_ret, (filename), path, (obj)->st_mode); \ + /* If the CRT _stat function failed then fallback to mingw fstat function */ \ + int _stat_fd = __MINGW_FIX_STAT_FALLBACK_FD(_stat_ret, (filename), (obj)->st_mode); \ + if (_stat_fd >= 0) { \ + _stat_ret = fstat_func(_stat_fd, (void*)(obj)); \ + int _stat_errno = errno; \ + close(_stat_fd); \ + errno = _stat_errno; \ + } \ + } \ + _stat_ret; \ +}) + +#endif diff --git a/lib/libc/mingw/stdio/__mingw_fix_stat_fallback_fd.c b/lib/libc/mingw/stdio/__mingw_fix_stat_fallback_fd.c new file mode 100644 index 0000000000000000000000000000000000000000..b8a6e4450e79623e07413a248557758296c8871d --- /dev/null +++ b/lib/libc/mingw/stdio/__mingw_fix_stat_fallback_fd.c @@ -0,0 +1,44 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include +#include +#include +#include +#include +#include +#include "__mingw_fix_stat.h" + +#ifdef MINGW_FIX_STAT_IS_WIDE +int __mingw_fix_wstat_fallback_fd(int ret, const wchar_t *filename, unsigned short mode) +#else +int __mingw_fix_stat_fallback_fd(int ret, const char *filename, unsigned short mode) +#endif +{ + int fd = -1; + + /* + * CRT _stat does not handle paths with ? and * characters and returns ENOENT. + * This prevents _stat from working on paths like \\?\C:\foo.txt. + * CRT _stat incorrectly sets S_IFREG for pipe and char devices. + * For these cases open specified filename and return its fd which will be passed to CRT fstat() by caller. + */ + if ((ret < 0 && errno == ENOENT && __MINGW_STR_PBRK((filename), "?*")) || (ret == 0 && S_ISREG(mode))) { + HANDLE handle = __MINGW_CREATE_FILE((filename), FILE_READ_ATTRIBUTES, FILE_SHARE_VALID_FLAGS, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); + if (handle != NULL && handle != INVALID_HANDLE_VALUE) { + /* Open filename and return fd if CRT _stat failed or if the file is not regular disk file. */ + if (ret < 0 || GetFileType(handle) != FILE_TYPE_DISK) { + int saved_errno = errno; + fd = _open_osfhandle((intptr_t)handle, O_RDONLY); + errno = saved_errno; + } + if (fd < 0) + CloseHandle(handle); + } + } + + return fd; +} diff --git a/lib/libc/mingw/stdio/__mingw_fix_stat_finish.c b/lib/libc/mingw/stdio/__mingw_fix_stat_finish.c new file mode 100644 index 0000000000000000000000000000000000000000..8b7a128c272229e2bf52762db501a46a770271af --- /dev/null +++ b/lib/libc/mingw/stdio/__mingw_fix_stat_finish.c @@ -0,0 +1,36 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include +#include +#include +#include "__mingw_fix_stat.h" + +int __mingw_fix_stat_finish(int ret, const void *orig_path, void *used_path, + unsigned short mode) +{ + /* + * If the original pathname and used pathname differ, it means that + * __mingw_fix_stat_path or __mingw_fix_wstat_path had to allocate + * a temporary buffer and remove a trailing directory separator. + * In this case the temporary allocation has to be freed, and the + * stat function succeeds only if the pathname was a directory. + */ + if (orig_path != used_path) { + /* Save errno because we call free. */ + int saved_errno = errno; + free(used_path); + + if (ret == 0 && !S_ISDIR(mode)) { + ret = -1; + saved_errno = ENOTDIR; + } + + errno = saved_errno; + } + + return ret; +} diff --git a/lib/libc/mingw/stdio/__mingw_fix_stat_path.c b/lib/libc/mingw/stdio/__mingw_fix_stat_path.c index 564658473f02a6287b2b70287fc315d6dc6cb392..05c029e3c6a7b3b353cb947daa9432c11a8b4c79 100644 --- a/lib/libc/mingw/stdio/__mingw_fix_stat_path.c +++ b/lib/libc/mingw/stdio/__mingw_fix_stat_path.c @@ -4,8 +4,21 @@ * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif #include #include +#include +#include +#include "__mingw_fix_stat.h" + +static const char* next_char (unsigned int cp, const char* p) +{ + /* If it is a lead byte, skip the next byte except if it is \0. + * If it is \0, it's not a valid DBCS string. */ + return (__mingw_isleadbyte_cp (*p, cp) && p[1] != '\0') ? p + 2 : p + 1; +} /** * Returns _path without trailing slash if any @@ -17,10 +30,10 @@ * to free it. */ -char* __mingw_fix_stat_path (const char* _path); char* __mingw_fix_stat_path (const char* _path) { - int len; + const unsigned int cp = __mingw_filename_cp (); + size_t len; char *p; p = (char*)_path; @@ -28,24 +41,27 @@ char* __mingw_fix_stat_path (const char* _path) if (_path && *_path) { len = strlen (_path); - /* Ignore X:\ */ - + /* Ignore X:\ + * No ANSI or OEM code page uses ':' as a trail byte. (The code page 1361 + * cannot be used as ANSI or OEM code page.) */ if (len <= 1 || ((len == 2 || len == 3) && _path[1] == ':')) return p; + const char *r = _path; + /* Check UNC \\abc\\ */ if ((_path[0] == '\\' || _path[0] == '/') && (_path[1] == '\\' || _path[1] == '/')) { - const char *r = &_path[2]; + r = &_path[2]; while (*r != 0 && *r != '\\' && *r != '/') - ++r; + r = next_char (cp, r); if (*r != 0) ++r; if (*r == 0) return p; while (*r != 0 && *r != '\\' && *r != '/') - ++r; + r = next_char (cp, r); if (*r != 0) ++r; if (*r == 0) @@ -54,7 +70,19 @@ char* __mingw_fix_stat_path (const char* _path) if (_path[len - 1] == '/' || _path[len - 1] == '\\') { + /* Return if the last character is a double-byte character. + * Its trail byte could be a '\' which must not be interpret + * as a directory separator. */ + while (r[1] != '\0') + { + r = next_char (cp, r); + if (*r == '\0') + return p; + } + p = (char*)malloc (len); + if (p == NULL) + return NULL; /* malloc has set errno. */ memcpy (p, _path, len - 1); p[len - 1] = '\0'; } diff --git a/lib/libc/mingw/stdio/__mingw_fix_wstat_fallback_fd.c b/lib/libc/mingw/stdio/__mingw_fix_wstat_fallback_fd.c new file mode 100644 index 0000000000000000000000000000000000000000..1182ab55855d09e73c019dab7f647e395d23a0a6 --- /dev/null +++ b/lib/libc/mingw/stdio/__mingw_fix_wstat_fallback_fd.c @@ -0,0 +1,2 @@ +#define MINGW_FIX_STAT_IS_WIDE +#include "__mingw_fix_stat_fallback_fd.c" diff --git a/lib/libc/mingw/stdio/__mingw_fix_wstat_path.c b/lib/libc/mingw/stdio/__mingw_fix_wstat_path.c index 838e4aa30d39c44a959abb701f1f19c461a930af..5826c41885f06eaa86b88fc25fb0051758b30761 100644 --- a/lib/libc/mingw/stdio/__mingw_fix_wstat_path.c +++ b/lib/libc/mingw/stdio/__mingw_fix_wstat_path.c @@ -6,6 +6,7 @@ #include #include +#include "__mingw_fix_stat.h" /** * Returns _path without trailing slash if any @@ -17,10 +18,9 @@ * to free it. */ -wchar_t* __mingw_fix_wstat_path (const wchar_t* _path); wchar_t* __mingw_fix_wstat_path (const wchar_t* _path) { - int len; + size_t len; wchar_t *p; p = (wchar_t*)_path; @@ -55,6 +55,8 @@ wchar_t* __mingw_fix_wstat_path (const wchar_t* _path) if (_path[len - 1] == L'/' || _path[len - 1] == L'\\') { p = (wchar_t*)malloc (len * sizeof(wchar_t)); + if (p == NULL) + return NULL; /* malloc has set errno. */ memcpy (p, _path, (len - 1) * sizeof(wchar_t)); p[len - 1] = L'\0'; } diff --git a/lib/libc/mingw/stdio/fseeko32.c b/lib/libc/mingw/stdio/fseeko32.c deleted file mode 100644 index ca222ffbe1e45c52f330e71370262917aa9ecd61..0000000000000000000000000000000000000000 --- a/lib/libc/mingw/stdio/fseeko32.c +++ /dev/null @@ -1,7 +0,0 @@ -/*non-standard*/ -#include - -int fseeko(FILE* stream, _off_t offset, int whence){ - _off64_t off = offset; - return fseeko64(stream,off,whence); -} diff --git a/lib/libc/mingw/stdio/fseeko64.c b/lib/libc/mingw/stdio/fseeko64.c deleted file mode 100644 index 316163497b78fe1fb972f53ca13c360376b8f63b..0000000000000000000000000000000000000000 --- a/lib/libc/mingw/stdio/fseeko64.c +++ /dev/null @@ -1,34 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ -#include -#include -#include - -int fseeko64 (FILE* stream, _off64_t offset, int whence) -{ - fpos_t pos; - if (whence == SEEK_CUR) - { - /* If stream is invalid, fgetpos sets errno. */ - if (fgetpos (stream, &pos)) - return (-1); - pos += (fpos_t) offset; - } - else if (whence == SEEK_END) - { - /* If writing, we need to flush before getting file length. */ - fflush (stream); - pos = (fpos_t) (_filelengthi64 (_fileno (stream)) + offset); - } - else if (whence == SEEK_SET) - pos = (fpos_t) offset; - else - { - errno = EINVAL; - return (-1); - } - return fsetpos (stream, &pos); -} diff --git a/lib/libc/mingw/stdio/ftello.c b/lib/libc/mingw/stdio/ftello.c deleted file mode 100644 index 1a63987feac13a668a1f74e2baa3044e3be1c446..0000000000000000000000000000000000000000 --- a/lib/libc/mingw/stdio/ftello.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -_off_t ftello(FILE * stream){ - return (_off_t) ftello64(stream); -} diff --git a/lib/libc/mingw/stdio/ftruncate64.c b/lib/libc/mingw/stdio/mingw_ftruncate64.c similarity index 95% rename from lib/libc/mingw/stdio/ftruncate64.c rename to lib/libc/mingw/stdio/mingw_ftruncate64.c index 589645c77e49f4e5fca3bdd23edcdea04bae234b..086588ebd17f84ad44d79fa72727bf1d7714d9c9 100644 --- a/lib/libc/mingw/stdio/ftruncate64.c +++ b/lib/libc/mingw/stdio/mingw_ftruncate64.c @@ -12,6 +12,7 @@ #include #include +#if 0 /* Mutually exclusive methods We check disk space as truncating more than the allowed space results in file getting mysteriously deleted @@ -82,7 +83,7 @@ static LPWSTR xp_normalize_fn(const LPWSTR fn) { free(target); return NULL; } - _snwprintf(ret,MAX_PATH,L"%ws%ws",tmplt,fn+wcslen(target)); + _snwprintf(ret,MAX_PATH,L"%ls%ls",tmplt,fn+wcslen(target)); return ret; } @@ -206,10 +207,10 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) dirpath = NULL; vol = FindFirstVolumeW(volumeid,50); - /* wprintf(L"%d - %ws\n",wcslen(volumeid),volumeid); */ + /* wprintf(L"%d - %ls\n",wcslen(volumeid),volumeid); */ do { check = GetVolumeInformationW(volumeid,volumepath,MAX_PATH+1,&volumeserial,NULL,NULL,NULL,0); - /* wprintf(L"GetVolumeInformationW %d id %ws path %ws error %d\n",check,volumeid,volumepath,GetLastError()); */ + /* wprintf(L"GetVolumeInformationW %d id %ls path %ls error %d\n",check,volumeid,volumepath,GetLastError()); */ if(volumeserial == fileinfo.dwVolumeSerialNumber) { dirpath = volumeid; break; @@ -238,8 +239,10 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) } /* We have enough space to truncate/expand */ return 0; } +#endif -int ftruncate64(int __fd, _off64_t __length) { +int __cdecl __mingw_ftruncate64(int __fd, _off64_t __length); +int __cdecl __mingw_ftruncate64(int __fd, _off64_t __length) { HANDLE f; LARGE_INTEGER quad; DWORD check; @@ -268,11 +271,13 @@ int ftruncate64(int __fd, _off64_t __length) { goto errorout; } +#if 0 /* Check available space */ check = checkfreespace(f,__length); if (check != 0) { return -1; /* Error, errno already set */ } +#endif quad.QuadPart = __length; check = SetFilePointer(f, (LONG)quad.LowPart, &(quad.HighPart), FILE_BEGIN); @@ -306,6 +311,10 @@ int ftruncate64(int __fd, _off64_t __length) { return -1; } +#ifdef TEST_FTRUNCATE64 +#define ftruncate64 __mingw_ftruncate64 +#endif + #if (TEST_FTRUNCATE64 == 1) int main(){ LARGE_INTEGER sz; @@ -320,8 +329,8 @@ int main(){ /* path = xp_getfilepath((HANDLE)_get_osfhandle(f),sz); dir = getdirpath(path); GetDiskFreeSpaceExW(dir,&freespace,NULL,NULL); - wprintf(L"fs - %ws\n",path); - wprintf(L"dirfs - %ws\n",dir); + wprintf(L"fs - %ls\n",path); + wprintf(L"dirfs - %ls\n",dir); wprintf(L"free - %I64u\n",freespace.QuadPart); free(dir); free(path);*/ diff --git a/lib/libc/mingw/stdio/mingw_pformat.c b/lib/libc/mingw/stdio/mingw_pformat.c index d094e7ace25da1ea5fa1ea0e325262b3b9e80b1f..082d67f39224b9582df70629c3f94fadab7440cb 100644 --- a/lib/libc/mingw/stdio/mingw_pformat.c +++ b/lib/libc/mingw/stdio/mingw_pformat.c @@ -66,6 +66,7 @@ #include #include #include +#include #ifdef __ENABLE_DFP #ifndef __STDC_WANT_DEC_FP__ @@ -163,6 +164,12 @@ typedef union ATTRIB_GCC_STRUCT __uI128 { #define PFORMAT_XMASK 0x0000000F #define PFORMAT_XSHIFT 0x00000004 +/* `%b' and `%B' format digit extraction mask, and shift count... + * (These are constant, and do not propagate through the flags). + */ +#define PFORMAT_BMASK 0x00000001 +#define PFORMAT_BSHIFT 0x00000001 + /* The radix point character, used in floating point formats, is * localised on the basis of the active LC_NUMERIC locale category. * It is stored locally, as a `wchar_t' entity, which is converted @@ -361,6 +368,23 @@ void __bigint_to_stringx(const uint32_t *digits, const uint32_t digitlen, char * buff[bufflen - 1] = '\0'; } +/* LSB first, binary version */ +static +void __bigint_to_stringb(const uint32_t *digits, const uint32_t digitlen, char *buff, const uint32_t bufflen){ + const uint32_t digitsize = sizeof(*digits) * 8; + const uint64_t bits = digitsize * digitlen; + uint32_t pos = bufflen - 2; + + for(uint32_t i = 0; i < bits; i++){ + buff[pos] = (digits[i / digitsize] & (1 << (i % digitsize))) ? '1' : '0'; + if(!pos) break; /* sanity check */ + pos--; + } + /* Fill any remaining leading positions with zeros */ + memset(buff, '0', pos + 1); + buff[bufflen - 1] = '\0'; +} + /* LSB first, octet version */ static void __bigint_to_stringo(const uint32_t *digits, const uint32_t digitlen, char *buff, const uint32_t bufflen){ @@ -377,8 +401,8 @@ void __bigint_to_stringo(const uint32_t *digits, const uint32_t digitlen, char * pos--; } } - if(pos < bufflen - 1) - memset(buff,'0', pos + 1); + /* Fill any remaining leading positions with zeros */ + memset(buff, '0', pos + 1); buff[bufflen - 1] = '\0'; } #endif /* defined(__ENABLE_PRINTF128) */ @@ -569,8 +593,8 @@ void __pformat_wputchars( const wchar_t *s, int count, __pformat_t *stream ) * output quota is honoured. */ char buf[16]; - mbstate_t state; - int len = wcrtomb(buf, L'\0', &state); + mbstate_t state = {0}; + int len; if( (stream->precision >= 0) && (count > stream->precision) ) /* @@ -657,7 +681,7 @@ void __pformat_wputchars( const wchar_t *s, int count, __pformat_t *stream ) __pformat_putc( '\x20', stream ); len = count; - while(len-- > 0 && *s != 0) + while(len-- > 0) { __pformat_putc(*s++, stream); } @@ -752,12 +776,12 @@ void __pformat_int( __pformat_intarg_t value, __pformat_t *stream ) */ __bigint_to_string(value.__pformat_u128_t.t128_2.digits32, 4, tmp_buff, bufflen); - __bigint_trim_leading_zeroes(tmp_buff,1); + __bigint_trim_leading_zeroes(tmp_buff, 0); memset(p,0,bufflen); for(int32_t i = strlen(tmp_buff) - 1; i >= 0; i--){ - if ( i && (stream->flags & PFORMAT_GROUPED) != 0 && stream->thousands_chr != 0 - && (i % 4) == 3) + if (p != buf && (stream->flags & PFORMAT_GROUPED) != 0 && stream->thousands_chr != 0 + && ((p - buf) % 4) == 3) { *p++ = ','; } @@ -883,7 +907,7 @@ while( value.__pformat_ullong_t ) static void __pformat_xint( int fmt, __pformat_intarg_t value, __pformat_t *stream ) { - /* Handler for `%o', `%p', `%x' and `%X' conversions. + /* Handler for `%o', `%p', `%x', `%X', `%b' and `%B' conversions. * * These can be implemented using a simple `mask and shift' strategy; * set up the mask and shift values appropriate to the conversion format, @@ -891,7 +915,8 @@ void __pformat_xint( int fmt, __pformat_intarg_t value, __pformat_t *stream ) * digits of the formatted value, in preparation for output. */ int width; - int shift = (fmt == 'o') ? PFORMAT_OSHIFT : PFORMAT_XSHIFT; + int shift = (fmt == 'o') ? PFORMAT_OSHIFT : + (fmt == 'b' || fmt == 'B') ? PFORMAT_BSHIFT : PFORMAT_XSHIFT; int bufflen = __pformat_int_bufsiz(2, shift, stream); char *buf = NULL; #ifdef __ENABLE_PRINTF128 @@ -904,16 +929,19 @@ void __pformat_xint( int fmt, __pformat_intarg_t value, __pformat_t *stream ) tmp_buf = alloca(bufflen); if(fmt == 'o'){ __bigint_to_stringo(value.__pformat_u128_t.t128_2.digits32,4,tmp_buf,bufflen); + } else if(fmt == 'b' || fmt == 'B'){ + __bigint_to_stringb(value.__pformat_u128_t.t128_2.digits32,4,tmp_buf,bufflen); } else { __bigint_to_stringx(value.__pformat_u128_t.t128_2.digits32,4,tmp_buf,bufflen, !(fmt & PFORMAT_XCASE)); } __bigint_trim_leading_zeroes(tmp_buf,0); memset(buf,0,bufflen); - for(int32_t i = strlen(tmp_buf); i >= 0; i--) + for(int32_t i = strlen(tmp_buf)-1; i >= 0; i--) *p++ = tmp_buf[i]; #else - int mask = (fmt == 'o') ? PFORMAT_OMASK : PFORMAT_XMASK; + int mask = (fmt == 'o') ? PFORMAT_OMASK : + (fmt == 'b' || fmt == 'B') ? PFORMAT_BMASK : PFORMAT_XMASK; while( value.__pformat_ullong_t ) { /* Encode the specified non-zero input value as a sequence of digits, @@ -975,7 +1003,7 @@ void __pformat_xint( int fmt, __pformat_intarg_t value, __pformat_t *stream ) if( ((width = stream->width) > 0) && (fmt != 'o') && (stream->flags & PFORMAT_HASHED) ) /* - * For `%#x' or `%#X' formats, (which have the `#' flag set), + * For `%#x', `%#X', `%#b' or `%#B' formats, (which have the `#' flag set), * further reduce the padding width to accommodate the radix * indicating prefix. */ @@ -1468,7 +1496,10 @@ void __pformat_emit_efloat( int sign, char *value, int e, __pformat_t *stream ) * include the following exponent). */ int exp_width = 1; - __pformat_intarg_t exponent; exponent.__pformat_llong_t = e -= 1; + __pformat_intarg_t exponent; + e -= 1; + exponent.__pformat_u128_t.t128.digits[1] = e < 0 ? -1 : 0; + exponent.__pformat_u128_t.t128.digits[0] = e; /* Determine how many digit positions are required for the exponent. */ @@ -1881,14 +1912,15 @@ void __pformat_gfloat( long double x, __pformat_t *stream ) * precede the radix point, but we truncate any balance following * it, to suppress output of non-significant trailing zeros... */ - if( ((stream->precision = strlen( value ) - intlen) < 0) - /* - * This may require a compensating adjustment to the field - * width, to accommodate significant trailing zeros, which - * precede the radix point... - */ - && (stream->width > 0) ) - stream->width += stream->precision; + stream->precision = strlen( value ) - intlen; + + /* When the mantissa is shorter than the number of integer digits + * (e.g., 100000 has mantissa "1" but requires 6 digit positions), + * precision becomes negative. Clamp to zero to represent no + * fractional digits. + */ + if( stream->precision < 0 ) + stream->precision = 0; /* Now, we format the result as any other fixed point value. */ @@ -1945,7 +1977,7 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream ) * representation of the argument value. */ char buf[18 + 6], *p = buf; - __pformat_intarg_t exponent; short exp_width = 2; + short exp_width = 2; if (value.__pformat_fpreg_mantissa != 0 || value.__pformat_fpreg_exponent != 0) @@ -2197,6 +2229,7 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream ) stream->width += exp_width; stream->flags |= PFORMAT_SIGNED; /* sign extend */ + __pformat_intarg_t exponent; exponent.__pformat_u128_t.t128.digits[1] = (value.__pformat_fpreg_exponent < 0) ? -1 : 0; exponent.__pformat_u128_t.t128.digits[0] = value.__pformat_fpreg_exponent; __pformat_int( exponent, stream ); @@ -2506,6 +2539,64 @@ __pformat (int flags, void *dest, int max, const APICHAR *fmt, va_list argv) */ __pformat_puts( va_arg( argv, char * ), &stream ); goto format_scan; + + case 'Z': + /* + * The logic for `%Z` length modifier is quite complicated. + * + * for printf: + * `%Z` - UNICODE_STRING for UCRT; ANSI_STRING for crtdll,msvcrt10,msvcrt,msvcr80-msvcr120 + * `%hZ` - ANSI_STRING + * `%lZ` - UNICODE_STRING for UCRT; ANSI_STRING for crtdll,msvcrt10,msvcrt,msvcr80-msvcr120 + * `%wZ` - UNICODE_STRING + * + * for wprintf: + * `%Z` - ANSI_STRING + * `%hZ` - ANSI_STRING + * `%lZ` - UNICODE_STRING for UCRT; ANSI_STRING for crtdll,msvcrt10,msvcrt,msvcr80-msvcr120 + * `%wZ` - UNICODE_STRING + * + * There are some other changes between versions regarding nul chars. + * - msvcrt since Vista, msvcr80+ and UCRT do not accept nul chars in ANSI_STRING for wprintf. + * If encountering a nul char, it stops processing the format string and returns -1. + * - msvcrt before Vista, crtdll and msvcrt10 accept nul char in ANSI_STRING for wprintf, + * but the first nul char and everything after it in ANSI_STRING content is discarded. + * - msvcrt20 does not support %Z format at all. + * - msvcrt40 from Visual C++ 4.0 and in Win9x systems does not support %Z format at all. + * - msvcrt40 in WinNT systems forwards calls to msvcrt, so it behaves as msvcrt described above. + * - ANSI_STRING for printf, and UNICODE_STRING for both printf and wprintf work fine + * in all versions, every nul byte and all following chars in the ANSI_STRING/UNICODE_STRING + * are processed and printed. + * + * This mingw-w64 implementation uses UCRT behavior of length modifiers. + */ + if( length == PFORMAT_LENGTH_INT ) + { + #ifndef __BUILD_WIDEAPI + length = PFORMAT_LENGTH_LONG; + #else + length = PFORMAT_LENGTH_SHORT; + #endif + } + + if( (length == PFORMAT_LENGTH_LONG) + || (length == PFORMAT_LENGTH_LLONG) + ) + { + const UNICODE_STRING *s = va_arg( argv, UNICODE_STRING * ); + const wchar_t *buf = (s && s->Buffer) ? (const wchar_t *)s->Buffer : L"(null)"; + const int len = (s && s->Buffer) ? s->Length / sizeof(wchar_t) : ( sizeof( "(null)" ) - 1 ); + __pformat_wputchars( buf, len, &stream ); + } + else + { + const ANSI_STRING *s = va_arg( argv, ANSI_STRING * ); + const char *buf = (s && s->Buffer) ? (const char *)s->Buffer : "(null)"; + const int len = (s && s->Buffer) ? s->Length : ( sizeof( "(null)" ) - 1 ); + __pformat_putchars( buf, len, &stream ); + } + goto format_scan; + case 'm': /* strerror (errno) */ __pformat_puts (strerror (saved_errno), &stream); goto format_scan; @@ -2514,8 +2605,10 @@ __pformat (int flags, void *dest, int max, const APICHAR *fmt, va_list argv) case 'u': case 'x': case 'X': + case 'b': + case 'B': /* - * Unsigned integer values; octal, decimal or hexadecimal format... + * Unsigned integer values; octal, decimal, hexadecimal or binary format... */ stream.flags &= ~PFORMAT_POSITIVE; #if __ENABLE_PRINTF128 @@ -2977,6 +3070,16 @@ __pformat (int flags, void *dest, int max, const APICHAR *fmt, va_list argv) state = PFORMAT_END; break; + case 'w': + /* + * Identify the appropriate argument as a wide + * character or wide string when associated with + * `%c`, `%C`, `%s' or `%S`. + */ + length = PFORMAT_LENGTH_LONG; + state = PFORMAT_END; + break; + case 'L': /* * Identify the appropriate argument as a `long double', diff --git a/lib/libc/mingw/stdio/mingw_sformat.c b/lib/libc/mingw/stdio/mingw_sformat.c index 81757cb1ebc74603e99f3f36c8b7d2248152c300..0b1a59792b410e5d924b873e62eeede1898de690 100644 --- a/lib/libc/mingw/stdio/mingw_sformat.c +++ b/lib/libc/mingw/stdio/mingw_sformat.c @@ -927,6 +927,7 @@ __mingw_sformat (_IFP *s, const char *format, va_list argp) case 'o': case 'p': case 'u': case 'x': case 'X': + case 'b': case 'B': switch (fc) { case 'd': @@ -954,6 +955,9 @@ __mingw_sformat (_IFP *s, const char *format, va_list argp) case 'x': case 'X': base = 16; break; + case 'b': case 'B': + base = 2; + break; } if ((c = in_ch (s, &read_in)) == EOF) diff --git a/lib/libc/mingw/stdio/mingw_vsnprintf.c b/lib/libc/mingw/stdio/mingw_vsnprintf.c index b9c3578627d1c5f7e3d1e1805fbb3b26c5560955..dd2d81ea89f36bd4dbb511fc1b40f1e810f71f48 100644 --- a/lib/libc/mingw/stdio/mingw_vsnprintf.c +++ b/lib/libc/mingw/stdio/mingw_vsnprintf.c @@ -57,11 +57,10 @@ int __cdecl __vsnprintf(APICHAR *buf, size_t length, const APICHAR *fmt, va_list buf[retval < (int) length ? retval : (int)length] = '\0'; #if defined(__BUILD_WIDEAPI) && defined(__BUILD_WIDEAPI_ISO) - /* For wide api ISO C95+ vswprintf() when requested length - * is equal or larger than buffer length, returns negative - * value as required by ISO C95+. + /* ISO C95+ fails when n or more data wide chars are needed. length was + * already decremented once for the terminator, so use > not >= here. */ - if( retval >= (int) length ) + if( retval > (int) length ) retval = -1; #endif diff --git a/lib/libc/mingw/stdio/msvcr80plus_ftruncate64.c b/lib/libc/mingw/stdio/msvcr80plus_ftruncate64.c new file mode 100644 index 0000000000000000000000000000000000000000..f9f9c3753960526a234bca77d3e4057e2f319634 --- /dev/null +++ b/lib/libc/mingw/stdio/msvcr80plus_ftruncate64.c @@ -0,0 +1,30 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#include +#include +#include + +int __cdecl ftruncate64(int fd, _off64_t length) +{ + errno_t error; + + /* _chsize_s calls invalid parameter exception handler, so validate input parameters */ + if (fd < 0) { + errno = EBADF; + return -1; + } + if (length < 0) { + errno = EINVAL; + return -1; + } + error = _chsize_s(fd, length); + if (error) { + errno = error; + return -1; + } + return 0; +} diff --git a/lib/libc/mingw/stdio/truncate.c b/lib/libc/mingw/stdio/truncate.c index 1ff3260f12f842dd349afb2c83995e6c1d8d6f0a..dc7fa8fdefaf857e3422a3cc3bb3dca9d643353d 100644 --- a/lib/libc/mingw/stdio/truncate.c +++ b/lib/libc/mingw/stdio/truncate.c @@ -12,14 +12,3 @@ int truncate(const char *pathname, _off_t len){ errno = err; return ret; } - -int truncate64(const char *pathname, _off64_t len){ - int ret, err; - int fd = _open(pathname,_O_BINARY|_O_RDWR); - if (fd == -1) return fd; - ret = ftruncate64(fd,len); - err = errno; - _close(fd); - errno = err; - return ret; -} diff --git a/lib/libc/mingw/stdio/truncate64.c b/lib/libc/mingw/stdio/truncate64.c new file mode 100644 index 0000000000000000000000000000000000000000..19351eb1d20e1b90c2f27fd643a6a74c08192e09 --- /dev/null +++ b/lib/libc/mingw/stdio/truncate64.c @@ -0,0 +1,14 @@ +#include +#include +#include + +int truncate64(const char *pathname, _off64_t len){ + int ret, err; + int fd = _open(pathname,_O_BINARY|_O_RDWR); + if (fd == -1) return fd; + ret = ftruncate64(fd,len); + err = errno; + _close(fd); + errno = err; + return ret; +} diff --git a/lib/libc/mingw/stdio/ucrt___local_stdio_printf_options.c b/lib/libc/mingw/stdio/ucrt___local_stdio_printf_options.c index 986c4fd10489c493a03febcf8be0e9d33af64d9c..ee98ac1ac827877eaa8e5de8a675bdc9dcced18c 100644 --- a/lib/libc/mingw/stdio/ucrt___local_stdio_printf_options.c +++ b/lib/libc/mingw/stdio/ucrt___local_stdio_printf_options.c @@ -10,6 +10,6 @@ static unsigned __int64 options = _CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS | _CRT_INTERNAL_PRINTF_STANDARD_ROUNDING; -unsigned __int64* __local_stdio_printf_options(void) { +unsigned __int64* __cdecl __local_stdio_printf_options(void) { return &options; } diff --git a/lib/libc/mingw/stdio/ucrt___local_stdio_scanf_options.c b/lib/libc/mingw/stdio/ucrt___local_stdio_scanf_options.c index 2dbd324560cfbe3785fee46bfc935d0c48e3c7f4..e10a83192b90f9417c496bcd0121e201aab9dc2a 100644 --- a/lib/libc/mingw/stdio/ucrt___local_stdio_scanf_options.c +++ b/lib/libc/mingw/stdio/ucrt___local_stdio_scanf_options.c @@ -10,6 +10,6 @@ static unsigned __int64 options = _CRT_INTERNAL_SCANF_LEGACY_WIDE_SPECIFIERS; -unsigned __int64* __local_stdio_scanf_options(void) { +unsigned __int64* __cdecl __local_stdio_scanf_options(void) { return &options; } diff --git a/lib/libc/mingw/stdio/ucrt__scwprintf.c b/lib/libc/mingw/stdio/ucrt__scwprintf.c new file mode 100644 index 0000000000000000000000000000000000000000..bc766de5441fb55f58b597da44e6031250591115 --- /dev/null +++ b/lib/libc/mingw/stdio/ucrt__scwprintf.c @@ -0,0 +1,21 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#undef __MSVCRT_VERSION__ +#define _UCRT +#include +#include + +int __cdecl _scwprintf(const wchar_t * restrict format, ...) +{ + int ret; + va_list args; + va_start(args, format); + ret = __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, format, NULL, args); + va_end(args); + return ret; +} +int __cdecl (*__MINGW_IMP_SYMBOL(_scwprintf))(const wchar_t * restrict, ...) = _scwprintf; diff --git a/lib/libc/mingw/stdio/ucrt__snwprintf.c b/lib/libc/mingw/stdio/ucrt__snwprintf.c index 5f5a435884b35dff3d0849820447eceb88dbf04c..5e03d269cf6311a2a0e576960eaa11ff86ad407c 100644 --- a/lib/libc/mingw/stdio/ucrt__snwprintf.c +++ b/lib/libc/mingw/stdio/ucrt__snwprintf.c @@ -10,8 +10,6 @@ #include #include -int __cdecl _snwprintf(wchar_t * restrict _Dest, size_t _Count, const wchar_t * restrict _Format, ...); - int __cdecl _snwprintf(wchar_t * restrict _Dest, size_t _Count, const wchar_t * restrict _Format, ...) { va_list ap; @@ -21,3 +19,4 @@ int __cdecl _snwprintf(wchar_t * restrict _Dest, size_t _Count, const wchar_t * va_end(ap); return ret; } +int __cdecl (*__MINGW_IMP_SYMBOL(_snwprintf))(wchar_t * restrict, size_t, const wchar_t * restrict, ...) = _snwprintf; diff --git a/lib/libc/mingw/stdio/ucrt__swprintf.c b/lib/libc/mingw/stdio/ucrt__swprintf.c new file mode 100644 index 0000000000000000000000000000000000000000..c39c4f0f1edbef775f6400b8078e62e65c01aecb --- /dev/null +++ b/lib/libc/mingw/stdio/ucrt__swprintf.c @@ -0,0 +1,21 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#undef __MSVCRT_VERSION__ +#define _UCRT +#include +#include + +int __cdecl _swprintf(wchar_t * restrict dest, const wchar_t * restrict format, ...) +{ + int ret; + va_list args; + va_start(args, format); + ret = __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, dest, (size_t)-1, format, NULL, args); + va_end(args); + return ret; +} +int __cdecl (*__MINGW_IMP_SYMBOL(_swprintf))(wchar_t * restrict, const wchar_t * restrict, ...) = _swprintf; diff --git a/lib/libc/mingw/stdio/ucrt__vscwprintf.c b/lib/libc/mingw/stdio/ucrt__vscwprintf.c new file mode 100644 index 0000000000000000000000000000000000000000..5cb7d7d80e4bde08f49859bf9a272adca6be6854 --- /dev/null +++ b/lib/libc/mingw/stdio/ucrt__vscwprintf.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#undef __MSVCRT_VERSION__ +#define _UCRT +#include + +int __cdecl _vscwprintf(const wchar_t * restrict format, va_list args) +{ + return __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, format, NULL, args); +} +int __cdecl (*__MINGW_IMP_SYMBOL(_vscwprintf))(const wchar_t * restrict, va_list) = _vscwprintf; diff --git a/lib/libc/mingw/stdio/ucrt__vsnwprintf.c b/lib/libc/mingw/stdio/ucrt__vsnwprintf.c index 376a683b9ae6382ee52a9a0cd99be6efe99f3a70..613f5defedd0559ff17af652ed799ba63018dd70 100644 --- a/lib/libc/mingw/stdio/ucrt__vsnwprintf.c +++ b/lib/libc/mingw/stdio/ucrt__vsnwprintf.c @@ -12,3 +12,4 @@ int __cdecl _vsnwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t { return __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _Dest, _Count, _Format, NULL, _Args); } +int __cdecl (*__MINGW_IMP_SYMBOL(_vsnwprintf))(wchar_t * __restrict__,size_t,const wchar_t * __restrict__,va_list) = _vsnwprintf; diff --git a/lib/libc/mingw/stdio/ucrt__vswprintf.c b/lib/libc/mingw/stdio/ucrt__vswprintf.c new file mode 100644 index 0000000000000000000000000000000000000000..71c18e16b37ee7de8ed72132e74d71e7a7d16980 --- /dev/null +++ b/lib/libc/mingw/stdio/ucrt__vswprintf.c @@ -0,0 +1,15 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +#undef __MSVCRT_VERSION__ +#define _UCRT +#include + +int __cdecl _vswprintf(wchar_t * restrict dest, const wchar_t * restrict format, va_list args) +{ + return __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, dest, (size_t)-1, format, NULL, args); +} +int __cdecl (*__MINGW_IMP_SYMBOL(_vswprintf))(wchar_t * restrict, const wchar_t * restrict, va_list) = _vswprintf; diff --git a/lib/libc/mingw/winpthreads/misc.c b/lib/libc/mingw/winpthreads/misc.c index d9c55041eec0ac429445d4a482346dc6a2f379ce..b2d5cebc073ac3c895b424905aede91c76df0842 100644 --- a/lib/libc/mingw/winpthreads/misc.c +++ b/lib/libc/mingw/winpthreads/misc.c @@ -35,10 +35,13 @@ void (WINAPI *_pthread_get_system_time_best_as_file_time) (LPFILETIME) = NULL; static ULONGLONG (WINAPI *_pthread_get_tick_count_64) (VOID); HRESULT (WINAPI *_pthread_set_thread_description) (HANDLE, PCWSTR) = NULL; +BOOL (WINAPI *_pthread_get_handle_information) (HANDLE, LPDWORD) = NULL; #if defined(__GNUC__) || defined(__clang__) +#if __GNUC__ >= 9 && !defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wprio-ctor-dtor" +#endif __attribute__((constructor(0))) #endif static void winpthreads_init(void) @@ -46,9 +49,15 @@ static void winpthreads_init(void) HMODULE mod = GetModuleHandleA("kernel32.dll"); if (mod) { + _pthread_get_handle_information = + (BOOL (WINAPI *)(HANDLE, LPDWORD))(void*) GetProcAddress(mod, "GetHandleInformation"); + _pthread_get_tick_count_64 = (ULONGLONG (WINAPI *)(VOID))(void*) GetProcAddress(mod, "GetTickCount64"); + _pthread_set_thread_description = + (HRESULT (WINAPI *)(HANDLE, PCWSTR))(void*) GetProcAddress(mod, "SetThreadDescription"); + /* <1us precision on Windows 10 */ _pthread_get_system_time_best_as_file_time = (void (WINAPI *)(LPFILETIME))(void*) GetProcAddress(mod, "GetSystemTimePreciseAsFileTime"); @@ -58,14 +67,21 @@ static void winpthreads_init(void) /* >15ms precision on Windows 10 */ _pthread_get_system_time_best_as_file_time = GetSystemTimeAsFileTime; - mod = GetModuleHandleA("kernelbase.dll"); - if (mod) + /* Although SetThreadDescription lives in kernel32.dll, on Windows Server 2016, + * Windows 10 LTSB 2016 and Windows 10 version 1607, it was only available in + * kernelbase.dll. So, load it from there for maximum coverage. + */ + if (!_pthread_set_thread_description) { - _pthread_set_thread_description = - (HRESULT (WINAPI *)(HANDLE, PCWSTR))(void*) GetProcAddress(mod, "SetThreadDescription"); + mod = GetModuleHandleA("kernelbase.dll"); + if (mod) + { + _pthread_set_thread_description = + (HRESULT (WINAPI *)(HANDLE, PCWSTR))(void*) GetProcAddress(mod, "SetThreadDescription"); + } } } -#if defined(__GNUC__) || defined(__clang__) +#if defined(__GNUC__) && __GNUC__ >= 9 && !defined(__clang__) #pragma GCC diagnostic pop #endif diff --git a/lib/libc/mingw/winpthreads/misc.h b/lib/libc/mingw/winpthreads/misc.h index f954ad451c14d74bfd5ba90868086b5f060d20f3..dc11eaff500fe95281e1b2699f54a6b703ae2f95 100644 --- a/lib/libc/mingw/winpthreads/misc.h +++ b/lib/libc/mingw/winpthreads/misc.h @@ -35,18 +35,32 @@ typedef long long LONGBAG; typedef long LONGBAG; #endif -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -#undef GetHandleInformation -#define GetHandleInformation(h,f) (1) +extern BOOL (WINAPI *_pthread_get_handle_information) (HANDLE, LPDWORD); + +/* For gcc and clang define DUMMY_WRITABLE_DWORD as C99 compound literal. + * For other pre-C99 compilers declare DUMMY_WRITABLE_DWORD as static variable. + */ +#if defined(__GNUC__) || defined(__clang__) +#define DUMMY_WRITABLE_DWORD (DWORD){0} +#else +static DWORD DUMMY_WRITABLE_DWORD; #endif -#define CHECK_HANDLE(h) \ +#define TEST_HANDLE(h) \ + (((h) != NULL && (h) != INVALID_HANDLE_VALUE) && ( \ + _pthread_get_handle_information == NULL || \ + _pthread_get_handle_information((h), &DUMMY_WRITABLE_DWORD) || \ + GetLastError() == ERROR_CALL_NOT_IMPLEMENTED \ + )) + +#define CHECK_HANDLE2(h, e) \ do { \ - DWORD dwFlags; \ - if (!(h) || ((h) == INVALID_HANDLE_VALUE) || !GetHandleInformation((h), &dwFlags)) \ - return EINVAL; \ + if (!TEST_HANDLE(h)) \ + return e; \ } while (0) +#define CHECK_HANDLE(h) CHECK_HANDLE2(h, EINVAL) + #define CHECK_PTR(p) do { if (!(p)) return EINVAL; } while (0) #define UPD_RESULT(x,r) do { int _r = (x); (r) = (r) ? (r) : _r; } while (0) @@ -59,10 +73,8 @@ typedef long LONGBAG; #define CHECK_OBJECT(o, e) \ do { \ - DWORD dwFlags; \ if (!(o)) return e; \ - if (!((o)->h) || (((o)->h) == INVALID_HANDLE_VALUE) || !GetHandleInformation(((o)->h), &dwFlags)) \ - return e; \ + CHECK_HANDLE2((o)->h, e); \ } while (0) #define VALID(x) if (!(p)) return EINVAL; diff --git a/lib/libc/mingw/winpthreads/mutex.c b/lib/libc/mingw/winpthreads/mutex.c index b90120976983dbfdfff2f92e2a9d61780e34bb62..ae478586684dcabd019bc64360ee01008cda117e 100644 --- a/lib/libc/mingw/winpthreads/mutex.c +++ b/lib/libc/mingw/winpthreads/mutex.c @@ -26,7 +26,6 @@ #endif #include -#include #include #define WIN32_LEAN_AND_MEAN @@ -64,7 +63,7 @@ typedef struct { /* Whether a mutex is still a static initializer (not a pointer to a mutex_impl_t). */ -static bool +static BOOL is_static_initializer(pthread_mutex_t m) { /* Treat 0 as a static initializer as well (for normal mutexes), @@ -101,7 +100,7 @@ mutex_impl_init(pthread_mutex_t *m, mutex_impl_t *mi) /* Return the implementation part of a mutex, creating it if necessary. Return NULL on out-of-memory error. */ -static inline mutex_impl_t * +static WINPTHREADS_INLINE mutex_impl_t * mutex_impl(pthread_mutex_t *m) { mutex_impl_t *mi = (mutex_impl_t *)*m; @@ -117,7 +116,7 @@ mutex_impl(pthread_mutex_t *m) /* Lock a mutex. Give up after 'timeout' ms (with ETIMEDOUT), or never if timeout=INFINITE. */ -static inline int +static WINPTHREADS_INLINE int pthread_mutex_lock_intern (pthread_mutex_t *m, DWORD timeout) { mutex_impl_t *mi = mutex_impl(m); @@ -148,7 +147,7 @@ pthread_mutex_lock_intern (pthread_mutex_t *m, DWORD timeout) /* Make sure there is an event object on which to wait. */ if (mi->event == NULL) { /* Make an auto-reset event object. */ - HANDLE ev = CreateEvent(NULL, false, false, NULL); + HANDLE ev = CreateEvent(NULL, FALSE, FALSE, NULL); if (ev == NULL) { switch (GetLastError()) { case ERROR_ACCESS_DENIED: @@ -232,7 +231,7 @@ int pthread_mutex_unlock(pthread_mutex_t *m) if (unlikely(mi->type != Normal)) { if (mi->state == Unlocked) - return EINVAL; + return EPERM; if (mi->owner != GetCurrentThreadId()) return EPERM; if (mi->rec_lock > 0) { diff --git a/lib/libc/mingw/winpthreads/sem.c b/lib/libc/mingw/winpthreads/sem.c index 37abf2e115e75f1e4038cbc402d1be078ddada1c..68b33b8bb4bedbb49b1fa385f3cc54e87452c1a9 100644 --- a/lib/libc/mingw/winpthreads/sem.c +++ b/lib/libc/mingw/winpthreads/sem.c @@ -267,8 +267,15 @@ int sem_timedwait64(sem_t *sem, const struct _timespec64 *t) int sem_timedwait32(sem_t *sem, const struct _timespec32 *t) { - struct _timespec64 t64 = {.tv_sec = t->tv_sec, .tv_nsec = t->tv_nsec}; - return __sem_timedwait (sem, &t64); + struct _timespec64 t64 = {0}; + + if (t != NULL) + { + t64.tv_sec = t->tv_sec; + t64.tv_nsec = t->tv_nsec; + } + + return __sem_timedwait (sem, t == NULL ? NULL : &t64); } int diff --git a/lib/libc/mingw/winpthreads/thread.c b/lib/libc/mingw/winpthreads/thread.c index c0b36bb1f80db597fe842e59eb2a4cb20f5378f2..476370422fbf003b79cd20d508c8f32f422725bf 100644 --- a/lib/libc/mingw/winpthreads/thread.c +++ b/lib/libc/mingw/winpthreads/thread.c @@ -20,6 +20,16 @@ DEALINGS IN THE SOFTWARE. */ +#if defined(__arm__) || defined(__aarch64__) +/* We use setjmp/longjmp through asynchronous function calls via + * SetThreadContext below. This makes unwinding from longjmp not + * work reliably; therefore use a version of setjmp/longjmp that doesn't + * rely on SEH. */ +#define __USE_MINGW_SETJMP_NON_SEH +#endif + +#define __LARGE_MBSTATE_T + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -32,7 +42,6 @@ #define WIN32_LEAN_AND_MEAN #include -#include #define WINPTHREAD_THREAD_DECL WINPTHREAD_API @@ -65,38 +74,29 @@ static size_t idListCnt = 0; static size_t idListMax = 0; static pthread_t idListNextId = 0; -#if !defined(_MSC_VER) -#define USE_VEH_FOR_MSC_SETTHREADNAME +#if defined(__SEH__) && (!defined(__clang__) || __clang_major__ >= 7) +#define SEH_INLINE_ASM +#ifdef __arm__ +#define ASM_EXCEPT "%%except" +#else +#define ASM_EXCEPT "@except" #endif -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -/* forbidden RemoveVectoredExceptionHandler/AddVectoredExceptionHandler APIs */ -#undef USE_VEH_FOR_MSC_SETTHREADNAME #endif -#if defined(USE_VEH_FOR_MSC_SETTHREADNAME) -static void *SetThreadName_VEH_handle = NULL; - -static LONG __stdcall -SetThreadName_VEH (PEXCEPTION_POINTERS ExceptionInfo) +#if !defined(_MSC_VER) && (defined(__i386__) || defined(SEH_INLINE_ASM)) +static EXCEPTION_DISPOSITION __cdecl +SetThreadName_SEH (EXCEPTION_RECORD *ExceptionRecord, PVOID EstablisherFrame, CONTEXT *ContextRecord, PVOID DispatcherContext) { - if (ExceptionInfo->ExceptionRecord != NULL && - ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_SET_THREAD_NAME) - return EXCEPTION_CONTINUE_EXECUTION; - - return EXCEPTION_CONTINUE_SEARCH; -} + /* Do not be confused with VEH handlers and CRT except filters which returns LONG value with UPPER_CASE constants. + * SEH handlers like this one return value from EXCEPTION_DISPOSITION enum which has CamelCase constants. + * UPPER_CASE EXCEPTION_CONTINUE_SEARCH and CamelCase ExceptionContinueSearch are different constants. + */ + if (!(ExceptionRecord->ExceptionFlags & EXCEPTION_UNWINDING) && + !(ExceptionRecord->ExceptionFlags & EXCEPTION_NONCONTINUABLE) && + ExceptionRecord->ExceptionCode == EXCEPTION_SET_THREAD_NAME) + return ExceptionContinueExecution; -static PVOID (WINAPI *AddVectoredExceptionHandlerFuncPtr) (ULONG, PVECTORED_EXCEPTION_HANDLER); -static ULONG (WINAPI *RemoveVectoredExceptionHandlerFuncPtr) (PVOID); - -static void __attribute__((constructor)) -ctor (void) -{ - HMODULE module = GetModuleHandleA("kernel32.dll"); - if (module) { - AddVectoredExceptionHandlerFuncPtr = (__typeof__(AddVectoredExceptionHandlerFuncPtr)) GetProcAddress(module, "AddVectoredExceptionHandler"); - RemoveVectoredExceptionHandlerFuncPtr = (__typeof__(RemoveVectoredExceptionHandlerFuncPtr)) GetProcAddress(module, "RemoveVectoredExceptionHandler"); - } + return ExceptionContinueSearch; } #endif @@ -108,6 +108,9 @@ typedef struct _THREADNAME_INFO DWORD dwFlags; /* reserved for future use, must be zero */ } THREADNAME_INFO; +#if !defined(_MSC_VER) && !defined(__i386__) && defined(SEH_INLINE_ASM) +WINPTHREADS_ATTRIBUTE((noinline)) /* required for asm .seh_handler directive */ +#endif static void SetThreadName (DWORD dwThreadID, LPCSTR szThreadName) { @@ -121,7 +124,10 @@ SetThreadName (DWORD dwThreadID, LPCSTR szThreadName) infosize = sizeof (info) / sizeof (ULONG_PTR); -#if defined(_MSC_VER) && !defined (USE_VEH_FOR_MSC_SETTHREADNAME) + /* Exception has to be processed otherwise it will crash the process. */ + +#if defined(_MSC_VER) + /* msvc supports __try / __except syntax, so use it */ __try { RaiseException (EXCEPTION_SET_THREAD_NAME, 0, infosize, (ULONG_PTR *)&info); @@ -130,17 +136,31 @@ SetThreadName (DWORD dwThreadID, LPCSTR szThreadName) { } #else - /* Without a debugger we *must* have an exception handler, - * otherwise raising an exception will crash the process. + /* gcc does not support __try / __except syntax, so manually register SEH handler */ +#if defined(__i386__) + /* On 32-bit x86 is SEH handler registered and unregistered at runtime */ + EXCEPTION_REGISTRATION_RECORD exception_record = { + .Next = (EXCEPTION_REGISTRATION_RECORD *) __readfsdword (0), /* current SEH handler */ + .Handler = (PEXCEPTION_ROUTINE)(void*) SetThreadName_SEH, + }; + __writefsdword (0, (DWORD) &exception_record); /* register our SEH handler */ + RaiseException (EXCEPTION_SET_THREAD_NAME, 0, infosize, (ULONG_PTR *) &info); + __writefsdword (0, (DWORD) exception_record.Next); /* unregister our SEH handler */ +#elif defined(SEH_INLINE_ASM) + /* On other platforms SEH handlers are registered at compile time. + Assembler directive .seh_handler statically register SEH handler for + the whole current function. It does not matter at which line is this + directive called. It always applies for the whole function, so also + for code before the directive itself. As this function does not do + anything else, we can register our SEH handler for the whole function. + This function has to be marked as noinline to ensure that the SEH + handler would not be registered for a caller. */ -#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - if ((!IsDebuggerPresent ()) && (SetThreadName_VEH_handle == NULL)) + asm volatile (".seh_handler %c0, " ASM_EXCEPT :: "i" (SetThreadName_SEH)); + RaiseException (EXCEPTION_SET_THREAD_NAME, 0, infosize, (ULONG_PTR *) &info); #else - if (!IsDebuggerPresent ()) + /* Other compilers / platforms do not provide SEH support */ #endif - return; - - RaiseException (EXCEPTION_SET_THREAD_NAME, 0, infosize, (ULONG_PTR *) &info); #endif } @@ -443,25 +463,10 @@ __dyn_tls_pthread (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) if (dwReason == DLL_PROCESS_DETACH) { -#if defined(USE_VEH_FOR_MSC_SETTHREADNAME) - if (lpreserved == NULL && SetThreadName_VEH_handle != NULL) - { - if (RemoveVectoredExceptionHandlerFuncPtr != NULL) - RemoveVectoredExceptionHandlerFuncPtr (SetThreadName_VEH_handle); - SetThreadName_VEH_handle = NULL; - } -#endif free_pthread_mem (); } else if (dwReason == DLL_PROCESS_ATTACH) { -#if defined(USE_VEH_FOR_MSC_SETTHREADNAME) - if (AddVectoredExceptionHandlerFuncPtr != NULL) - SetThreadName_VEH_handle = AddVectoredExceptionHandlerFuncPtr (1, &SetThreadName_VEH); - else - SetThreadName_VEH_handle = NULL; - /* Can't do anything on error anyway, check for NULL later */ -#endif } else if (dwReason == DLL_THREAD_DETACH) { @@ -520,13 +525,15 @@ __dyn_tls_pthread (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) /* TLS-runtime section variable. */ -#if defined(_MSC_VER) /* Force a reference to _tls_used to make the linker create the TLS * directory if it's not already there. (e.g. if __declspec(thread) * is not used). * Force a reference to __xl_f to prevent whole program optimization * from discarding the variable. */ - +#if defined(__GNUC__) +extern const IMAGE_TLS_DIRECTORY _tls_used; +static __attribute__((used)) const IMAGE_TLS_DIRECTORY *const _include_tls_used = &_tls_used; +#elif defined(_MSC_VER) /* On x86, symbols are prefixed with an underscore. */ # if defined(_M_IX86) # pragma comment(linker, "/include:__tls_used") @@ -544,8 +551,10 @@ __dyn_tls_pthread (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) # pragma section(".CRT$XLF", long, read) #endif +#if defined(__GNUC__) +static __attribute__((used)) +#endif WINPTHREADS_ATTRIBUTE((WINPTHREADS_SECTION(".CRT$XLF"))) -extern const PIMAGE_TLS_CALLBACK __xl_f; const PIMAGE_TLS_CALLBACK __xl_f = __dyn_tls_pthread; /* Internal collect-once structure. */ @@ -1277,9 +1286,7 @@ pthread_cancel (pthread_t t) #else #error Unsupported architecture #endif -#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) SetThreadContext (tv->h, &ctxt); -#endif /* Also try deferred Cancelling */ tv->cancelled = 1; @@ -1516,9 +1523,7 @@ void _fpreset (void); #if defined(__i386__) /* Align ESP on 16-byte boundaries. */ -# if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) __attribute__((force_align_arg_pointer)) -# endif #endif unsigned __stdcall pthread_create_wrapper (void *args) @@ -1539,16 +1544,10 @@ pthread_create_wrapper (void *args) if (!setjmp(tv->jb)) { intptr_t trslt = (intptr_t) 128; - /* Provide to this thread a default exception handler. */ - #ifdef __SEH__ - asm ("\t.tl_start:\n"); - #endif /* Call function and save return value */ pthread_mutex_unlock (&mtx_pthr_locked); + /* Call function and save return value */ if (tv->func) trslt = (intptr_t) tv->func(tv->ret_arg); - #ifdef __SEH__ - asm ("\tnop\n\t.tl_end: nop\n"); - #endif pthread_mutex_lock (&mtx_pthr_locked); tv->ret_arg = (void*) trslt; /* Clean up destructors */ @@ -1585,19 +1584,6 @@ pthread_create_wrapper (void *args) Sleep (0); _endthreadex (rslt); return rslt; - -#if defined(__SEH__) - asm( -#ifdef __arm__ - "\t.seh_handler __C_specific_handler, %except\n" -#else - "\t.seh_handler __C_specific_handler, @except\n" -#endif - "\t.seh_handlerdata\n" - "\t.long 1\n" - "\t.rva .tl_start, .tl_end, _gnu_exception_handler ,.tl_end\n" - "\t.text\n"); -#endif } int @@ -1608,6 +1594,7 @@ pthread_create (pthread_t *th, const pthread_attr_t *attr, void *(* func)(void * struct _pthread_v *tv; unsigned int ssize = 0; pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; + unsigned thrAddr; /* Dummy variable to pass a valid location to _beginthreadex (Win98). */ if (attr && attr->s_size > UINT_MAX) return EINVAL; @@ -1664,7 +1651,7 @@ pthread_create (pthread_t *th, const pthread_attr_t *attr, void *(* func)(void * /* Make sure tv->h has value of INVALID_HANDLE_VALUE */ _ReadWriteBarrier(); - thrd = (HANDLE) _beginthreadex(NULL, ssize, pthread_create_wrapper, tv, 0x4/*CREATE_SUSPEND*/, NULL); + thrd = (HANDLE) _beginthreadex(NULL, ssize, pthread_create_wrapper, tv, 0x4/*CREATE_SUSPEND*/, &thrAddr); if (thrd == INVALID_HANDLE_VALUE) thrd = 0; /* Failed */ @@ -1713,12 +1700,11 @@ pthread_create (pthread_t *th, const pthread_attr_t *attr, void *(* func)(void * int pthread_join (pthread_t t, void **res) { - DWORD dwFlags; struct _pthread_v *tv = __pth_gpointer_locked (t); pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; - if (!tv || tv->h == NULL || !GetHandleInformation(tv->h, &dwFlags)) - return ESRCH; + CHECK_OBJECT(tv, ESRCH); + if ((tv->p_state & PTHREAD_CREATE_DETACHED) != 0) return EINVAL; if (pthread_equal(pthread_self(), t)) @@ -1744,14 +1730,13 @@ pthread_join (pthread_t t, void **res) int _pthread_tryjoin (pthread_t t, void **res) { - DWORD dwFlags; struct _pthread_v *tv; pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; pthread_mutex_lock (&mtx_pthr_locked); tv = __pthread_get_pointer (t); - if (!tv || tv->h == NULL || !GetHandleInformation(tv->h, &dwFlags)) + if (!tv || !TEST_HANDLE(tv->h)) { pthread_mutex_unlock (&mtx_pthr_locked); return ESRCH; @@ -1798,13 +1783,12 @@ int pthread_detach (pthread_t t) { int r = 0; - DWORD dwFlags; struct _pthread_v *tv = __pth_gpointer_locked (t); HANDLE dw; pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; pthread_mutex_lock (&mtx_pthr_locked); - if (!tv || tv->h == NULL || !GetHandleInformation(tv->h, &dwFlags)) + if (!tv || !TEST_HANDLE(tv->h)) { pthread_mutex_unlock (&mtx_pthr_locked); return ESRCH; @@ -1897,8 +1881,8 @@ pthread_setname_np (pthread_t thread, const char *name) int pthread_getname_np (pthread_t thread, char *name, size_t len) { - HRESULT result; struct _pthread_v *tv; + size_t thread_name_len; if (name == NULL) return EINVAL; @@ -1917,12 +1901,10 @@ pthread_getname_np (pthread_t thread, char *name, size_t len) return 0; } - if (strlen (tv->thread_name) >= len) + thread_name_len = strlen (tv->thread_name); + if (thread_name_len >= len) return ERANGE; - result = StringCchCopyNA (name, len, tv->thread_name, len - 1); - if (SUCCEEDED (result)) - return 0; - - return ERANGE; + memcpy (name, tv->thread_name, thread_name_len + 1); + return 0; } diff --git a/lib/libc/mingw/winpthreads/wpth_ver.h b/lib/libc/mingw/winpthreads/wpth_ver.h index 1089a612105b856bc00692ca83a8dd1a32d8ac46..ea36c1e152064bf5f70c769ecbedc8ee995f9864 100644 --- a/lib/libc/mingw/winpthreads/wpth_ver.h +++ b/lib/libc/mingw/winpthreads/wpth_ver.h @@ -24,6 +24,7 @@ #define __WPTHREADS_VERSION__ #define WPTH_VERSION 1,0,0,0 -#define WPTH_VERSION_STRING "1, 0, 0, 0\0" +#define WPTH_VERSION_STRING "1, 0, 0, 0" +#define WPTH_VERSION_MAJOR_STRING "1" #endif diff --git a/src/libs/mingw.zig b/src/libs/mingw.zig index 41a372fdc4013083a25669056058f2799743e4e0..df40f4ff7f138eef2617f80100545e732095bbfb 100644 --- a/src/libs/mingw.zig +++ b/src/libs/mingw.zig @@ -519,7 +519,22 @@ const mingw32_generic_src = [_][]const u8{ "gdtoa" ++ path.sep_str ++ "strtopx.c", "gdtoa" ++ path.sep_str ++ "sum.c", "gdtoa" ++ path.sep_str ++ "ulp.c", + "math" ++ path.sep_str ++ "acospi.c", + "math" ++ path.sep_str ++ "acospif.c", + "math" ++ path.sep_str ++ "acospil.c", + "math" ++ path.sep_str ++ "asinpi.c", + "math" ++ path.sep_str ++ "asinpif.c", + "math" ++ path.sep_str ++ "asinpil.c", + "math" ++ path.sep_str ++ "atanpi.c", + "math" ++ path.sep_str ++ "atanpif.c", + "math" ++ path.sep_str ++ "atanpil.c", + "math" ++ path.sep_str ++ "atan2pi.c", + "math" ++ path.sep_str ++ "atan2pif.c", + "math" ++ path.sep_str ++ "atan2pil.c", "math" ++ path.sep_str ++ "coshl.c", + "math" ++ path.sep_str ++ "cospi.c", + "math" ++ path.sep_str ++ "cospif.c", + "math" ++ path.sep_str ++ "cospil.c", "math" ++ path.sep_str ++ "fpclassify.c", "math" ++ path.sep_str ++ "fpclassifyf.c", "math" ++ path.sep_str ++ "fpclassifyl.c", @@ -535,8 +550,18 @@ const mingw32_generic_src = [_][]const u8{ "math" ++ path.sep_str ++ "signbitl.c", "math" ++ path.sep_str ++ "signgam.c", "math" ++ path.sep_str ++ "sinhl.c", + "math" ++ path.sep_str ++ "sinpi.c", + "math" ++ path.sep_str ++ "sinpif.c", + "math" ++ path.sep_str ++ "sinpil.c", "math" ++ path.sep_str ++ "tanhl.c", + "math" ++ path.sep_str ++ "tanpi.c", + "math" ++ path.sep_str ++ "tanpif.c", + "math" ++ path.sep_str ++ "tanpil.c", + "misc" ++ path.sep_str ++ "__mingw_filename_cp.c", + "misc" ++ path.sep_str ++ "__mingw_isleadbyte_cp.c", + "misc" ++ path.sep_str ++ "_assert.c", "misc" ++ path.sep_str ++ "alarm.c", + "misc" ++ path.sep_str ++ "btowc.c", "misc" ++ path.sep_str ++ "delay-f.c", "misc" ++ path.sep_str ++ "delay-n.c", "misc" ++ path.sep_str ++ "delayimp.c", @@ -544,7 +569,10 @@ const mingw32_generic_src = [_][]const u8{ "misc" ++ path.sep_str ++ "dirname.c", "misc" ++ path.sep_str ++ "dllmain.c", "misc" ++ path.sep_str ++ "feclearexcept.c", + "misc" ++ path.sep_str ++ "fedisableexcept.c", + "misc" ++ path.sep_str ++ "feenableexcept.c", "misc" ++ path.sep_str ++ "fegetenv.c", + "misc" ++ path.sep_str ++ "fegetexcept.c", "misc" ++ path.sep_str ++ "fegetexceptflag.c", "misc" ++ path.sep_str ++ "fegetround.c", "misc" ++ path.sep_str ++ "feholdexcept.c", @@ -556,7 +584,8 @@ const mingw32_generic_src = [_][]const u8{ "misc" ++ path.sep_str ++ "mingw_controlfp.c", "misc" ++ path.sep_str ++ "mingw_setfp.c", "misc" ++ path.sep_str ++ "feupdateenv.c", - "misc" ++ path.sep_str ++ "ftruncate.c", + "misc" ++ path.sep_str ++ "ftime32.c", + "misc" ++ path.sep_str ++ "ftime64.c", "misc" ++ path.sep_str ++ "ftw32.c", "misc" ++ path.sep_str ++ "ftw32i64.c", "misc" ++ path.sep_str ++ "ftw64.c", @@ -565,6 +594,8 @@ const mingw32_generic_src = [_][]const u8{ "misc" ++ path.sep_str ++ "getlogin.c", "misc" ++ path.sep_str ++ "getopt.c", "misc" ++ path.sep_str ++ "gettimeofday.c", + "misc" ++ path.sep_str ++ "memalignment.c", + "misc" ++ path.sep_str ++ "memset_explicit.c", "misc" ++ path.sep_str ++ "mingw-access.c", "misc" ++ path.sep_str ++ "mingw-aligned-malloc.c", "misc" ++ path.sep_str ++ "mingw_getsp.S", @@ -575,6 +606,7 @@ const mingw32_generic_src = [_][]const u8{ "misc" ++ path.sep_str ++ "mingw_wcstod.c", "misc" ++ path.sep_str ++ "mingw_wcstof.c", "misc" ++ path.sep_str ++ "mingw_wcstold.c", + "misc" ++ path.sep_str ++ "mkdtemp.c", "misc" ++ path.sep_str ++ "mkstemp.c", "misc" ++ path.sep_str ++ "sleep.c", "misc" ++ path.sep_str ++ "strsafe.c", @@ -583,23 +615,22 @@ const mingw32_generic_src = [_][]const u8{ "misc" ++ path.sep_str ++ "tfind.c", "misc" ++ path.sep_str ++ "tsearch.c", "misc" ++ path.sep_str ++ "twalk.c", + "misc" ++ path.sep_str ++ "wctob.c", "misc" ++ path.sep_str ++ "wdirent.c", + "stdio" ++ path.sep_str ++ "__mingw_fix_fstat_finish.c", + "stdio" ++ path.sep_str ++ "__mingw_fix_stat_fallback_fd.c", + "stdio" ++ path.sep_str ++ "__mingw_fix_stat_finish.c", "stdio" ++ path.sep_str ++ "__mingw_fix_stat_path.c", + "stdio" ++ path.sep_str ++ "__mingw_fix_wstat_fallback_fd.c", "stdio" ++ path.sep_str ++ "__mingw_fix_wstat_path.c", "stdio" ++ path.sep_str ++ "asprintf.c", - "stdio" ++ path.sep_str ++ "fopen64.c", - "stdio" ++ path.sep_str ++ "fseeko32.c", - "stdio" ++ path.sep_str ++ "fseeko64.c", - "stdio" ++ path.sep_str ++ "ftello.c", - "stdio" ++ path.sep_str ++ "ftello64.c", - "stdio" ++ path.sep_str ++ "ftruncate64.c", "stdio" ++ path.sep_str ++ "lltoa.c", "stdio" ++ path.sep_str ++ "lltow.c", - "stdio" ++ path.sep_str ++ "lseek64.c", "stdio" ++ path.sep_str ++ "mingw_asprintf.c", "stdio" ++ path.sep_str ++ "mingw_fprintf.c", "stdio" ++ path.sep_str ++ "mingw_fwprintf.c", "stdio" ++ path.sep_str ++ "mingw_fscanf.c", + "stdio" ++ path.sep_str ++ "mingw_ftruncate64.c", "stdio" ++ path.sep_str ++ "mingw_fwscanf.c", "stdio" ++ path.sep_str ++ "mingw_pformat.c", "stdio" ++ path.sep_str ++ "mingw_sformat.c", @@ -631,6 +662,7 @@ const mingw32_generic_src = [_][]const u8{ "stdio" ++ path.sep_str ++ "snprintf.c", "stdio" ++ path.sep_str ++ "snwprintf.c", "stdio" ++ path.sep_str ++ "truncate.c", + "stdio" ++ path.sep_str ++ "truncate64.c", "stdio" ++ path.sep_str ++ "ulltoa.c", "stdio" ++ path.sep_str ++ "ulltow.c", "stdio" ++ path.sep_str ++ "vasprintf.c", @@ -640,6 +672,10 @@ const mingw32_generic_src = [_][]const u8{ // mingwthrd "libsrc" ++ path.sep_str ++ "mingwthrd_mt.c", // ucrtbase + "ctype" ++ path.sep_str ++ "_iscsym_l.c", + "ctype" ++ path.sep_str ++ "_iscsymf_l.c", + "ctype" ++ path.sep_str ++ "iswctype.c", + "ctype" ++ path.sep_str ++ "towctrans.c", "math" ++ path.sep_str ++ "_huge.c", "misc" ++ path.sep_str ++ "__initenv.c", "misc" ++ path.sep_str ++ "__winitenv.c", @@ -651,14 +687,20 @@ const mingw32_generic_src = [_][]const u8{ "misc" ++ path.sep_str ++ "ucrt__wgetmainargs.c", "misc" ++ path.sep_str ++ "ucrt_amsg_exit.c", "misc" ++ path.sep_str ++ "ucrt_at_quick_exit.c", + "misc" ++ path.sep_str ++ "ucrt_mbsinit.c", "misc" ++ path.sep_str ++ "ucrt_tzset.c", + "stdio" ++ path.sep_str ++ "msvcr80plus_ftruncate64.c", "stdio" ++ path.sep_str ++ "ucrt__scprintf.c", + "stdio" ++ path.sep_str ++ "ucrt__scwprintf.c", "stdio" ++ path.sep_str ++ "ucrt__snprintf.c", "stdio" ++ path.sep_str ++ "ucrt__snscanf.c", "stdio" ++ path.sep_str ++ "ucrt__snwprintf.c", + "stdio" ++ path.sep_str ++ "ucrt__swprintf.c", "stdio" ++ path.sep_str ++ "ucrt__vscprintf.c", + "stdio" ++ path.sep_str ++ "ucrt__vscwprintf.c", "stdio" ++ path.sep_str ++ "ucrt__vsnprintf.c", "stdio" ++ path.sep_str ++ "ucrt__vsnwprintf.c", + "stdio" ++ path.sep_str ++ "ucrt__vswprintf.c", "stdio" ++ path.sep_str ++ "ucrt___local_stdio_printf_options.c", "stdio" ++ path.sep_str ++ "ucrt___local_stdio_scanf_options.c", "stdio" ++ path.sep_str ++ "ucrt_fprintf.c", @@ -691,7 +733,6 @@ const mingw32_generic_src = [_][]const u8{ "stdio" ++ path.sep_str ++ "ucrt_wprintf.c", "string" ++ path.sep_str ++ "ucrt__wcstok.c", // uuid - "libsrc" ++ path.sep_str ++ "ativscp-uuid.c", "libsrc" ++ path.sep_str ++ "atsmedia-uuid.c", "libsrc" ++ path.sep_str ++ "bth-uuid.c", "libsrc" ++ path.sep_str ++ "cguid-uuid.c", -- 2.54.0