Author: tfaber
Date: Sun Jul 5 19:44:05 2015
New Revision: 68352
URL:
http://svn.reactos.org/svn/reactos?rev=68352&view=rev
Log:
[NTOS:MM]
- Show that PAGE_NOCACHE also works for image and data sections
- Show that *MapViewOfSection returns user space addresses
CORE-9808
Modified:
trunk/rostests/kmtests/ntos_mm/MmSection.c
Modified: trunk/rostests/kmtests/ntos_mm/MmSection.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/ntos_mm/MmSection…
==============================================================================
--- trunk/rostests/kmtests/ntos_mm/MmSection.c [iso-8859-1] (original)
+++ trunk/rostests/kmtests/ntos_mm/MmSection.c [iso-8859-1] Sun Jul 5 19:44:05 2015
@@ -62,6 +62,21 @@
ok_eq_hex(Status, ExpectAtBase ? STATUS_SUCCESS : STATUS_IMAGE_NOT_AT_BASE);\
if (!skip(NT_SUCCESS(Status), "Section not mapped\n"))
\
{ \
+ ok((LONG_PTR)BaseAddress > 0, "BaseAddress = %p\n", BaseAddress);
\
+ ok_eq_uint(*(PUCHAR)BaseAddress, ExpectM ? 'M' : 0);
\
+ Status = MmUnmapViewOfSection(PsGetCurrentProcess(), BaseAddress); \
+ ok_eq_hex(Status, STATUS_SUCCESS); \
+ } \
+ BaseAddress = NULL; \
+ ViewSize = 0; \
+ Status = MmMapViewOfSection(SectionObject, PsGetCurrentProcess(), \
+ &BaseAddress, 0, 1, &SectionOffset,
\
+ &ViewSize, ViewUnmap, 0, \
+ PAGE_READONLY | PAGE_NOCACHE); \
+ ok_eq_hex(Status, ExpectAtBase ? STATUS_SUCCESS : STATUS_IMAGE_NOT_AT_BASE);\
+ if (!skip(NT_SUCCESS(Status), "Section not mapped\n"))
\
+ { \
+ ok((LONG_PTR)BaseAddress > 0, "BaseAddress = %p\n", BaseAddress);
\
ok_eq_uint(*(PUCHAR)BaseAddress, ExpectM ? 'M' : 0);
\
Status = MmUnmapViewOfSection(PsGetCurrentProcess(), BaseAddress); \
ok_eq_hex(Status, STATUS_SUCCESS); \
@@ -452,6 +467,7 @@
ok_eq_hex(Status, STATUS_SUCCESS);
if (!skip(NT_SUCCESS(Status), "No view\n"))
{
+ ok((LONG_PTR)Mapping > 0, "Mapping = %p\n", Mapping);
EqualBytes = RtlCompareMemory(Mapping,
ZeroPageContents,
PAGE_SIZE);
@@ -476,6 +492,7 @@
ok_eq_hex(Status, STATUS_SUCCESS);
if (!skip(NT_SUCCESS(Status), "No view\n"))
{
+ ok((LONG_PTR)Mapping > 0, "Mapping = %p\n", Mapping);
EqualBytes = RtlCompareMemory(Mapping,
ZeroPageContents,
PAGE_SIZE);
@@ -500,6 +517,7 @@
ok_eq_hex(Status, STATUS_SUCCESS);
if (!skip(NT_SUCCESS(Status), "No view\n"))
{
+ ok((LONG_PTR)Mapping > 0, "Mapping = %p\n", Mapping);
EqualBytes = RtlCompareMemory(Mapping,
MyPage,
PAGE_SIZE);