https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0623a6f8108b209b8ea2f…
commit 0623a6f8108b209b8ea2f74ba94d1090ea0f3968
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Tue Apr 3 13:44:31 2018 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Tue Apr 3 13:44:31 2018 +0100
[PSAPI_WINETEST] Sync with Wine Staging 3.3. CORE-14434
---
modules/rostests/winetests/psapi/psapi_main.c | 67 ++++++++++++++++-----------
1 file changed, 39 insertions(+), 28 deletions(-)
diff --git a/modules/rostests/winetests/psapi/psapi_main.c
b/modules/rostests/winetests/psapi/psapi_main.c
index a8fe243a73..a03605b173 100644
--- a/modules/rostests/winetests/psapi/psapi_main.c
+++ b/modules/rostests/winetests/psapi/psapi_main.c
@@ -19,6 +19,11 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+/* 0x0600 makes PROCESS_ALL_ACCESS not compatible with pre-Vista versions */
+#ifndef __REACTOS__
+#define _WIN32_WINNT 0x0500
+#endif
+
#include <stdarg.h>
#include "ntstatus.h"
@@ -129,7 +134,7 @@ static void test_EnumProcessModules(void)
ret = pEnumProcessModules(hpQV, &hMod, sizeof(HMODULE), NULL);
ok(!ret, "succeeded\n");
ok(GetLastError() == ERROR_NOACCESS, "expected error=ERROR_NOACCESS but got
%d\n", GetLastError());
- todo_wine ok(hMod == GetModuleHandleA(NULL),
+ ok(hMod == GetModuleHandleA(NULL),
"hMod=%p GetModuleHandleA(NULL)=%p\n", hMod, GetModuleHandleA(NULL));
SetLastError(0xdeadbeef);
@@ -153,6 +158,7 @@ static void test_EnumProcessModules(void)
static void test_GetModuleInformation(void)
{
HMODULE hMod = GetModuleHandleA(NULL);
+ DWORD *tmp, counter = 0;
MODULEINFO info;
DWORD ret;
@@ -172,10 +178,21 @@ static void test_GetModuleInformation(void)
pGetModuleInformation(hpQV, hMod, &info, sizeof(info)-1);
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "expected
error=ERROR_INSUFFICIENT_BUFFER but got %d\n", GetLastError());
- SetLastError(0xdeadbeef);
ret = pGetModuleInformation(hpQV, hMod, &info, sizeof(info));
ok(ret == 1, "failed with %d\n", GetLastError());
ok(info.lpBaseOfDll == hMod, "lpBaseOfDll=%p hMod=%p\n", info.lpBaseOfDll,
hMod);
+
+ hMod = LoadLibraryA("shell32.dll");
+ ok(hMod != NULL, "Failed to load shell32.dll, error: %u\n",
GetLastError());
+
+ ret = pGetModuleInformation(hpQV, hMod, &info, sizeof(info));
+ ok(ret == 1, "failed with %d\n", GetLastError());
+ info.SizeOfImage /= sizeof(DWORD);
+ for (tmp = (DWORD *)hMod; info.SizeOfImage; info.SizeOfImage--)
+ counter ^= *tmp++;
+ trace("xor of shell32: %08x\n", counter);
+
+ FreeLibrary(hMod);
}
static BOOL check_with_margin(SIZE_T perf, SIZE_T sysperf, int margin)
@@ -331,14 +348,7 @@ static BOOL nt_get_mapped_file_name(HANDLE process, LPVOID addr,
LPWSTR name, DW
ret_len = 0xdeadbeef;
status = pNtQueryVirtualMemory(process, addr, MemorySectionName, buf, buf_len,
&ret_len);
-todo_wine
ok(!status, "NtQueryVirtualMemory error %x\n", status);
- /* FIXME: remove once Wine is fixed */
- if (status)
- {
- HeapFree(GetProcessHeap(), 0, buf);
- return FALSE;
- }
section_name = (MEMORY_SECTION_NAME *)buf;
ok(ret_len == section_name->SectionFileName.MaximumLength + sizeof(*section_name),
"got %lu, %u\n",
@@ -364,31 +374,30 @@ static void test_GetMappedFileName(void)
char temp_path[MAX_PATH], file_name[MAX_PATH], map_name[MAX_PATH],
device_name[MAX_PATH], drive[3];
WCHAR map_nameW[MAX_PATH], nt_map_name[MAX_PATH];
HANDLE hfile, hmap;
+ HANDLE current_process;
+
+ DuplicateHandle( GetCurrentProcess(), GetCurrentProcess(),
+ GetCurrentProcess(), ¤t_process, 0, 0,
DUPLICATE_SAME_ACCESS );
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(NULL, hMod, szMapPath, sizeof(szMapPath));
ok(!ret, "GetMappedFileName should fail\n");
-todo_wine
ok(GetLastError() == ERROR_INVALID_HANDLE, "expected error=ERROR_INVALID_HANDLE
but got %d\n", GetLastError());
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(hpSR, hMod, szMapPath, sizeof(szMapPath));
ok(!ret, "GetMappedFileName should fail\n");
-todo_wine
ok(GetLastError() == ERROR_ACCESS_DENIED, "expected error=ERROR_ACCESS_DENIED
but got %d\n", GetLastError());
SetLastError( 0xdeadbeef );
ret = pGetMappedFileNameA(hpQI, hMod, szMapPath, sizeof(szMapPath));
-todo_wine
ok( ret || broken(GetLastError() == ERROR_UNEXP_NET_ERR), /* win2k */
"GetMappedFileNameA failed with error %u\n", GetLastError() );
if (ret)
{
ok(ret == strlen(szMapPath), "szMapPath=\"%s\" ret=%d\n",
szMapPath, ret);
- todo_wine
ok(szMapPath[0] == '\\', "szMapPath=\"%s\"\n",
szMapPath);
szMapBaseName = strrchr(szMapPath, '\\'); /* That's close enough for
us */
- todo_wine
ok(szMapBaseName && *szMapBaseName,
"szMapPath=\"%s\"\n", szMapPath);
if (szMapBaseName)
{
@@ -426,36 +435,30 @@ todo_wine
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(GetCurrentProcess(), base, map_name, 0);
ok(!ret, "GetMappedFileName should fail\n");
-todo_wine
ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() ==
ERROR_INSUFFICIENT_BUFFER,
"wrong error %d\n", GetLastError());
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(GetCurrentProcess(), base, 0, sizeof(map_name));
ok(!ret, "GetMappedFileName should fail\n");
-todo_wine
ok(GetLastError() == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER,
got %d\n", GetLastError());
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(GetCurrentProcess(), base, map_name, 1);
-todo_wine
ok(ret == 1, "GetMappedFileName error %d\n", GetLastError());
ok(!map_name[0] || broken(map_name[0] == device_name[0]) /* before win2k */,
"expected 0, got %c\n", map_name[0]);
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(GetCurrentProcess(), base, map_name, sizeof(map_name));
-todo_wine {
ok(ret, "GetMappedFileName error %d\n", GetLastError());
ok(ret > strlen(device_name), "map_name should be longer than
device_name\n");
ok(memcmp(map_name, device_name, strlen(device_name)) == 0, "map name does not
start with a device name: %s\n", map_name);
-}
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameW(GetCurrentProcess(), base, map_nameW,
sizeof(map_nameW)/sizeof(map_nameW[0]));
-todo_wine {
ok(ret, "GetMappedFileNameW error %d\n", GetLastError());
ok(ret > strlen(device_name), "map_name should be longer than
device_name\n");
-}
+
if (nt_get_mapped_file_name(GetCurrentProcess(), base, nt_map_name,
sizeof(nt_map_name)/sizeof(nt_map_name[0])))
{
ok(memcmp(map_nameW, nt_map_name, lstrlenW(map_nameW)) == 0, "map name does
not start with a device name: %s\n", map_name);
@@ -463,18 +466,27 @@ todo_wine {
ok(memcmp(map_name, device_name, strlen(device_name)) == 0, "map name does
not start with a device name: %s\n", map_name);
}
+ SetLastError(0xdeadbeef);
+ ret = pGetMappedFileNameW(current_process, base, map_nameW,
sizeof(map_nameW)/sizeof(map_nameW[0]));
+ ok(ret, "GetMappedFileNameW error %d\n", GetLastError());
+ ok(ret > strlen(device_name), "map_name should be longer than
device_name\n");
+
+ if (nt_get_mapped_file_name(current_process, base, nt_map_name,
sizeof(nt_map_name)/sizeof(nt_map_name[0])))
+ {
+ ok(memcmp(map_nameW, nt_map_name, lstrlenW(map_nameW)) == 0, "map name does
not start with a device name: %s\n", map_name);
+ WideCharToMultiByte(CP_ACP, 0, map_nameW, -1, map_name, MAX_PATH, NULL, NULL);
+ ok(memcmp(map_name, device_name, strlen(device_name)) == 0, "map name does
not start with a device name: %s\n", map_name);
+ }
+
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(GetCurrentProcess(), base + 0x2000, map_name,
sizeof(map_name));
-todo_wine {
ok(ret, "GetMappedFileName error %d\n", GetLastError());
ok(ret > strlen(device_name), "map_name should be longer than
device_name\n");
ok(memcmp(map_name, device_name, strlen(device_name)) == 0, "map name does not
start with a device name: %s\n", map_name);
-}
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(GetCurrentProcess(), base + 0x4000, map_name,
sizeof(map_name));
ok(!ret, "GetMappedFileName should fail\n");
-todo_wine
ok(GetLastError() == ERROR_UNEXP_NET_ERR, "expected ERROR_UNEXP_NET_ERR, got
%d\n", GetLastError());
SetLastError(0xdeadbeef);
@@ -486,7 +498,6 @@ todo_wine
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(0, base, map_name, sizeof(map_name));
ok(!ret, "GetMappedFileName should fail\n");
-todo_wine
ok(GetLastError() == ERROR_INVALID_HANDLE, "expected ERROR_INVALID_HANDLE, got
%d\n", GetLastError());
UnmapViewOfFile(base);
@@ -505,9 +516,9 @@ todo_wine
SetLastError(0xdeadbeef);
ret = pGetMappedFileNameA(GetCurrentProcess(), base, map_name, sizeof(map_name));
ok(!ret, "GetMappedFileName should fail\n");
-todo_wine
ok(GetLastError() == ERROR_FILE_INVALID, "expected ERROR_FILE_INVALID, got
%d\n", GetLastError());
+ CloseHandle(current_process);
UnmapViewOfFile(base);
CloseHandle(hmap);
}
@@ -554,8 +565,8 @@ static void test_GetProcessImageFileName(void)
if(ret && ret1)
{
/* Windows returns 2*strlen-1 */
- todo_wine ok(ret >= strlen(szImgPath), "szImgPath=\"%s\"
ret=%d\n", szImgPath, ret);
- todo_wine ok(!strcmp(szImgPath, szMapPath), "szImgPath=\"%s\"
szMapPath=\"%s\"\n", szImgPath, szMapPath);
+ ok(ret >= strlen(szImgPath), "szImgPath=\"%s\" ret=%d\n",
szImgPath, ret);
+ ok(!strcmp(szImgPath, szMapPath), "szImgPath=\"%s\"
szMapPath=\"%s\"\n", szImgPath, szMapPath);
}
SetLastError(0xdeadbeef);