Added Mm Prototypes

svn path=/trunk/; revision=10170
This commit is contained in:
Alex Ionescu 2004-07-17 03:04:45 +00:00
parent a0e9802e90
commit e7874284d0
3 changed files with 183 additions and 3 deletions

View file

@ -1,6 +1,6 @@
#ifndef _INCLUDE_DDK_MMFUNCS_H #ifndef _INCLUDE_DDK_MMFUNCS_H
#define _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 ******************************************************/ /* 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_ALIGN(va) ( (PVOID) (((ULONG)(va)) & (~(PAGE_SIZE-1))) )
#define PAGE_BASE(va) PAGE_ALIGN(va) #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 DWORD
STDCALL STDCALL
@ -73,6 +87,14 @@ MmAdjustWorkingSetSize (
DWORD Unknown1, DWORD Unknown1,
DWORD Unknown2 DWORD Unknown2
); );
NTSTATUS
STDCALL
MmAdvanceMdl (
IN PMDL Mdl,
IN ULONG NumberOfBytes
);
PVOID PVOID
STDCALL STDCALL
MmAllocateContiguousMemory ( MmAllocateContiguousMemory (
@ -96,6 +118,13 @@ MmAllocateContiguousAlignedMemory(IN ULONG NumberOfBytes,
IN MEMORY_CACHING_TYPE CacheType OPTIONAL, IN MEMORY_CACHING_TYPE CacheType OPTIONAL,
IN ULONG Alignment); IN ULONG Alignment);
PVOID
STDCALL
MmAllocateMappingAddress (
IN SIZE_T NumberOfBytes,
IN ULONG PoolTag
);
PVOID PVOID
STDCALL STDCALL
MmAllocateNonCachedMemory ( MmAllocateNonCachedMemory (
@ -181,6 +210,14 @@ MmFreeContiguousMemorySpecifyCache(IN PVOID BaseAddress,
IN ULONG NumberOfBytes, IN ULONG NumberOfBytes,
IN MEMORY_CACHING_TYPE CacheType IN MEMORY_CACHING_TYPE CacheType
); );
VOID
STDCALL
MmFreeMappingAddress (
IN PVOID BaseAddress,
IN ULONG PoolTag
);
VOID VOID
STDCALL STDCALL
MmFreeNonCachedMemory ( MmFreeNonCachedMemory (
@ -228,6 +265,12 @@ MmGetPhysicalAddress (
IN PVOID BaseAddress IN PVOID BaseAddress
); );
PPHYSICAL_MEMORY_RANGE
STDCALL
MmGetPhysicalMemoryRanges (
VOID
);
#define MmGetProcedureAddress(Address) (Address) #define MmGetProcedureAddress(Address) (Address)
/* /*
@ -249,6 +292,18 @@ MmGetPhysicalAddress (
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL)) ? \ (((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL)) ? \
((Mdl)->MappedSystemVa):(MmMapLockedPages((Mdl),KernelMode))) ((Mdl)->MappedSystemVa):(MmMapLockedPages((Mdl),KernelMode)))
PVOID
STDCALL
MmGetSystemRoutineAddress (
IN PUNICODE_STRING SystemRoutineName
);
PVOID
STDCALL
MmGetVirtualForPhysical (
IN PHYSICAL_ADDRESS PhysicalAddress
);
NTSTATUS NTSTATUS
STDCALL STDCALL
MmGrowKernelStack ( MmGrowKernelStack (
@ -294,6 +349,11 @@ STDCALL
MmIsAddressValid ( MmIsAddressValid (
IN PVOID VirtualAddress IN PVOID VirtualAddress
); );
ULONG
STDCALL
MmIsDriverVerifying (
IN struct _DRIVER_OBJECT *DriverObject
);
BOOLEAN BOOLEAN
STDCALL STDCALL
MmIsNonPagedSystemAddressValid ( MmIsNonPagedSystemAddressValid (
@ -315,6 +375,13 @@ STDCALL
MmIsThisAnNtAsSystem ( MmIsThisAnNtAsSystem (
VOID VOID
); );
NTSTATUS
STDCALL
MmIsVerifierEnabled (
OUT PULONG VerifierFlags
);
/* /*
* FUNCTION: Locks a section of the driver's code into memory * FUNCTION: Locks a section of the driver's code into memory
* ARGUMENTS: * ARGUMENTS:
@ -378,6 +445,21 @@ MmMapMemoryDumpMdl (
); );
PVOID PVOID
STDCALL 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 ( MmMapVideoDisplay (
IN PHYSICAL_ADDRESS PhysicalAddress, IN PHYSICAL_ADDRESS PhysicalAddress,
IN ULONG NumberOfBytes, IN ULONG NumberOfBytes,
@ -385,11 +467,19 @@ MmMapVideoDisplay (
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
MmMapViewInSessionSpace (
IN PVOID Section,
OUT PVOID *MappedBase,
IN OUT PSIZE_T ViewSize
);
NTSTATUS
STDCALL
MmMapViewInSystemSpace ( MmMapViewInSystemSpace (
IN PVOID SectionObject, IN PVOID SectionObject,
OUT PVOID * MappedBase, OUT PVOID * MappedBase,
IN PULONG ViewSize IN PULONG ViewSize
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
MmMapViewOfSection ( MmMapViewOfSection (
@ -404,6 +494,19 @@ MmMapViewOfSection (
IN ULONG AllocationType, IN ULONG AllocationType,
IN ULONG Protect 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 * FUNCTION: Makes the whole driver pageable
@ -416,6 +519,13 @@ MmPageEntireDriver (
PVOID AddressWithinSection PVOID AddressWithinSection
); );
NTSTATUS
STDCALL
MmPrefetchPages (
IN ULONG NumberOfLists,
IN PREAD_LIST *ReadLists
);
/* /*
* VOID * VOID
* MmPrepareMdlForReuse ( * MmPrepareMdlForReuse (
@ -457,6 +567,32 @@ MmProbeAndLockPages (
LOCK_OPERATION Operation 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 * FUNCTION: Returns an estimate of the amount of memory in the system
* RETURNS: Either MmSmallSystem, MmMediumSystem or MmLargeSystem * RETURNS: Either MmSmallSystem, MmMediumSystem or MmLargeSystem
@ -467,6 +603,13 @@ MmQuerySystemSize (
VOID 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 * FUNCTION: Resets the pageable status of a driver's sections to their
* compile time settings * compile time settings
@ -517,6 +660,13 @@ MmSizeOfMdl (
PVOID Base, PVOID Base,
ULONG Length ULONG Length
); );
ULONG
STDCALL
MmTrimAllSystemPagableMemory (
IN ULONG PurgeTransitionList
);
/* /*
* FUNCTION: Unlocks the physical pages described by a given MDL * FUNCTION: Unlocks the physical pages described by a given MDL
* ARGUMENTS: * ARGUMENTS:
@ -552,6 +702,13 @@ MmUnmapLockedPages (
); );
VOID VOID
STDCALL STDCALL
MmUnmapReservedMapping (
IN PVOID BaseAddress,
IN ULONG PoolTag,
IN PMDL MemoryDescriptorList
);
VOID
STDCALL
MmUnmapVideoDisplay ( MmUnmapVideoDisplay (
IN PVOID BaseAddress, IN PVOID BaseAddress,
IN ULONG NumberOfBytes IN ULONG NumberOfBytes
@ -561,6 +718,11 @@ STDCALL
MmUnmapViewInSystemSpace ( MmUnmapViewInSystemSpace (
IN PVOID MappedBase IN PVOID MappedBase
); );
NTSTATUS
STDCALL
MmUnmapViewInSessionSpace (
IN PVOID MappedBase
);
#if 0 #if 0
NTSTATUS NTSTATUS
STDCALL STDCALL

View file

@ -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 #ifndef _INCLUDE_DDK_MMTYPES_H
#define _INCLUDE_DDK_MMTYPES_H #define _INCLUDE_DDK_MMTYPES_H
@ -6,7 +6,6 @@
#include <ddk/i386/pagesize.h> #include <ddk/i386/pagesize.h>
#include <ntos/mm.h> #include <ntos/mm.h>
/* /*
* FUNCTION: Determines if the given virtual address is page aligned * FUNCTION: Determines if the given virtual address is page aligned
*/ */
@ -65,6 +64,24 @@ typedef struct _MDL
ULONG ByteOffset; ULONG ByteOffset;
} MDL, *PMDL; } 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 MmSmallSystem (0)
#define MmMediumSystem (1) #define MmMediumSystem (1)
#define MmLargeSystem (2) #define MmLargeSystem (2)

View file

@ -54,6 +54,7 @@
#define FILE_MAP_READ (4) #define FILE_MAP_READ (4)
#define FILE_MAP_WRITE (2) #define FILE_MAP_WRITE (2)
#define FILE_MAP_COPY (1) #define FILE_MAP_COPY (1)
#else /* __USE_W32API */ #else /* __USE_W32API */
#include <ddk/ntifs.h> #include <ddk/ntifs.h>