mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-14 19:27:17 +00:00
psapi: Test filesystem redirection with EnumProcessModulesEx.
To make it short: redirection has no impact on EnumProcessModules*() behavior. Signed-off-by: Eric Pouech <epouech@codeweavers.com>
This commit is contained in:
parent
c4073d5abf
commit
e658a30a91
|
@ -222,8 +222,10 @@ struct moduleex_snapshot
|
||||||
static BOOL test_EnumProcessModulesEx_snapshot(HANDLE proc, struct moduleex_snapshot* mxsnap,
|
static BOOL test_EnumProcessModulesEx_snapshot(HANDLE proc, struct moduleex_snapshot* mxsnap,
|
||||||
unsigned numsnap)
|
unsigned numsnap)
|
||||||
{
|
{
|
||||||
|
void* cookie;
|
||||||
DWORD needed;
|
DWORD needed;
|
||||||
char buffer[80];
|
char buffer[80];
|
||||||
|
char buffer2[80];
|
||||||
MODULEINFO info;
|
MODULEINFO info;
|
||||||
int i, j;
|
int i, j;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
@ -243,6 +245,14 @@ static BOOL test_EnumProcessModulesEx_snapshot(HANDLE proc, struct moduleex_snap
|
||||||
ok(ret, "GetModuleBaseName failed: %lu (%u/%lu=%p)\n", GetLastError(), j, mxsnap[i].num_modules, mxsnap[i].modules[j]);
|
ok(ret, "GetModuleBaseName failed: %lu (%u/%lu=%p)\n", GetLastError(), j, mxsnap[i].num_modules, mxsnap[i].modules[j]);
|
||||||
ret = GetModuleFileNameExA(proc, mxsnap[i].modules[j], buffer, sizeof(buffer));
|
ret = GetModuleFileNameExA(proc, mxsnap[i].modules[j], buffer, sizeof(buffer));
|
||||||
ok(ret, "GetModuleFileNameEx failed: %lu (%u/%lu=%p)\n", GetLastError(), j, mxsnap[i].num_modules, mxsnap[i].modules[j]);
|
ok(ret, "GetModuleFileNameEx failed: %lu (%u/%lu=%p)\n", GetLastError(), j, mxsnap[i].num_modules, mxsnap[i].modules[j]);
|
||||||
|
if (wow64)
|
||||||
|
{
|
||||||
|
pWow64DisableWow64FsRedirection(&cookie);
|
||||||
|
ret = GetModuleFileNameExA(proc, mxsnap[i].modules[j], buffer2, sizeof(buffer2));
|
||||||
|
ok(ret, "GetModuleFileNameEx failed: %lu (%u/%lu=%p)\n", GetLastError(), j, mxsnap[i].num_modules, mxsnap[i].modules[j]);
|
||||||
|
pWow64RevertWow64FsRedirection(cookie);
|
||||||
|
ok(!strcmp(buffer, buffer2), "Didn't FS redirection to come into play %s <> %s\n", buffer, buffer2);
|
||||||
|
}
|
||||||
memset(&info, 0, sizeof(info));
|
memset(&info, 0, sizeof(info));
|
||||||
ret = GetModuleInformation(proc, mxsnap[i].modules[j], &info, sizeof(info));
|
ret = GetModuleInformation(proc, mxsnap[i].modules[j], &info, sizeof(info));
|
||||||
ok(ret, "GetModuleInformation failed: %lu\n", GetLastError());
|
ok(ret, "GetModuleInformation failed: %lu\n", GetLastError());
|
||||||
|
@ -252,6 +262,30 @@ static BOOL test_EnumProcessModulesEx_snapshot(HANDLE proc, struct moduleex_snap
|
||||||
}
|
}
|
||||||
winetest_pop_context();
|
winetest_pop_context();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wow64)
|
||||||
|
{
|
||||||
|
HMODULE modules[128];
|
||||||
|
DWORD num;
|
||||||
|
|
||||||
|
pWow64DisableWow64FsRedirection(&cookie);
|
||||||
|
for (i = 0; i < numsnap; i++)
|
||||||
|
{
|
||||||
|
modules[0] = (void *)0xdeadbeef;
|
||||||
|
ret = EnumProcessModulesEx(proc, modules, sizeof(modules), &needed, mxsnap[i].list);
|
||||||
|
ok(ret, "didn't succeed %lu\n", GetLastError());
|
||||||
|
ok(needed % sizeof(HMODULE) == 0, "not a multiple of sizeof(HMODULE) cbNeeded=%ld\n", needed);
|
||||||
|
num = min(needed, sizeof(modules)) / sizeof(HMODULE);
|
||||||
|
/* It happens that modules are still loading... so check that msxsnap[i].modules is a subset of modules[].
|
||||||
|
* Crossing fingers that no module is unloaded
|
||||||
|
*/
|
||||||
|
ok(num >= mxsnap[i].num_modules, "Mismatch in module count %lu %lu\n", num, mxsnap[i].num_modules);
|
||||||
|
num = min(num, mxsnap[i].num_modules);
|
||||||
|
for (j = 0; j < num; j++)
|
||||||
|
ok(modules[j] == mxsnap[i].modules[j], "Mismatch in modules handle\n");
|
||||||
|
}
|
||||||
|
pWow64RevertWow64FsRedirection(cookie);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue