On Wednesday 24 June 2026 19:40:03 LIU Hao wrote: > 在 2026-6-24 01:24, Pali Rohár 写道: > > The function is available in all Windows kernel32.dll version, also in > > NT 3.1 version (also in Win95 and also in Win32s). See the kernel32.def > > file where I collected all those symbol availability information. > > > > Before that I have also checked the WinSDK for NT 3.1 version and that > > function is present in the WINBASE.H header file and also in > > KERNEL32.LIB import library. > > > > Also all MS compilers for Win32s are unconditionally putting > > SetUnhandledExceptionFilter call into the static glued code linked into > > every executable (also when compiling for NT 3.1). So this is mostly the > > core function which has to be present in any Windows version as > > otherwise applications compiled by MS compilers would not run. > > > > So it wrong to say that it is from NT 3.5. Because it is also in NT 3.1. > > It's possible that MSVC used to provide it in a static library,
msvc for NT 3.1 has it as import symbol to DLL. It is not a static function / library. > but in mingw-w64 CRT it isn't implemented and is always imported from > kernel32.dll, > which is from Windows NT 3.5. > > PSDK 2003 says it requires Windows NT Workstation 3.5 or Windows NT Server > 3.5. There's also a cross reference: > https://www.geoffchappell.com/studies/windows/win32/kernel32/api/index.htm As I mentioned in the previous email, PSDK for NT 3.1 has that symbol too. So if PSDK for 2003 is saying that it is from NT 3.5 that is quite wrong. MS lot of times wrote wrong information into documentation and lot of times even removed info for old Windows versions. For example now in the web version of documentation says that SetUnhandledExceptionFilter is available since Windows XP. So MS again just removed the minimal/introduced version. https://learn.microsoft.com/en-us/windows/win32/api/errhandlingapi/nf-errhandlingapi-setunhandledexceptionfilter Just for the reference, now I have again double checked this SetUnhandledExceptionFilter symbol and I can confirm that it is really available in NT 3.1 version of kernel32.dll. So it is really since Windows NT 3.1 and it is available in all Windows versions. This information is also documented in mingw-w64-crt/lib32/kernel32.def file, which I think is now the best documentation of kernel32 symbols in one place. Geoff Chappell site is very good reference for symbol availability, but unfortunately he did not checked kernel32.dll for NT 3.1 version and due this, his table for kernel32.dll mention that every symbol is since NT 3.5. You can see in that link that no symbol is available since NT 3.1 which is suspicious and confirms that just info for version NT 3.1 is missing. I have used Geoff Chappell page for verification if documentation changes which I done for mingw-w64 def files matches Geoff Chappell website (except the missing info about NT 3.1). _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
