Francois Gouget : psapi/tests: Fix the EnumProcessModules() test and provide more diagnostic information if it fails.

Alexandre Julliard julliard at winehq.org
Fri Aug 26 10:40:56 CDT 2011


Module: wine
Branch: master
Commit: 187de1794eb73a4a0918414fed11b7ca451f095f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=187de1794eb73a4a0918414fed11b7ca451f095f

Author: Francois Gouget <fgouget at free.fr>
Date:   Fri Aug 26 16:09:03 2011 +0200

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.

---

 dlls/psapi/tests/psapi_main.c |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

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 @@ static void test_EnumProcessModules(void)
     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)




More information about the wine-cvs mailing list