Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > DoxygenVirtualMemory.c
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS kernel 00004 * FILE: ntoskrnl/tests/tests/VirtualMemory.c 00005 * PURPOSE: No purpose listed. 00006 * 00007 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net) 00008 */ 00009 00010 #include <ntoskrnl.h> 00011 #include "regtests.h" 00012 00013 #define TestProcessHandle (HANDLE) 1 00014 #define TestProcessObject (PVOID) 0x2 00015 #define TestBaseAddress (PVOID) 0x1000 00016 #define TestNumberOfBytesToLock 0x2000 00017 #define TestMdl (PMDL) 0xD0000000 00018 00019 static BOOLEAN MockExFreePoolCalled = FALSE; 00020 00021 static VOID NTAPI 00022 MockExFreePool(PVOID Block) 00023 { 00024 _AssertFalse(MockExFreePoolCalled); 00025 _AssertEqualValue(TestMdl, Block); 00026 MockExFreePoolCalled = TRUE; 00027 } 00028 00029 static BOOLEAN MockMmCreateMdlCalled = FALSE; 00030 00031 static PMDL NTAPI 00032 MockMmCreateMdl(PMDL Mdl, 00033 PVOID Base, 00034 ULONG Length) 00035 { 00036 _AssertFalse(MockMmCreateMdlCalled); 00037 _AssertEqualValue(TestBaseAddress, Base); 00038 _AssertEqualValue(TestNumberOfBytesToLock, Length); 00039 MockMmCreateMdlCalled = TRUE; 00040 return TestMdl; 00041 } 00042 00043 static BOOLEAN MockMmProbeAndLockPagesCalled = FALSE; 00044 00045 static VOID NTAPI 00046 MockMmProbeAndLockPages(PMDL Mdl, 00047 KPROCESSOR_MODE AccessMode, 00048 LOCK_OPERATION Operation) 00049 { 00050 _AssertFalse(MockMmProbeAndLockPagesCalled); 00051 _AssertEqualValue(TestMdl, Mdl); 00052 _AssertEqualValue(UserMode, AccessMode); 00053 _AssertEqualValue(IoWriteAccess, Operation); 00054 MockMmProbeAndLockPagesCalled = TRUE; 00055 } 00056 00057 static BOOLEAN MockObDereferenceObjectCalled = FALSE; 00058 00059 static VOID FASTCALL 00060 MockObDereferenceObject(PVOID Object) 00061 { 00062 _AssertFalse(MockObDereferenceObjectCalled); 00063 _AssertEqualValue(TestProcessObject, Object); 00064 MockObDereferenceObjectCalled = TRUE; 00065 } 00066 00067 static BOOLEAN MockObReferenceObjectByHandleCalled = FALSE; 00068 00069 static NTSTATUS NTAPI 00070 MockObReferenceObjectByHandle(HANDLE Handle, 00071 ACCESS_MASK DesiredAccess, 00072 POBJECT_TYPE ObjectType, 00073 KPROCESSOR_MODE AccessMode, 00074 PVOID* Object, 00075 POBJECT_HANDLE_INFORMATION HandleInformation) 00076 { 00077 _AssertFalse(MockObReferenceObjectByHandleCalled); 00078 _AssertEqualValue(TestProcessHandle, Handle); 00079 _AssertEqualValue(PROCESS_VM_WRITE, DesiredAccess); 00080 _AssertEqualValue(NULL, ObjectType); 00081 _AssertEqualValue(UserMode, AccessMode); 00082 _AssertNotEqualValue(NULL, Object); 00083 _AssertEqualValue(NULL, HandleInformation); 00084 *Object = TestProcessObject; 00085 MockObReferenceObjectByHandleCalled = TRUE; 00086 return STATUS_SUCCESS; 00087 } 00088 00089 static void RunTest() 00090 { 00091 ULONG NumberOfBytesLocked; 00092 NTSTATUS status; 00093 00094 status = MiLockVirtualMemory(TestProcessHandle, 00095 TestBaseAddress, 00096 TestNumberOfBytesToLock, 00097 &NumberOfBytesLocked, 00098 MockObReferenceObjectByHandle, 00099 MockMmCreateMdl, 00100 MockObDereferenceObject, 00101 MockMmProbeAndLockPages, 00102 MockExFreePool); 00103 _AssertEqualValue(STATUS_SUCCESS, status); 00104 _AssertTrue(MockObReferenceObjectByHandleCalled); 00105 _AssertTrue(MockMmCreateMdlCalled); 00106 _AssertTrue(MockMmProbeAndLockPagesCalled); 00107 _AssertTrue(MockExFreePoolCalled); 00108 _AssertTrue(MockObDereferenceObjectCalled); 00109 _AssertEqualValue(TestNumberOfBytesToLock, NumberOfBytesLocked); 00110 } 00111 00112 _Dispatcher(VirtualmemoryTest, "Virtual memory") Generated on Sun May 27 2012 04:37:41 for ReactOS by
1.7.6.1
|