This serie is to move Wine's implementation of EnumProcessModules
closer to Windows' behavior.
Wine's current implementation is broken for a wow64 process enumerated
from a 64bit bit process:
- it returns the list of 32bit modules, while Windows returns the main
module (32bit) and the 64bit modules (in wow64 process).
This series:
- adds tests to demonstrate that discrepancy
- fix all caller's to EnumProcessModules in Wine source tree which
require the 32bit bit modules (thanks to EnumProcessModulesEx)
- fortunately, a couple of callers only require the first (main)
module and don't need to be changed.
- re-implement EnumProcessModules on top of EnumProcessModulesEx
(to mimic Window's results)
- shows also that Wine's implementation returns loaded modules
from a different directory than Windows. Also tested on Win10,
the returned paths from EnumProcessModules+GetModuleFileNameEx
are the same as the ones stored in LDR_DATA.
So, there's still more work to do after this serie:
- with loader's path for wow64 processes
- fix dbghelp to handle the conversions: information from
EnumProcessModules, debug events reports from system32, while
dbghelp (SymEnumerateModules, SymRefreshModules and the like)
report from syswow64! (except ntdll)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2186