psapi/tests: Fix the EnumProcessModules() test and provide more diagnostic information if it fails.
On some Windows systems aclayers.dll gets injected into the process and brings in a lot of extra dlls.
diff --git a/dlls/psapi/tests/psapi_main.c b/dlls/psapi/tests/psapi_main.c
index c4c129b..8a1cfc1 100644
--- a/dlls/psapi/tests/psapi_main.c
+++ b/dlls/psapi/tests/psapi_main.c
@@ -107,10 +107,26 @@
ret = pEnumProcessModules(hpQV, &hMod, sizeof(HMODULE), &cbNeeded);
if(ret != 1)
return;
- ok(cbNeeded / sizeof(HMODULE) >= 3 && cbNeeded / sizeof(HMODULE) <= 5 * sizeof(HMODULE),
- "cbNeeded=%d\n", cbNeeded);
ok(hMod == GetModuleHandle(NULL),
"hMod=%p GetModuleHandle(NULL)=%p\n", hMod, GetModuleHandle(NULL));
+ ok(cbNeeded % sizeof(hMod) == 0, "not a multiple of sizeof(HMODULE) cbNeeded=%d\n", cbNeeded);
+ /* Windows sometimes has a bunch of extra dlls, presumably brought in by
+ * aclayers.dll.
+ */
+ if (cbNeeded < 4 * sizeof(HMODULE) || cbNeeded > 30 * sizeof(HMODULE))
+ {
+ HMODULE hmods[100];
+ int i;
+ ok(0, "cbNeeded=%d\n", cbNeeded);
+
+ pEnumProcessModules(hpQV, hmods, sizeof(hmods), &cbNeeded);
+ for (i = 0 ; i < cbNeeded/sizeof(*hmods); i++)
+ {
+ char path[1024];
+ GetModuleFileNameA(hmods[i], path, sizeof(path));
+ trace("i=%d hmod=%p path=[%s]\n", i, hmods[i], path);
+ }
+ }
}
static void test_GetModuleInformation(void)