Module: wine Branch: master Commit: 82e3e014be08370cd58b6d5d727377778da3fecc URL: https://gitlab.winehq.org/wine/wine/-/commit/82e3e014be08370cd58b6d5d7273777...
Author: Eric Pouech eric.pouech@gmail.com Date: Tue Feb 14 11:07:00 2023 +0100
dbghelp: Use EnumProcessModulesEx().
In order to get 32bit modules for a wow64 process.
Signed-off-by: Eric Pouech eric.pouech@gmail.com
---
dlls/dbghelp/module.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c index c0c47b859f4..5b99b5eea58 100644 --- a/dlls/dbghelp/module.c +++ b/dlls/dbghelp/module.c @@ -1273,11 +1273,18 @@ BOOL WINAPI EnumerateLoadedModulesW64(HANDLE hProcess, WCHAR baseW[256], modW[256]; DWORD i, sz; MODULEINFO mi; + BOOL wow64; + DWORD filter = LIST_MODULES_DEFAULT;
hMods = HeapAlloc(GetProcessHeap(), 0, 256 * sizeof(hMods[0])); if (!hMods) return FALSE;
- if (!EnumProcessModules(hProcess, hMods, 256 * sizeof(hMods[0]), &sz)) + if (sizeof(void*) > sizeof(int) && + IsWow64Process(hProcess, &wow64) && + wow64) + filter = LIST_MODULES_32BIT; + + if (!EnumProcessModulesEx(hProcess, hMods, 256 * sizeof(hMods[0]), &sz, filter)) { /* hProcess should also be a valid process handle !! */ HeapFree(GetProcessHeap(), 0, hMods); @@ -1286,7 +1293,7 @@ BOOL WINAPI EnumerateLoadedModulesW64(HANDLE hProcess, if (sz > 256 * sizeof(hMods[0])) { hMods = HeapReAlloc(GetProcessHeap(), 0, hMods, sz); - if (!hMods || !EnumProcessModules(hProcess, hMods, sz, &sz)) + if (!hMods || !EnumProcessModulesEx(hProcess, hMods, sz, &sz, filter)) return FALSE; } sz /= sizeof(HMODULE);