[PATCH v3 1/2] ntdll/tests: Test NtMapViewOfSection with a 64-bit DLL and zero_bits > 31.
Brendan Shanks
bshanks at codeweavers.com
Wed May 4 16:31:10 CDT 2022
Signed-off-by: Brendan Shanks <bshanks at codeweavers.com>
---
v3: Only run test on 64-bit (it can never fail on 32-bit).
dlls/ntdll/tests/virtual.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/dlls/ntdll/tests/virtual.c b/dlls/ntdll/tests/virtual.c
index 30a97ba9d94..5d6a7d1eac0 100644
--- a/dlls/ntdll/tests/virtual.c
+++ b/dlls/ntdll/tests/virtual.c
@@ -904,6 +904,33 @@ static void test_NtMapViewOfSection(void)
CloseHandle(file);
DeleteFileA(testfile);
+ /* test zero_bits > 31 with a 64-bit DLL file image mapping */
+ if (is_win64)
+ {
+ file = CreateFileA("c:\\windows\\system32\\version.dll", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
+ ok(file != INVALID_HANDLE_VALUE, "Failed to open version.dll\n");
+
+ mapping = CreateFileMappingA(file, NULL, PAGE_READONLY|SEC_IMAGE, 0, 0, NULL);
+ ok(mapping != 0, "CreateFileMapping failed\n");
+
+ ptr = NULL;
+ size = 0;
+ offset.QuadPart = 0;
+ zero_bits = 0x7fffffff;
+ status = NtMapViewOfSection(mapping, process, &ptr, zero_bits, 0, &offset, &size, 1, 0, PAGE_READONLY);
+
+ ok(status == STATUS_SUCCESS || status == STATUS_IMAGE_NOT_AT_BASE, "NtMapViewOfSection returned %08lx\n", status);
+ ok(!((ULONG_PTR)ptr & 0xffff), "returned memory %p is not aligned to 64k\n", ptr);
+ todo_wine
+ ok(((UINT_PTR)ptr & ~get_zero_bits_mask(zero_bits)) == 0, "NtMapViewOfSection returned address %p\n", ptr);
+
+ status = NtUnmapViewOfSection(process, ptr);
+ ok(status == STATUS_SUCCESS, "NtUnmapViewOfSection returned %08lx\n", status);
+
+ NtClose(mapping);
+ CloseHandle(file);
+ }
+
TerminateProcess(process, 0);
CloseHandle(process);
}
--
2.35.1
More information about the wine-devel
mailing list