ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

VirtualMemory.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.