- [NTDLL] Add a stub for a Win7+ function that we need to link to when the DLL_EXPORT_VERSION is high enough. This is needed for the kernel32 winetest sync to wine-10.0.
- Fix a quote character parsing bug in cmdline_to_argv- Implement ansi version of cmdline_to_argv
- Use cmdline_to_argv(A) in __(w)getmainargs to reparse the command line from _(w)cmdln
Fixes 30 failures in msvcrt_apitest:__getmainargs
Fixes a crash when installing a driver from custom directory.
Also move the combobox handling code to the PrepareFoldersToScan() and call it instead.
CORE-20409
* [APPHELP] Handle PE images without an import name table
This splits the import lookup code in SeiHookImports into two helper functions - SeiPatchImportsByName and SeiPatchImportsByAddress.
Some PEs (eg. compiled with Borland toolchain or compressed with UPX) may not contain an import name table, so we use an alternative method (SeiPatchImportsByAddress) to find the imports we want to hook to by comparing the original pointers of the registered shim functions against those in IAT.
---------
Co-authored-by: Stanislav Motylkov <[email protected]>
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
Don't use version.dll APIs! This code runs during DLL process attach and all it can call is ntdll and kernel32.
There is still a hack, that calls GetFileVersionInfoSizeW, which is required for some reason, otherwise comctl32_winetest tooltips starts to fail.
It has possibly something to do with the initialization order of loaded DLLs.
Windows ntdll and ntoskrnl export a multibyte capable version of toupper (not tolower though!)
The internal version is kept as it is, because the multibyte version requires unicode tables to be set up and doesn't support IRQL > APC_LEVEL.
Why though would toupper (but not tolower) support raw, undecoded multibyte characters, you might ask. Well I don't know, but someone at MS must have decided that this is a good idea, and winetests show this is how it behaves.
Previously tolowerW/toupperW was defined to towlower/towupper, which was imported from ntdll. These functions don't work correctly though. Instead use wine's case mapping table.
The "unhacking" is done in k32.h, because the original hacks in wine/unicode.h are still needed in other places.
Fixes 1 LCMApString test and prevents further regression when fixing iswctype in libcntpr.