mm.h
来自「一个类似windows」· C头文件 代码 · 共 1,408 行 · 第 1/2 页
H
1,408 行
VOID
NTAPI
MmFreeVirtualMemory(
struct _EPROCESS* Process,
PMEMORY_AREA MemoryArea
);
NTSTATUS
NTAPI
MmProtectAnonMem(
PMADDRESS_SPACE AddressSpace,
PMEMORY_AREA MemoryArea,
PVOID BaseAddress,
ULONG Length,
ULONG Protect,
PULONG OldProtect
);
NTSTATUS
NTAPI
MmWritePageVirtualMemory(
PMADDRESS_SPACE AddressSpace,
PMEMORY_AREA MArea,
PVOID Address,
PMM_PAGEOP PageOp
);
/* kmap.c ********************************************************************/
PVOID
NTAPI
ExAllocatePage(VOID);
VOID
NTAPI
ExUnmapPage(PVOID Addr);
PVOID
NTAPI
ExAllocatePageWithPhysPage(PFN_TYPE Page);
NTSTATUS
NTAPI
MiCopyFromUserPage(
PFN_TYPE Page,
PVOID SourceAddress
);
NTSTATUS
NTAPI
MiZeroPage(PFN_TYPE Page);
/* memsafe.s *****************************************************************/
PVOID
FASTCALL
MmSafeReadPtr(PVOID Source);
/* pageop.c ******************************************************************/
VOID
NTAPI
MmReleasePageOp(PMM_PAGEOP PageOp);
PMM_PAGEOP
NTAPI
MmGetPageOp(
PMEMORY_AREA MArea,
HANDLE Pid,
PVOID Address,
PMM_SECTION_SEGMENT Segment,
ULONG Offset,
ULONG OpType,
BOOLEAN First
);
PMM_PAGEOP
NTAPI
MmCheckForPageOp(
PMEMORY_AREA MArea,
HANDLE Pid,
PVOID Address,
PMM_SECTION_SEGMENT Segment,
ULONG Offset
);
VOID
NTAPI
MmInitializePageOp(VOID);
/* process.c *****************************************************************/
PVOID
STDCALL
MmCreateKernelStack(BOOLEAN GuiStack);
VOID
STDCALL
MmDeleteKernelStack(PVOID Stack,
BOOLEAN GuiStack);
/* balace.c ******************************************************************/
VOID
NTAPI
MmInitializeMemoryConsumer(
ULONG Consumer,
NTSTATUS (*Trim)(ULONG Target, ULONG Priority, PULONG NrFreed)
);
VOID
NTAPI
MmInitializeBalancer(
ULONG NrAvailablePages,
ULONG NrSystemPages
);
NTSTATUS
NTAPI
MmReleasePageMemoryConsumer(
ULONG Consumer,
PFN_TYPE Page
);
NTSTATUS
NTAPI
MmRequestPageMemoryConsumer(
ULONG Consumer,
BOOLEAN MyWait,
PPFN_TYPE AllocatedPage
);
VOID
NTAPI
MiInitBalancerThread(VOID);
VOID
NTAPI
MmRebalanceMemoryConsumers(VOID);
/* rmap.c **************************************************************/
VOID
NTAPI
MmSetRmapListHeadPage(
PFN_TYPE Page,
struct _MM_RMAP_ENTRY* ListHead
);
struct _MM_RMAP_ENTRY*
NTAPI
MmGetRmapListHeadPage(PFN_TYPE Page);
VOID
NTAPI
MmInsertRmap(
PFN_TYPE Page,
PEPROCESS Process,
PVOID Address
);
VOID
NTAPI
MmDeleteAllRmaps(
PFN_TYPE Page,
PVOID Context,
VOID (*DeleteMapping)(PVOID Context, PEPROCESS Process, PVOID Address)
);
VOID
NTAPI
MmDeleteRmap(
PFN_TYPE Page,
PEPROCESS Process,
PVOID Address
);
VOID
NTAPI
MmInitializeRmapList(VOID);
VOID
NTAPI
MmSetCleanAllRmaps(PFN_TYPE Page);
VOID
NTAPI
MmSetDirtyAllRmaps(PFN_TYPE Page);
BOOLEAN
NTAPI
MmIsDirtyPageRmap(PFN_TYPE Page);
NTSTATUS
NTAPI
MmWritePagePhysicalAddress(PFN_TYPE Page);
NTSTATUS
NTAPI
MmPageOutPhysicalAddress(PFN_TYPE Page);
/* freelist.c **********************************************************/
PFN_TYPE
NTAPI
MmGetLRUNextUserPage(PFN_TYPE PreviousPage);
PFN_TYPE
NTAPI
MmGetLRUFirstUserPage(VOID);
VOID
NTAPI
MmSetLRULastPage(PFN_TYPE Page);
VOID
NTAPI
MmLockPage(PFN_TYPE Page);
VOID
NTAPI
MmLockPageUnsafe(PFN_TYPE Page);
VOID
NTAPI
MmUnlockPage(PFN_TYPE Page);
ULONG
NTAPI
MmGetLockCountPage(PFN_TYPE Page);
PVOID
NTAPI
MmInitializePageList(
ULONG_PTR FirstPhysKernelAddress,
ULONG_PTR LastPhysKernelAddress,
ULONG MemorySizeInPages,
ULONG_PTR LastKernelBase,
PADDRESS_RANGE BIOSMemoryMap,
ULONG AddressRangeCount
);
PFN_TYPE
NTAPI
MmGetContinuousPages(
ULONG NumberOfBytes,
PHYSICAL_ADDRESS LowestAcceptableAddress,
PHYSICAL_ADDRESS HighestAcceptableAddress,
PHYSICAL_ADDRESS BoundaryAddressMultiple
);
NTSTATUS
NTAPI
MmInitZeroPageThread(VOID);
/* i386/page.c *********************************************************/
PVOID
NTAPI
MmCreateHyperspaceMapping(PFN_TYPE Page);
PFN_TYPE
NTAPI
MmChangeHyperspaceMapping(
PVOID Address,
PFN_TYPE Page
);
PFN_TYPE
NTAPI
MmDeleteHyperspaceMapping(PVOID Address);
NTSTATUS
NTAPI
MmCreateVirtualMappingForKernel(
PVOID Address,
ULONG flProtect,
PPFN_TYPE Pages,
ULONG PageCount
);
NTSTATUS
NTAPI
MmCommitPagedPoolAddress(
PVOID Address,
BOOLEAN Locked
);
NTSTATUS
NTAPI
MmCreateVirtualMapping(
struct _EPROCESS* Process,
PVOID Address,
ULONG flProtect,
PPFN_TYPE Pages,
ULONG PageCount
);
NTSTATUS
NTAPI
MmCreateVirtualMappingUnsafe(
struct _EPROCESS* Process,
PVOID Address,
ULONG flProtect,
PPFN_TYPE Pages,
ULONG PageCount
);
ULONG
NTAPI
MmGetPageProtect(
struct _EPROCESS* Process,
PVOID Address);
VOID
NTAPI
MmSetPageProtect(
struct _EPROCESS* Process,
PVOID Address,
ULONG flProtect
);
BOOLEAN
NTAPI
MmIsPagePresent(
struct _EPROCESS* Process,
PVOID Address
);
VOID
NTAPI
MmInitGlobalKernelPageDirectory(VOID);
VOID
NTAPI
MmDisableVirtualMapping(
PEPROCESS Process,
PVOID Address,
BOOLEAN* WasDirty,
PPFN_TYPE Page
);
VOID
NTAPI
MmEnableVirtualMapping(
PEPROCESS Process,
PVOID Address
);
VOID
NTAPI
MmRawDeleteVirtualMapping(PVOID Address);
VOID
NTAPI
MmDeletePageFileMapping(
PEPROCESS Process,
PVOID Address,
SWAPENTRY* SwapEntry
);
NTSTATUS
NTAPI
MmCreatePageFileMapping(
PEPROCESS Process,
PVOID Address,
SWAPENTRY SwapEntry
);
BOOLEAN
NTAPI
MmIsPageSwapEntry(
PEPROCESS Process,
PVOID Address
);
VOID
NTAPI
MmTransferOwnershipPage(
PFN_TYPE Page,
ULONG NewConsumer
);
VOID
NTAPI
MmSetDirtyPage(
PEPROCESS Process,
PVOID Address
);
PFN_TYPE
NTAPI
MmAllocPage(
ULONG Consumer,
SWAPENTRY SavedSwapEntry
);
LONG
NTAPI
MmAllocPagesSpecifyRange(
ULONG Consumer,
PHYSICAL_ADDRESS LowestAddress,
PHYSICAL_ADDRESS HighestAddress,
ULONG NumberOfPages,
PPFN_TYPE Pages
);
VOID
NTAPI
MmDereferencePage(PFN_TYPE Page);
VOID
NTAPI
MmReferencePage(PFN_TYPE Page);
VOID
NTAPI
MmReferencePageUnsafe(PFN_TYPE Page);
BOOLEAN
NTAPI
MmIsAccessedAndResetAccessPage(
PEPROCESS Process,
PVOID Address
);
ULONG
NTAPI
MmGetReferenceCountPage(PFN_TYPE Page);
BOOLEAN
NTAPI
MmIsUsablePage(PFN_TYPE Page);
VOID
NTAPI
MmSetFlagsPage(
PFN_TYPE Page,
ULONG Flags);
ULONG
NTAPI
MmGetFlagsPage(PFN_TYPE Page);
VOID
NTAPI
MmSetSavedSwapEntryPage(
PFN_TYPE Page,
SWAPENTRY SavedSwapEntry);
SWAPENTRY
NTAPI
MmGetSavedSwapEntryPage(PFN_TYPE Page);
VOID
NTAPI
MmSetCleanPage(
PEPROCESS Process,
PVOID Address
);
NTSTATUS
NTAPI
MmCreatePageTable(PVOID PAddress);
VOID
NTAPI
MmDeletePageTable(
PEPROCESS Process,
PVOID Address
);
PFN_TYPE
NTAPI
MmGetPfnForProcess(
PEPROCESS Process,
PVOID Address
);
NTSTATUS
STDCALL
MmCopyMmInfo(
PEPROCESS Src,
PEPROCESS Dest,
PPHYSICAL_ADDRESS DirectoryTableBase
);
NTSTATUS
NTAPI
MmReleaseMmInfo(PEPROCESS Process);
NTSTATUS
NTAPI
Mmi386ReleaseMmInfo(PEPROCESS Process);
VOID
NTAPI
MmDeleteVirtualMapping(
PEPROCESS Process,
PVOID Address,
BOOLEAN FreePage,
BOOLEAN* WasDirty,
PPFN_TYPE Page
);
BOOLEAN
NTAPI
MmIsDirtyPage(
PEPROCESS Process,
PVOID Address
);
VOID
NTAPI
MmMarkPageMapped(PFN_TYPE Page);
VOID
NTAPI
MmMarkPageUnmapped(PFN_TYPE Page);
VOID
NTAPI
MmUpdatePageDir(
PEPROCESS Process,
PVOID Address,
ULONG Size
);
VOID
NTAPI
MiInitPageDirectoryMap(VOID);
ULONG
NTAPI
MiGetUserPageDirectoryCount(VOID);
/* wset.c ********************************************************************/
NTSTATUS
MmTrimUserMemory(
ULONG Target,
ULONG Priority,
PULONG NrFreedPages
);
/* region.c ************************************************************/
NTSTATUS
NTAPI
MmAlterRegion(
PMADDRESS_SPACE AddressSpace,
PVOID BaseAddress,
PLIST_ENTRY RegionListHead,
PVOID StartAddress,
ULONG Length,
ULONG NewType,
ULONG NewProtect,
PMM_ALTER_REGION_FUNC AlterFunc
);
VOID
NTAPI
MmInitializeRegion(
PLIST_ENTRY RegionListHead,
SIZE_T Length,
ULONG Type,
ULONG Protect
);
PMM_REGION
NTAPI
MmFindRegion(
PVOID BaseAddress,
PLIST_ENTRY RegionListHead,
PVOID Address,
PVOID* RegionBaseAddress
);
/* section.c *****************************************************************/
PVOID
STDCALL
MmAllocateSection(
IN ULONG Length,
PVOID BaseAddress
);
NTSTATUS
STDCALL
MmQuerySectionView(
PMEMORY_AREA MemoryArea,
PVOID Address,
PMEMORY_BASIC_INFORMATION Info,
PULONG ResultLength
);
NTSTATUS
NTAPI
MmMapViewOfSection(
IN PVOID SectionObject,
IN PEPROCESS Process,
IN OUT PVOID *BaseAddress,
IN ULONG ZeroBits,
IN ULONG CommitSize,
IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
IN OUT PULONG ViewSize,
IN SECTION_INHERIT InheritDisposition,
IN ULONG AllocationType,
IN ULONG Protect
);
NTSTATUS
NTAPI
MmProtectSectionView(
PMADDRESS_SPACE AddressSpace,
PMEMORY_AREA MemoryArea,
PVOID BaseAddress,
ULONG Length,
ULONG Protect,
PULONG OldProtect
);
NTSTATUS
NTAPI
MmWritePageSectionView(
PMADDRESS_SPACE AddressSpace,
PMEMORY_AREA MArea,
PVOID Address,
PMM_PAGEOP PageOp
);
NTSTATUS
NTAPI
MmInitSectionImplementation(VOID);
NTSTATUS
NTAPI
MmNotPresentFaultSectionView(
PMADDRESS_SPACE AddressSpace,
MEMORY_AREA* MemoryArea,
PVOID Address,
BOOLEAN Locked
);
NTSTATUS
NTAPI
MmPageOutSectionView(
PMADDRESS_SPACE AddressSpace,
PMEMORY_AREA MemoryArea,
PVOID Address,
struct _MM_PAGEOP *PageOp
);
NTSTATUS
NTAPI
MmCreatePhysicalMemorySection(VOID);
NTSTATUS
NTAPI
MmAccessFaultSectionView(
PMADDRESS_SPACE AddressSpace,
MEMORY_AREA* MemoryArea,
PVOID Address,
BOOLEAN Locked
);
VOID
NTAPI
MmFreeSectionSegments(PFILE_OBJECT FileObject);
/* mpw.c *********************************************************************/
NTSTATUS
NTAPI
MmInitMpwThread(VOID);
/* pager.c *******************************************************************/
BOOLEAN
NTAPI
MiIsPagerThread(VOID);
VOID
NTAPI
MiStartPagerThread(VOID);
VOID
NTAPI
MiStopPagerThread(VOID);
NTSTATUS
FASTCALL
MiQueryVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID Address,
IN MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass,
OUT PVOID VirtualMemoryInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?