From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/kernel32/tests/virtual.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index cfbfcac0950..0feac0d70ac 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -4408,6 +4408,32 @@ static void test_ReadProcessMemory(void) free(buf); }
+static void test_WriteProcessMemory(void) +{ + BYTE src[32], dst[sizeof(src)]; + HANDLE hproc; + SIZE_T written; + BOOL ret; + + /* test minimum process handle access rights */ + ret = DuplicateHandle(GetCurrentProcess(), GetCurrentProcess(), GetCurrentProcess(), + &hproc, PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, 0); + ok(ret, "DuplicateHandle failed %lu\n", GetLastError()); + + memset(src, 0xA5, sizeof(src)); + memset(dst, 0x5A, sizeof(dst)); + written = 666; + ret = WriteProcessMemory(hproc, dst, src, sizeof(src), &written); + todo_wine + ok(ret, "WriteProcessMemory failed\n"); + todo_wine + ok(written == sizeof(src), "copied = %Id\n", written); + todo_wine + ok(dst[0] == 0xA5 && dst[sizeof(dst) - 1] == 0xA5, "Write operation failed\n"); + + CloseHandle(hproc); +} + START_TEST(virtual) { int argc; @@ -4490,6 +4516,7 @@ START_TEST(virtual) test_write_watch(); test_PrefetchVirtualMemory(); test_ReadProcessMemory(); + test_WriteProcessMemory(); #if defined(__i386__) || defined(__x86_64__) test_stack_commit(); #endif