diff --git a/reactos/include/ddk/mmfuncs.h b/reactos/include/ddk/mmfuncs.h index 40a5be072a4..76ed46e9f5f 100644 --- a/reactos/include/ddk/mmfuncs.h +++ b/reactos/include/ddk/mmfuncs.h @@ -1,6 +1,6 @@ #ifndef _INCLUDE_DDK_MMFUNCS_H #define _INCLUDE_DDK_MMFUNCS_H -/* $Id: mmfuncs.h,v 1.22 2004/05/15 22:45:51 hbirr Exp $ */ +/* $Id: mmfuncs.h,v 1.23 2004/07/17 03:04:45 ion Exp $ */ /* MEMORY MANAGMENT ******************************************************/ @@ -65,6 +65,20 @@ extern inline unsigned int ADDRESS_AND_SIZE_TO_SPAN_PAGES(PVOID Va, #define PAGE_ALIGN(va) ( (PVOID) (((ULONG)(va)) & (~(PAGE_SIZE-1))) ) #define PAGE_BASE(va) PAGE_ALIGN(va) +NTSTATUS +STDCALL +MmAddPhysicalMemory ( + IN PPHYSICAL_ADDRESS StartAddress, + IN OUT PLARGE_INTEGER NumberOfBytes + ); + +NTSTATUS +STDCALL +MmAddVerifierThunks ( + IN PVOID ThunkBuffer, + IN ULONG ThunkBufferSize + ); + DWORD STDCALL @@ -73,6 +87,14 @@ MmAdjustWorkingSetSize ( DWORD Unknown1, DWORD Unknown2 ); + +NTSTATUS +STDCALL +MmAdvanceMdl ( + IN PMDL Mdl, + IN ULONG NumberOfBytes + ); + PVOID STDCALL MmAllocateContiguousMemory ( @@ -96,6 +118,13 @@ MmAllocateContiguousAlignedMemory(IN ULONG NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType OPTIONAL, IN ULONG Alignment); +PVOID +STDCALL +MmAllocateMappingAddress ( + IN SIZE_T NumberOfBytes, + IN ULONG PoolTag + ); + PVOID STDCALL MmAllocateNonCachedMemory ( @@ -181,6 +210,14 @@ MmFreeContiguousMemorySpecifyCache(IN PVOID BaseAddress, IN ULONG NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType ); + +VOID +STDCALL +MmFreeMappingAddress ( + IN PVOID BaseAddress, + IN ULONG PoolTag + ); + VOID STDCALL MmFreeNonCachedMemory ( @@ -228,6 +265,12 @@ MmGetPhysicalAddress ( IN PVOID BaseAddress ); +PPHYSICAL_MEMORY_RANGE +STDCALL +MmGetPhysicalMemoryRanges ( + VOID + ); + #define MmGetProcedureAddress(Address) (Address) /* @@ -249,6 +292,18 @@ MmGetPhysicalAddress ( (((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL)) ? \ ((Mdl)->MappedSystemVa):(MmMapLockedPages((Mdl),KernelMode))) +PVOID +STDCALL +MmGetSystemRoutineAddress ( + IN PUNICODE_STRING SystemRoutineName + ); + +PVOID +STDCALL +MmGetVirtualForPhysical ( + IN PHYSICAL_ADDRESS PhysicalAddress + ); + NTSTATUS STDCALL MmGrowKernelStack ( @@ -294,6 +349,11 @@ STDCALL MmIsAddressValid ( IN PVOID VirtualAddress ); +ULONG +STDCALL +MmIsDriverVerifying ( + IN struct _DRIVER_OBJECT *DriverObject + ); BOOLEAN STDCALL MmIsNonPagedSystemAddressValid ( @@ -315,6 +375,13 @@ STDCALL MmIsThisAnNtAsSystem ( VOID ); + +NTSTATUS +STDCALL +MmIsVerifierEnabled ( + OUT PULONG VerifierFlags + ); + /* * FUNCTION: Locks a section of the driver's code into memory * ARGUMENTS: @@ -378,6 +445,21 @@ MmMapMemoryDumpMdl ( ); PVOID STDCALL +MmMapLockedPagesWithReservedMapping ( + IN PVOID MappingAddress, + IN ULONG PoolTag, + IN PMDL MemoryDescriptorList, + IN MEMORY_CACHING_TYPE CacheType + ); +NTSTATUS +STDCALL +MmMapUserAddressesToPage ( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes, + IN PVOID PageAddress + ); +PVOID +STDCALL MmMapVideoDisplay ( IN PHYSICAL_ADDRESS PhysicalAddress, IN ULONG NumberOfBytes, @@ -385,11 +467,19 @@ MmMapVideoDisplay ( ); NTSTATUS STDCALL +MmMapViewInSessionSpace ( + IN PVOID Section, + OUT PVOID *MappedBase, + IN OUT PSIZE_T ViewSize + ); +NTSTATUS +STDCALL MmMapViewInSystemSpace ( IN PVOID SectionObject, OUT PVOID * MappedBase, IN PULONG ViewSize ); + NTSTATUS STDCALL MmMapViewOfSection ( @@ -404,6 +494,19 @@ MmMapViewOfSection ( IN ULONG AllocationType, IN ULONG Protect ); +NTSTATUS +STDCALL +MmMarkPhysicalMemoryAsBad( + IN PPHYSICAL_ADDRESS StartAddress, + IN OUT PLARGE_INTEGER NumberOfBytes + ); + +NTSTATUS +STDCALL +MmMarkPhysicalMemoryAsGood( + IN PPHYSICAL_ADDRESS StartAddress, + IN OUT PLARGE_INTEGER NumberOfBytes + ); /* * FUNCTION: Makes the whole driver pageable @@ -416,6 +519,13 @@ MmPageEntireDriver ( PVOID AddressWithinSection ); +NTSTATUS +STDCALL +MmPrefetchPages ( + IN ULONG NumberOfLists, + IN PREAD_LIST *ReadLists + ); + /* * VOID * MmPrepareMdlForReuse ( @@ -457,6 +567,32 @@ MmProbeAndLockPages ( LOCK_OPERATION Operation ); +VOID +STDCALL +MmProbeAndLockProcessPages ( + IN OUT PMDL MemoryDescriptorList, + IN PEPROCESS Process, + IN KPROCESSOR_MODE AccessMode, + IN LOCK_OPERATION Operation + ); + +VOID +STDCALL +MmProbeAndLockSelectedPages( + IN OUT PMDL MemoryDescriptorList, + IN LARGE_INTEGER PageList[], + IN KPROCESSOR_MODE AccessMode, + IN LOCK_OPERATION Operation + ); + +NTSTATUS +STDCALL +MmProtectMdlSystemAddress ( + IN PMDL MemoryDescriptorList, + IN ULONG NewProtect + ); + + /* * FUNCTION: Returns an estimate of the amount of memory in the system * RETURNS: Either MmSmallSystem, MmMediumSystem or MmLargeSystem @@ -467,6 +603,13 @@ MmQuerySystemSize ( VOID ); +NTSTATUS +STDCALL +MmRemovePhysicalMemory ( + IN PPHYSICAL_ADDRESS StartAddress, + IN OUT PLARGE_INTEGER NumberOfBytes + ); + /* * FUNCTION: Resets the pageable status of a driver's sections to their * compile time settings @@ -517,6 +660,13 @@ MmSizeOfMdl ( PVOID Base, ULONG Length ); + +ULONG +STDCALL +MmTrimAllSystemPagableMemory ( + IN ULONG PurgeTransitionList + ); + /* * FUNCTION: Unlocks the physical pages described by a given MDL * ARGUMENTS: @@ -552,6 +702,13 @@ MmUnmapLockedPages ( ); VOID STDCALL +MmUnmapReservedMapping ( + IN PVOID BaseAddress, + IN ULONG PoolTag, + IN PMDL MemoryDescriptorList + ); +VOID +STDCALL MmUnmapVideoDisplay ( IN PVOID BaseAddress, IN ULONG NumberOfBytes @@ -561,6 +718,11 @@ STDCALL MmUnmapViewInSystemSpace ( IN PVOID MappedBase ); +NTSTATUS +STDCALL +MmUnmapViewInSessionSpace ( + IN PVOID MappedBase + ); #if 0 NTSTATUS STDCALL diff --git a/reactos/include/ddk/mmtypes.h b/reactos/include/ddk/mmtypes.h index d403ca7ec93..4508ad169b1 100644 --- a/reactos/include/ddk/mmtypes.h +++ b/reactos/include/ddk/mmtypes.h @@ -1,4 +1,4 @@ -/* $Id: mmtypes.h,v 1.18 2003/12/31 05:33:03 jfilby Exp $ */ +/* $Id: mmtypes.h,v 1.19 2004/07/17 03:04:45 ion Exp $ */ #ifndef _INCLUDE_DDK_MMTYPES_H #define _INCLUDE_DDK_MMTYPES_H @@ -6,7 +6,6 @@ #include #include - /* * FUNCTION: Determines if the given virtual address is page aligned */ @@ -65,6 +64,24 @@ typedef struct _MDL ULONG ByteOffset; } MDL, *PMDL; +typedef struct _PHYSICAL_MEMORY_RANGE { + PHYSICAL_ADDRESS BaseAddress; + LARGE_INTEGER NumberOfBytes; +} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE; + +// read file scatter / write file scatter +typedef union _FILE_SEGMENT_ELEMENT { + PVOID Buffer; + ULONG Alignment; +}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT; + +typedef struct _READ_LIST { + struct FILE_OBJECT* FileObject; + ULONG NumberOfEntries; + ULONG IsImage; + FILE_SEGMENT_ELEMENT List[]; +} READ_LIST, *PREAD_LIST; + #define MmSmallSystem (0) #define MmMediumSystem (1) #define MmLargeSystem (2) diff --git a/reactos/include/ntos/mm.h b/reactos/include/ntos/mm.h index 77f7970fe1a..ac361213a8e 100644 --- a/reactos/include/ntos/mm.h +++ b/reactos/include/ntos/mm.h @@ -54,6 +54,7 @@ #define FILE_MAP_READ (4) #define FILE_MAP_WRITE (2) #define FILE_MAP_COPY (1) + #else /* __USE_W32API */ #include