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
#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

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
#define _INCLUDE_DDK_MMTYPES_H
@ -6,7 +6,6 @@
#include <ddk/i386/pagesize.h>
#include <ntos/mm.h>
/*
* 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)

View file

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