2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: ntoskrnl/tests/tests/VirtualMemory.c
5 * PURPOSE: No purpose listed.
7 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
13 #define TestProcessHandle (HANDLE) 1
14 #define TestProcessObject (PVOID) 0x2
15 #define TestBaseAddress (PVOID) 0x1000
16 #define TestNumberOfBytesToLock 0x2000
17 #define TestMdl (PMDL) 0xD0000000
19 static BOOLEAN MockExFreePoolCalled
= FALSE
;
22 MockExFreePool(PVOID Block
)
24 _AssertFalse(MockExFreePoolCalled
);
25 _AssertEqualValue(TestMdl
, Block
);
26 MockExFreePoolCalled
= TRUE
;
29 static BOOLEAN MockMmCreateMdlCalled
= FALSE
;
32 MockMmCreateMdl(PMDL Mdl
,
36 _AssertFalse(MockMmCreateMdlCalled
);
37 _AssertEqualValue(TestBaseAddress
, Base
);
38 _AssertEqualValue(TestNumberOfBytesToLock
, Length
);
39 MockMmCreateMdlCalled
= TRUE
;
43 static BOOLEAN MockMmProbeAndLockPagesCalled
= FALSE
;
46 MockMmProbeAndLockPages(PMDL Mdl
,
47 KPROCESSOR_MODE AccessMode
,
48 LOCK_OPERATION Operation
)
50 _AssertFalse(MockMmProbeAndLockPagesCalled
);
51 _AssertEqualValue(TestMdl
, Mdl
);
52 _AssertEqualValue(UserMode
, AccessMode
);
53 _AssertEqualValue(IoWriteAccess
, Operation
);
54 MockMmProbeAndLockPagesCalled
= TRUE
;
57 static BOOLEAN MockObDereferenceObjectCalled
= FALSE
;
60 MockObDereferenceObject(PVOID Object
)
62 _AssertFalse(MockObDereferenceObjectCalled
);
63 _AssertEqualValue(TestProcessObject
, Object
);
64 MockObDereferenceObjectCalled
= TRUE
;
67 static BOOLEAN MockObReferenceObjectByHandleCalled
= FALSE
;
70 MockObReferenceObjectByHandle(HANDLE Handle
,
71 ACCESS_MASK DesiredAccess
,
72 POBJECT_TYPE ObjectType
,
73 KPROCESSOR_MODE AccessMode
,
75 POBJECT_HANDLE_INFORMATION HandleInformation
)
77 _AssertFalse(MockObReferenceObjectByHandleCalled
);
78 _AssertEqualValue(TestProcessHandle
, Handle
);
79 _AssertEqualValue(PROCESS_VM_WRITE
, DesiredAccess
);
80 _AssertEqualValue(NULL
, ObjectType
);
81 _AssertEqualValue(UserMode
, AccessMode
);
82 _AssertNotEqualValue(NULL
, Object
);
83 _AssertEqualValue(NULL
, HandleInformation
);
84 *Object
= TestProcessObject
;
85 MockObReferenceObjectByHandleCalled
= TRUE
;
86 return STATUS_SUCCESS
;
91 ULONG NumberOfBytesLocked
;
94 status
= MiLockVirtualMemory(TestProcessHandle
,
96 TestNumberOfBytesToLock
,
98 MockObReferenceObjectByHandle
,
100 MockObDereferenceObject
,
101 MockMmProbeAndLockPages
,
103 _AssertEqualValue(STATUS_SUCCESS
, status
);
104 _AssertTrue(MockObReferenceObjectByHandleCalled
);
105 _AssertTrue(MockMmCreateMdlCalled
);
106 _AssertTrue(MockMmProbeAndLockPagesCalled
);
107 _AssertTrue(MockExFreePoolCalled
);
108 _AssertTrue(MockObDereferenceObjectCalled
);
109 _AssertEqualValue(TestNumberOfBytesToLock
, NumberOfBytesLocked
);
112 _Dispatcher(VirtualmemoryTest
, "Virtual memory")