15#define MI_LOWEST_VAD_ADDRESS (PVOID)MM_LOWEST_USER_ADDRESS
19#define _1MB (1024 * _1KB)
20#define _1GB (1024 * _1MB)
23#define _64K (64 * _1KB)
26#define PT_SIZE (PTE_PER_PAGE * sizeof(MMPTE))
29#define PD_SIZE (PDE_PER_PAGE * sizeof(MMPDE))
32#define SYSTEM_PD_SIZE (PPE_PER_PAGE * PD_SIZE)
43#define MM_ZERO_ACCESS 0
46#define MM_EXECUTE_READ 3
49#define MM_EXECUTE_READWRITE 6
50#define MM_EXECUTE_WRITECOPY 7
51#define MM_PROTECT_ACCESS 7
56#define MM_NOCACHE 0x08
57#define MM_GUARDPAGE 0x10
58#define MM_WRITECOMBINE 0x18
59#define MM_PROTECT_SPECIAL 0x18
64#define MM_DECOMMIT (MM_ZERO_ACCESS | MM_GUARDPAGE)
65#define MM_NOACCESS (MM_ZERO_ACCESS | MM_WRITECOMBINE)
66#define MM_OUTSWAPPED_KSTACK (MM_EXECUTE_WRITECOPY | MM_WRITECOMBINE)
67#define MM_INVALID_PROTECTION 0xFFFFFFFF
88#define PTE_EXECUTE_READ 0
89#define PTE_READWRITE 0x2
90#define PTE_WRITECOPY 0x200
91#define PTE_EXECUTE_READWRITE 0x2
92#define PTE_EXECUTE_WRITECOPY 0x200
93#define PTE_PROTOTYPE 0x400
99#define PTE_ACCESSED 0x20
100#define PTE_DIRTY 0x40
105#define PTE_ENABLE_CACHE 0
106#define PTE_DISABLE_CACHE 0x10
107#define PTE_WRITECOMBINED_CACHE 0x10
108#define PTE_PROTECT_MASK 0x612
109#elif defined(_M_AMD64)
113#define PTE_READONLY 0x8000000000000000ULL
114#define PTE_EXECUTE 0x0000000000000000ULL
115#define PTE_EXECUTE_READ PTE_EXECUTE
116#define PTE_READWRITE 0x8000000000000002ULL
117#define PTE_WRITECOPY 0x8000000000000200ULL
118#define PTE_EXECUTE_READWRITE 0x0000000000000002ULL
119#define PTE_EXECUTE_WRITECOPY 0x0000000000000200ULL
120#define PTE_PROTOTYPE 0x0000000000000400ULL
125#define PTE_VALID 0x0000000000000001ULL
126#define PTE_ACCESSED 0x0000000000000020ULL
127#define PTE_DIRTY 0x0000000000000040ULL
132#define PTE_ENABLE_CACHE 0x0000000000000000ULL
133#define PTE_DISABLE_CACHE 0x0000000000000010ULL
134#define PTE_WRITECOMBINED_CACHE 0x0000000000000010ULL
135#define PTE_PROTECT_MASK 0x8000000000000612ULL
137#define PTE_READONLY 0x200
139#define PTE_EXECUTE_READ 0
140#define PTE_READWRITE 0
141#define PTE_WRITECOPY 0
142#define PTE_EXECUTE_READWRITE 0
143#define PTE_EXECUTE_WRITECOPY 0
144#define PTE_PROTOTYPE 0x400
149#define PTE_ENABLE_CACHE 0
150#define PTE_DISABLE_CACHE 0x10
151#define PTE_WRITECOMBINED_CACHE 0x10
152#define PTE_PROTECT_MASK 0x610
154#error Define these please!
160#define IMAGE_SCN_PROTECTION_MASK (IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_EXECUTE)
168#define MI_IS_SESSION_IMAGE_ADDRESS(Address) \
169 (((Address) >= MiSessionImageStart) && ((Address) < MiSessionImageEnd))
171#define MI_IS_SESSION_ADDRESS(Address) \
172 (((Address) >= MmSessionBase) && ((Address) < MiSessionSpaceEnd))
174#define MI_IS_SESSION_PTE(Pte) \
175 ((((PMMPTE)Pte) >= MiSessionBasePte) && (((PMMPTE)Pte) < MiSessionLastPte))
177#define MI_IS_PAGE_TABLE_ADDRESS(Address) \
178 (((PVOID)(Address) >= (PVOID)PTE_BASE) && ((PVOID)(Address) <= (PVOID)PTE_TOP))
180#define MI_IS_SYSTEM_PAGE_TABLE_ADDRESS(Address) \
181 (((Address) >= (PVOID)MiAddressToPte(MmSystemRangeStart)) && ((Address) <= (PVOID)PTE_TOP))
183#define MI_IS_PAGE_TABLE_OR_HYPER_ADDRESS(Address) \
184 (((PVOID)(Address) >= (PVOID)PTE_BASE) && ((PVOID)(Address) <= (PVOID)MmHyperSpaceEnd))
189#define MI_MAKE_SOFTWARE_PTE(p, x) ((p)->u.Long = (x << MM_PTE_SOFTWARE_PROTECTION_BITS))
194#define MI_SET_PFN_DELETED(x) ((x)->PteAddress = (PMMPTE)((ULONG_PTR)(x)->PteAddress | 1))
195#define MI_IS_PFN_DELETED(x) ((ULONG_PTR)((x)->PteAddress) & 1)
200#define MM_SYSLDR_NO_IMPORTS ((PVOID)(ULONG_PTR)-2)
201#define MM_SYSLDR_BOOT_LOADED ((PVOID)(ULONG_PTR)-1)
202#define MM_SYSLDR_SINGLE_ENTRY 0x1
207#define MI_INITIAL_SESSION_IDS 64
209#if defined(_M_IX86) || defined(_M_ARM)
213#define LIST_HEAD 0xFFFFFFFF
220#define COLORED_LIST_HEAD ((1 << 25) - 1)
221#elif defined(_M_AMD64)
222#define LIST_HEAD 0xFFFFFFFFFFFFFFFFLL
223#define COLORED_LIST_HEAD ((1ULL << 57) - 1)
225#error Define these please!
231#define MI_GET_PAGE_COLOR(x) ((x) & MmSecondaryColorMask)
232#define MI_GET_NEXT_COLOR() (MI_GET_PAGE_COLOR(++MmSystemPageColor))
233#define MI_GET_NEXT_PROCESS_COLOR(x) (MI_GET_PAGE_COLOR(++(x)->NextPageColor))
239#define MI_PTE_LOOKUP_NEEDED 0xffffffffULL
241#define MI_PTE_LOOKUP_NEEDED 0xFFFFF
247#define MI_SESSION_DATA_PAGES_MAXIMUM (MM_ALLOCATION_GRANULARITY / PAGE_SIZE)
248#define MI_SESSION_TAG_PAGES_MAXIMUM (MM_ALLOCATION_GRANULARITY / PAGE_SIZE)
253#define MM_READ_WRITE_ALLOWED 11
254#define MM_READ_ONLY_ALLOWED 10
255#define MM_NO_ACCESS_ALLOWED 01
256#define MM_DELETE_CHECK 85
261#define MI_SYSTEM_VIEW_BUCKET_SIZE _64K
267#define POOL_BLOCK_SIZE 16
269#define POOL_BLOCK_SIZE 8
271#define POOL_LISTS_PER_PAGE (PAGE_SIZE / POOL_BLOCK_SIZE)
272#define BASE_POOL_TYPE_MASK 1
273#define POOL_MAX_ALLOC (PAGE_SIZE - (sizeof(POOL_HEADER) + POOL_BLOCK_SIZE))
278#define POOL_FLAG_CHECK_TIMERS 0x1
279#define POOL_FLAG_CHECK_WORKERS 0x2
280#define POOL_FLAG_CHECK_RESOURCES 0x4
281#define POOL_FLAG_VERIFIER 0x8
282#define POOL_FLAG_CHECK_DEADLOCK 0x10
283#define POOL_FLAG_SPECIAL_POOL 0x20
284#define POOL_FLAG_DBGPRINT_ON_FAILURE 0x40
285#define POOL_FLAG_CRASH_ON_FAILURE 0x80
290#define POOL_CORRUPTED_LIST 3
291#define POOL_SIZE_OR_INDEX_MISMATCH 5
292#define POOL_ENTRIES_NOT_ALIGNED_PREVIOUS 6
293#define POOL_HEADER_NOT_ALIGNED 7
294#define POOL_HEADER_IS_ZERO 8
295#define POOL_ENTRIES_NOT_ALIGNED_NEXT 9
296#define POOL_ENTRY_NOT_FOUND 10
301#define POOL_ENTRY_CORRUPTED 1
302#define POOL_ENTRY_ALREADY_FREE 6
303#define POOL_ENTRY_NOT_ALLOCATED 7
304#define POOL_ALLOC_IRQL_INVALID 8
305#define POOL_FREE_IRQL_INVALID 9
306#define POOL_BILLED_PROCESS_INVALID 13
307#define POOL_HEADER_SIZE_INVALID 32
504#if defined (_M_AMD64)
509#if defined (_M_AMD64)
510 PMMPTE SpecialPoolFirstPte;
511 PMMPTE SpecialPoolLastPte;
512 PMMPTE NextPdeForSpecialPoolExpansion;
513 PMMPTE LastPdeForSpecialPoolExpansion;
750 MiIsUserPxe(PointerPte) ||
753 MiIsUserPpe(PointerPte) ||
791 NewPte->u.Hard.PageFrameNumber = PageFrameNumber;
795#ifdef _GLOBAL_PAGES_ARE_AWESOME_
797 NewPte->u.Hard.Global = 1;
799 NewPte->u.Hard.Valid = 1;
819 NewPte->u.Hard.PageFrameNumber = PageFrameNumber;
842 NewPte->u.Hard.Valid =
TRUE;
843 NewPte->u.Hard.Owner =
TRUE;
844 NewPte->u.Hard.PageFrameNumber = PageFrameNumber;
861 NewPte->u.Proto.Prototype = 1;
874 NewPte->u.Proto.ProtoAddressLow = (
Offset & 0x1FC) >> 2;
875 NewPte->u.Proto.ProtoAddressHigh = (
Offset & 0x3FFFFE00) >> 9;
890 NewPte->u.Subsect.Prototype = 1;
913 NewPte->u.Subsect.SubsectionAddressLow = (
Offset & 0x78) >> 3;
914 NewPte->u.Subsect.SubsectionAddressHigh = (
Offset & 0xFFFFF80) >> 7;
922 return ((PointerPte->
u.
Long & 0xFFFFFC01) != 0);
934 NewPte->u.Trans.Transition = 1;
935 NewPte->u.Trans.Protection = Protection;
936 NewPte->u.Trans.PageFrameNumber =
Page;
963 ASSERT(PointerPte->u.Hard.Valid == 0);
981 ASSERT(PointerPte->u.Hard.Valid == 1);
996 ASSERT(InvalidPte.u.Hard.Valid == 0);
997 ASSERT(InvalidPte.u.Long != 0);
998 *PointerPte = InvalidPte;
1009 ASSERT(PointerPte->u.Long != 0);
1010 PointerPte->u.Long = 0;
1022 ASSERT(PointerPde->u.Hard.Valid == 0);
1024 ASSERT(PointerPde->u.Hard.NoExecute == 0);
1039 ASSERT(InvalidPde.u.Hard.Valid == 0);
1040 ASSERT(InvalidPde.u.Long != 0);
1044 *PointerPde = InvalidPde;
1100 return Section->u.Flags.filler;
1103#define MI_IS_ROS_PFN(x) ((x)->u4.AweAllocation == TRUE)
1116 return (
Process->Vm.Flags.AcquiredUnsafe ==
TRUE);
1184 Process->Vm.Flags.AcquiredUnsafe = 1;
1249 Process->Vm.Flags.AcquiredUnsafe = 0;
1288 else if (WorkingSet->Flags.SessionSpace)
1330 else if (WorkingSet->Flags.SessionSpace)
1365 else if (WorkingSet->Flags.SessionSpace)
1404 else if (WorkingSet->Flags.SessionSpace)
1563 ProtoPte = Vad->FirstPrototypePte + (Vpn - Vad->StartingVpn);
1564 ASSERT(ProtoPte <= Vad->LastContiguousPte);
1588 ASSERT(Pfn1->u3.e2.ReferenceCount != 0);
1589 ASSERT(Pfn1->u2.ShareCount == 0);
1592 if (Pfn1->u3.e2.ReferenceCount == 1)
1598 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1599 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1602 DPRINT1(
"Not returning commit for prototype PTE\n");
1617 USHORT RefCount, OldRefCount;
1624 OldRefCount = Pfn1->u3.e2.ReferenceCount;
1625 ASSERT(OldRefCount != 0);
1628 if (OldRefCount == 1)
1631 ASSERT(Pfn1->u3.e2.ReferenceCount == 1);
1633 ASSERT(Pfn1->u2.ShareCount == 0);
1636 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1637 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1640 DPRINT1(
"Not returning commit for prototype PTE\n");
1655 }
while (OldRefCount != RefCount);
1662 if (Pfn1->u2.ShareCount >= 1)
1668 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1669 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1689 USHORT RefCount, OldRefCount;
1692 ASSERT(Pfn1->u3.e2.ReferenceCount != 0);
1706 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1707 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1710 DPRINT1(
"Not charging commit for prototype PTE\n");
1721 OldRefCount = Pfn1->u3.e2.ReferenceCount;
1722 ASSERT(OldRefCount != 0);
1723 ASSERT(OldRefCount < 2500);
1730 }
while (OldRefCount != RefCount);
1747 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1748 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1751 DPRINT1(
"Not charging commit for prototype PTE\n");
1759 if (NewRefCount == 2)
1762 if (Pfn1->u2.ShareCount)
1776 ASSERT(NewRefCount < 2500);
1792 ASSERT(Pfn1->u2.ShareCount == 0);
1796 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1797 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1800 DPRINT1(
"Not charging commit for prototype PTE\n");
1808 if (NewRefCount != 1)
1811 ASSERT(NewRefCount < 2500);
2331 IN PVOID PageTableVirtualAddress,
2406#if (_MI_PAGING_LEVELS == 2)
2409MiSynchronizeSystemPde(
PMMPDE PointerPde)
2437#if _MI_PAGING_LEVELS == 2
2535#if _MI_PAGING_LEVELS >= 3
2540#if _MI_PAGING_LEVELS == 4
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
HARDWARE_PTE_ARMV6 TempPte
HARDWARE_PDE_ARMV6 TempPde
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
#define PsGetCurrentThread()
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define KeGetCurrentIrql()
FORCEINLINE VOID ExAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock)
FORCEINLINE VOID ExAcquirePushLockShared(PEX_PUSH_LOCK PushLock)
FORCEINLINE VOID ExReleasePushLockShared(PEX_PUSH_LOCK PushLock)
FORCEINLINE BOOLEAN ExConvertPushLockSharedToExclusive(IN PEX_PUSH_LOCK PushLock)
FORCEINLINE VOID ExReleasePushLockExclusive(PEX_PUSH_LOCK PushLock)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
#define KeGetCurrentThread
#define InterlockedCompareExchange16
#define InterlockedDecrementSizeT(a)
#define InterlockedIncrement16
#define InterlockedIncrementSizeT(a)
#define KeLeaveGuardedRegion()
#define KeEnterGuardedRegion()
PMMVAD NTAPI MiLocateAddress(IN PVOID VirtualAddress)
FORCEINLINE VOID MI_MAKE_SUBSECTION_PTE(IN PMMPTE NewPte, IN PVOID Segment)
VOID NTAPI MiInitializeSystemPtes(IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE PoolType)
SIZE_T MmMinimumNonPagedPoolSize
BOOLEAN MmTrackLockedPages
PETHREAD MiExpansionLockOwner
ULONG MmMaximumNonPagedPoolPercent
FORCEINLINE KIRQL MiAcquireExpansionLock(VOID)
PMMPTE MmSharedUserDataPte
PFN_COUNT MiExpansionPoolPagesInitialCharge
VOID NTAPI MiDeleteVirtualAddresses(IN ULONG_PTR Va, IN ULONG_PTR EndingAddress, IN PMMVAD Vad)
KGUARDED_MUTEX MmSectionBasedMutex
NTSTATUS NTAPI MiQueryMemorySectionName(IN HANDLE ProcessHandle, IN PVOID BaseAddress, OUT PVOID MemoryInformation, IN SIZE_T MemoryInformationLength, OUT PSIZE_T ReturnLength)
PFN_NUMBER MiNumberOfFreePages
PVOID MmNonPagedSystemStart
VOID NTAPI MiInsertNode(IN PMM_AVL_TABLE Table, IN PMMADDRESS_NODE NewNode, PMMADDRESS_NODE Parent, TABLE_SEARCH_RESULT Result)
FORCEINLINE PMMPTE MI_GET_PROTOTYPE_PTE_FOR_VPN(IN PMMVAD Vad, IN ULONG_PTR Vpn)
FORCEINLINE BOOLEAN MM_ANY_WS_LOCK_HELD_EXCLUSIVE(_In_ PETHREAD Thread)
FORCEINLINE BOOLEAN MI_IS_PHYSICAL_ADDRESS(IN PVOID Address)
struct _POOL_TRACKER_TABLE POOL_TRACKER_TABLE
PMDL NTAPI MiAllocatePagesForMdl(IN PHYSICAL_ADDRESS LowAddress, IN PHYSICAL_ADDRESS HighAddress, IN PHYSICAL_ADDRESS SkipBytes, IN SIZE_T TotalBytes, IN MI_PFN_CACHE_ATTRIBUTE CacheAttribute, IN ULONG Flags)
FORCEINLINE VOID MiLockProcessWorkingSetShared(IN PEPROCESS Process, IN PETHREAD Thread)
PMMPTE MmSystemPtesStart[MaximumPtePoolTypes]
FORCEINLINE BOOLEAN MiIsMemoryTypeInvisible(TYPE_OF_MEMORY MemoryType)
FORCEINLINE VOID MiDeletePde(_In_ PMMPDE PointerPde, _In_ PEPROCESS CurrentProcess)
PMMPTE MmLastReservedMappingPte
PMEMORY_ALLOCATION_DESCRIPTOR MxFreeDescriptor
PFN_NUMBER NTAPI MiRemoveZeroPage(IN ULONG Color)
FORCEINLINE VOID MiLockWorkingSet(IN PETHREAD Thread, IN PMMSUPPORT WorkingSet)
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE_USER(IN PMMPTE NewPte, IN PMMPTE MappingPte, IN ULONG_PTR ProtectionMask, IN PFN_NUMBER PageFrameNumber)
struct _MMSESSION MMSESSION
struct _MM_SESSION_SPACE * PMM_SESSION_SPACE
PFN_NUMBER MmLowMemoryThreshold
ULONG MmVerifyDriverBufferType
VOID NTAPI MiInitializePfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
SIZE_T MmMinimumStackCommitInBytes
VOID NTAPI ExInitializePoolDescriptor(IN PPOOL_DESCRIPTOR PoolDescriptor, IN POOL_TYPE PoolType, IN ULONG PoolIndex, IN ULONG Threshold, IN PVOID PoolLock)
ULONG NTAPI MiGetPageProtection(IN PMMPTE PointerPte)
VOID NTAPI MiInsertBasedSection(IN PSECTION Section)
VOID NTAPI MiRemoveNode(IN PMMADDRESS_NODE Node, IN PMM_AVL_TABLE Table)
PMMPTE MmSystemPtesEnd[MaximumPtePoolTypes]
VOID NTAPI MiInitializePoolEvents(VOID)
FORCEINLINE VOID MiUnlockProcessWorkingSetForFault(IN PEPROCESS Process, IN PETHREAD Thread, OUT PBOOLEAN Safe, OUT PBOOLEAN Shared)
SLIST_HEADER MmDeadStackSListHead
MM_SYSTEMSIZE MmSystemSize
struct _MI_LARGE_PAGE_RANGES MI_LARGE_PAGE_RANGES
ULONG MmSecondaryColorMask
FORCEINLINE BOOLEAN MI_IS_WS_UNSAFE(IN PEPROCESS Process)
ULONG_PTR MmSubsectionBase
VOID NTAPI InitializePool(IN POOL_TYPE PoolType, IN ULONG Threshold)
VOID NTAPI MiDeletePte(IN PMMPTE PointerPte, IN PVOID VirtualAddress, IN PEPROCESS CurrentProcess, IN PMMPTE PrototypePte)
VOID NTAPI MiReleaseProcessReferenceToSessionDataPage(IN PMM_SESSION_SPACE SessionGlobal)
FORCEINLINE BOOLEAN MiIsRosSectionObject(IN PSECTION Section)
FORCEINLINE VOID MiLockProcessWorkingSetForFault(IN PEPROCESS Process, IN PETHREAD Thread, IN BOOLEAN Safe, IN BOOLEAN Shared)
struct _PHYSICAL_MEMORY_RUN * PPHYSICAL_MEMORY_RUN
VOID NTAPI MiUnlinkFreeOrZeroedPage(IN PMMPFN Entry)
MI_PFN_CACHE_ATTRIBUTE MiPlatformCacheAttributes[2][MmMaximumCacheType]
struct _MMCOLOR_TABLES MMCOLOR_TABLES
VOID NTAPI MiZeroPhysicalPage(IN PFN_NUMBER PageFrameIndex)
ULONG NTAPI MiMakeSystemAddressValidPfn(IN PVOID VirtualAddress, IN KIRQL OldIrql)
struct _MI_LARGE_PAGE_DRIVER_ENTRY MI_LARGE_PAGE_DRIVER_ENTRY
ULONG_PTR MxPfnAllocation
BOOLEAN NTAPI MiInitializeMemoryEvents(VOID)
FORCEINLINE BOOLEAN MI_IS_PROCESS_WORKING_SET(PMMSUPPORT WorkingSet)
#define POOL_LISTS_PER_PAGE
PFN_NUMBER MmMinimumFreePages
SIZE_T MmSizeOfNonPagedPoolInBytes
VOID NTAPI MiSessionAddProcess(IN PEPROCESS NewProcess)
PFN_NUMBER MiLowPagedPoolThreshold
MMPTE ValidKernelPteLocal
FORCEINLINE VOID MI_MAKE_PROTOTYPE_PTE(IN PMMPTE NewPte, IN PMMPTE PointerPte)
PMM_SESSION_SPACE MmSessionSpace
VOID NTAPI MiInitializeColorTables(VOID)
FORCEINLINE VOID MiReferenceUsedPageAndBumpLockCount(IN PMMPFN Pfn1)
struct _MI_LARGE_PAGE_RANGES * PMI_LARGE_PAGE_RANGES
PFN_NUMBER NTAPI MxGetNextPage(IN PFN_NUMBER PageCount)
NTSTATUS NTAPI MiFindEmptyAddressRangeDownBasedTree(IN SIZE_T Length, IN ULONG_PTR BoundaryAddress, IN ULONG_PTR Alignment, IN PMM_AVL_TABLE Table, OUT PULONG_PTR Base)
#define MI_IS_SESSION_ADDRESS(Address)
SIZE_T MmSessionImageSize
struct _PHYSICAL_MEMORY_DESCRIPTOR * PPHYSICAL_MEMORY_DESCRIPTOR
BOOLEAN MmProtectFreedNonPagedPool
BOOLEAN MmEnforceWriteProtection
ULONG MmVerifyDriverLevel
PMMPTE MiFirstReservedZeroingPte
PMMPTE MiSessionImagePteEnd
VOID NTAPI MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
PFN_NUMBER NTAPI MiRemoveAnyPage(IN ULONG Color)
KGUARDED_MUTEX MmPagedPoolMutex
VOID NTAPI MiReleaseSystemPtes(IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
enum _MI_PFN_CACHE_ATTRIBUTE MI_PFN_CACHE_ATTRIBUTE
BOOLEAN NTAPI MmArmInitSystem(IN ULONG Phase, IN PLOADER_PARAMETER_BLOCK LoaderBlock)
VOID NTAPI MiRemoveMappedView(IN PEPROCESS CurrentProcess, IN PMMVAD Vad)
#define MM_EXECUTE_READWRITE
PFN_NUMBER MmResidentAvailableAtInit
struct _POOL_TRACKER_TABLE * PPOOL_TRACKER_TABLE
struct _POOL_DESCRIPTOR POOL_DESCRIPTOR
PFN_NUMBER MmMaximumNonPagedPoolInPages
ULONG ExpNumberOfPagedPools
VOID NTAPI MiInitializeSessionIds(VOID)
FORCEINLINE BOOLEAN MiIsUserPte(PVOID Address)
MMPDE ValidKernelPdeLocal
PMMADDRESS_NODE NTAPI MiGetPreviousNode(IN PMMADDRESS_NODE Node)
FORCEINLINE VOID MiUnlockProcessWorkingSetShared(IN PEPROCESS Process, IN PETHREAD Thread)
VOID NTAPI MiInitializePfnAndMakePteValid(IN PFN_NUMBER PageFrameIndex, IN PMMPTE PointerPte, IN MMPTE TempPte)
PVOID MiSessionImageStart
struct _POOL_TRACKER_BIG_PAGES * PPOOL_TRACKER_BIG_PAGES
VOID NTAPI MiWriteProtectSystemImage(_In_ PVOID ImageBase)
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE_KERNEL(IN PMMPTE NewPte, IN PMMPTE MappingPte, IN ULONG_PTR ProtectionMask, IN PFN_NUMBER PageFrameNumber)
PVOID NTAPI MiCheckForContiguousMemory(IN PVOID BaseAddress, IN PFN_NUMBER BaseAddressPages, IN PFN_NUMBER SizeInPages, IN PFN_NUMBER LowestPfn, IN PFN_NUMBER HighestPfn, IN PFN_NUMBER BoundaryPfn, IN MI_PFN_CACHE_ATTRIBUTE CacheAttribute)
PFN_NUMBER MmPlentyFreePages
ULONG MmVerifyDriverBufferLength
PMMWSL MmSystemCacheWorkingSetList
MM_PAGED_POOL_INFO MmPagedPoolInfo
WCHAR MmVerifyDriverBuffer[512]
VOID NTAPI MiDeleteARM3Section(PVOID ObjectBody)
KSPIN_LOCK MmExpansionLock
NTSTATUS NTAPI MiInitializeAndChargePfn(OUT PPFN_NUMBER PageFrameIndex, IN PMMPDE PointerPde, IN PFN_NUMBER ContainingPageFrame, IN BOOLEAN SessionAllocation)
FORCEINLINE VOID MiReleaseExpansionLock(KIRQL OldIrql)
PFN_NUMBER MiHighPagedPoolThreshold
FORCEINLINE VOID MI_ERASE_PTE(IN PMMPTE PointerPte)
#define MI_IS_SESSION_PTE(Pte)
#define MI_IS_PAGE_TABLE_ADDRESS(Address)
VOID NTAPI MiInitializeNonPagedPoolThresholds(VOID)
VOID NTAPI MiInitializeSessionSpaceLayout(VOID)
VOID NTAPI MiInitializePfnForOtherProcess(IN PFN_NUMBER PageFrameIndex, IN PVOID PteAddress, IN PFN_NUMBER PteFrame)
PMMPTE MiSessionImagePteStart
FORCEINLINE USHORT MiDecrementPageTableReferences(IN PVOID Address)
ULONG MmNumberOfSystemPtes
struct _POOL_DESCRIPTOR * PPOOL_DESCRIPTOR
NTSTATUS NTAPI MmArmAccessFault(IN ULONG FaultCode, IN PVOID Address, IN KPROCESSOR_MODE Mode, IN PVOID TrapInformation)
BOOLEAN MmLargeSystemCache
FORCEINLINE VOID MI_WRITE_VALID_PDE(IN PMMPDE PointerPde, IN MMPDE TempPde)
VOID NTAPI MiDecrementShareCount(IN PMMPFN Pfn1, IN PFN_NUMBER PageFrameIndex)
FORCEINLINE VOID MiUnlockProcessWorkingSet(IN PEPROCESS Process, IN PETHREAD Thread)
PKEVENT MiLowNonPagedPoolEvent
FORCEINLINE VOID MiUnlockProcessWorkingSetUnsafe(IN PEPROCESS Process, IN PETHREAD Thread)
struct _MMCOLOR_TABLES * PMMCOLOR_TABLES
const ULONG MmProtectToValue[32]
VOID NTAPI MiInitializeDriverLargePageList(VOID)
ULONG MmTotalFreeSystemPtes[MaximumPtePoolTypes]
PKEVENT MiHighMemoryEvent
struct _MI_LARGE_PAGE_DRIVER_ENTRY * PMI_LARGE_PAGE_DRIVER_ENTRY
VOID FASTCALL MiSyncARM3WithROS(IN PVOID AddressStart, IN PVOID AddressEnd)
FORCEINLINE VOID MiReferenceUnusedPageAndBumpLockCount(IN PMMPFN Pfn1)
FORCEINLINE VOID MI_WRITE_INVALID_PTE(IN PMMPTE PointerPte, IN MMPTE InvalidPte)
enum _MI_PFN_CACHE_ATTRIBUTE * PMI_PFN_CACHE_ATTRIBUTE
PPHYSICAL_MEMORY_DESCRIPTOR NTAPI MmInitializeMemoryLimits(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN PBOOLEAN IncludeType)
FORCEINLINE VOID MiUnlockWorkingSet(IN PETHREAD Thread, IN PMMSUPPORT WorkingSet)
VOID NTAPI MiMakePdeExistAndMakeValid(IN PMMPDE PointerPde, IN PEPROCESS TargetProcess, IN KIRQL OldIrql)
ULONG NTAPI MiMakeSystemAddressValid(IN PVOID PageTableVirtualAddress, IN PEPROCESS CurrentProcess)
VOID NTAPI MiSessionRemoveProcess(VOID)
FORCEINLINE VOID MiDereferencePfnAndDropLockCount(IN PMMPFN Pfn1)
MMPFNLIST MmStandbyPageListByPriority[8]
PFN_NUMBER MmTotalSystemDriverPages
struct _PHYSICAL_MEMORY_RUN PHYSICAL_MEMORY_RUN
ULONG MmLargePageDriverBufferLength
NTSTATUS NTAPI MiRosUnmapViewInSystemSpace(IN PVOID MappedBase)
SIZE_T MmMaximumNonPagedPoolInBytes
ULONG MmMaxAdditionNonPagedPoolPerMb
PVOID MmNonPagedPoolExpansionStart
PMMPTE NTAPI MiReserveSystemPtes(IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
VOID NTAPI MiUnlinkPageFromList(IN PMMPFN Pfn)
FORCEINLINE VOID MiReferenceProbedPageAndBumpLockCount(IN PMMPFN Pfn1)
PSUBSECTION NTAPI MiLocateSubsection(IN PMMVAD Vad, IN ULONG_PTR Vpn)
BOOLEAN MiLargePageAllDrivers
PFN_NUMBER NTAPI MiPagesInLoaderBlock(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN PBOOLEAN IncludeType)
FORCEINLINE BOOLEAN MI_IS_MAPPED_PTE(PMMPTE PointerPte)
POOL_DESCRIPTOR NonPagedPoolDescriptor
FORCEINLINE BOOLEAN MM_ANY_WS_LOCK_HELD(IN PETHREAD Thread)
BOOLEAN NTAPI MiIsPfnInUse(IN PMMPFN Pfn1)
PPOOL_TRACKER_TABLE PoolTrackTable
NTSTATUS NTAPI MiRosUnmapViewOfSection(IN PEPROCESS Process, IN PVOID BaseAddress, IN BOOLEAN SkipDebuggerNotify)
SIZE_T MmAllocatedNonPagedPool
PPOOL_DESCRIPTOR ExpPagedPoolDescriptor[16+1]
NTSTATUS NTAPI MiInsertVadEx(_Inout_ PMMVAD Vad, _In_ ULONG_PTR *BaseAddress, _In_ SIZE_T ViewSize, _In_ ULONG_PTR HighestAddress, _In_ ULONG_PTR Alignment, _In_ ULONG AllocationType)
ULONG MmMinAdditionNonPagedPoolPerMb
LIST_ENTRY MiLargePageDriverList
struct _PHYSICAL_MEMORY_DESCRIPTOR PHYSICAL_MEMORY_DESCRIPTOR
TABLE_SEARCH_RESULT NTAPI MiFindEmptyAddressRangeDownTree(IN SIZE_T Length, IN ULONG_PTR BoundaryAddress, IN ULONG_PTR Alignment, IN PMM_AVL_TABLE Table, OUT PULONG_PTR Base, OUT PMMADDRESS_NODE *Parent)
VOID NTAPI MiMapPfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
FORCEINLINE BOOLEAN MiIsMemoryTypeFree(TYPE_OF_MEMORY MemoryType)
KGUARDED_MUTEX MmSectionCommitMutex
BOOLEAN NTAPI MiInitializeSystemSpaceMap(IN PMMSESSION InputSession OPTIONAL)
PFN_NUMBER MiLowNonPagedPoolThreshold
FORCEINLINE VOID MiLockWorkingSetShared(_In_ PETHREAD Thread, _In_ PMMSUPPORT WorkingSet)
MMSUPPORT MmSystemCacheWs
FORCEINLINE VOID MI_WRITE_INVALID_PDE(IN PMMPDE PointerPde, IN MMPDE InvalidPde)
PFN_NUMBER MiHighNonPagedPoolThreshold
MEMORY_ALLOCATION_DESCRIPTOR MxOldFreeDescriptor
struct _MM_SESSION_SPACE_FLAGS MM_SESSION_SPACE_FLAGS
VOID NTAPI MiComputeColorInformation(VOID)
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE(IN PMMPTE NewPte, IN PMMPTE MappingPte, IN ULONG_PTR ProtectionMask, IN PFN_NUMBER PageFrameNumber)
struct _POOL_HEADER POOL_HEADER
VOID NTAPI MiInsertPageInList(IN PMMPFNLIST ListHead, IN PFN_NUMBER PageFrameIndex)
NTSTATUS NTAPI MiCheckSecuredVad(IN PMMVAD Vad, IN PVOID Base, IN SIZE_T Size, IN ULONG ProtectionMask)
PKEVENT MiHighPagedPoolEvent
FORCEINLINE BOOLEAN MI_WS_OWNER(IN PEPROCESS Process)
FORCEINLINE BOOLEAN MiIsUserPde(PVOID Address)
PVOID MmNonPagedPoolStart
FORCEINLINE VOID MI_UPDATE_VALID_PTE(IN PMMPTE PointerPte, IN MMPTE TempPte)
VOID NTAPI MiInitializeLargePageSupport(VOID)
SIZE_T MmSystemLockPagesCount
NTSTATUS FASTCALL MiCheckPdeForPagedPool(IN PVOID Address)
VOID NTAPI MiDecrementReferenceCount(IN PMMPFN Pfn1, IN PFN_NUMBER PageFrameIndex)
WCHAR MmLargePageDriverBuffer[512]
MM_AVL_TABLE MmSectionBasedRoot
FORCEINLINE BOOLEAN MiConvertSharedWorkingSetLockToExclusive(_In_ PETHREAD Thread, _In_ PMMSUPPORT Vm)
enum _MMSYSTEM_PTE_POOL_TYPE MMSYSTEM_PTE_POOL_TYPE
TABLE_SEARCH_RESULT NTAPI MiFindEmptyAddressRangeInTree(IN SIZE_T Length, IN ULONG_PTR Alignment, IN PMM_AVL_TABLE Table, OUT PMMADDRESS_NODE *PreviousVad, OUT PULONG_PTR Base)
FORCEINLINE VOID MI_MAKE_TRANSITION_PTE(_Out_ PMMPTE NewPte, _In_ PFN_NUMBER Page, _In_ ULONG Protection)
FORCEINLINE VOID MI_WRITE_VALID_PTE(IN PMMPTE PointerPte, IN MMPTE TempPte)
FORCEINLINE VOID MiDropLockCount(IN PMMPFN Pfn1)
PMMPTE MmFirstReservedMappingPte
FORCEINLINE ULONG_PTR MiDetermineUserGlobalPteMask(IN PVOID PointerPte)
KEVENT MmZeroingPageEvent
SIZE_T MmDefaultMaximumNonPagedPool
NTSTATUS NTAPI MiInitializeSessionPool(VOID)
VOID NTAPI MiInitializePfn(IN PFN_NUMBER PageFrameIndex, IN PMMPTE PointerPte, IN BOOLEAN Modified)
SIZE_T MmAllocationFragment
struct _POOL_TRACKER_BIG_PAGES POOL_TRACKER_BIG_PAGES
PFN_COUNT NTAPI MiDeleteSystemPageableVm(IN PMMPTE PointerPte, IN PFN_NUMBER PageCount, IN ULONG Flags, OUT PPFN_NUMBER ValidPages)
PKEVENT MiLowPagedPoolEvent
TABLE_SEARCH_RESULT NTAPI MiCheckForConflictingNode(IN ULONG_PTR StartVpn, IN ULONG_PTR EndVpn, IN PMM_AVL_TABLE Table, OUT PMMADDRESS_NODE *NodeOrParent)
PFN_NUMBER MmSizeOfPagedPoolInPages
ULONG NTAPI MiMakeProtectionMask(IN ULONG Protect)
FORCEINLINE USHORT MiIncrementPageTableReferences(IN PVOID Address)
LIST_ENTRY MmWorkingSetExpansionHead
LARGE_INTEGER MmCriticalSectionTimeout
#define MM_PROTECT_ACCESS
struct _MMSESSION * PMMSESSION
PMMADDRESS_NODE NTAPI MiGetNextNode(IN PMMADDRESS_NODE Node)
VOID NTAPI MiInsertVad(_Inout_ PMMVAD Vad, _Inout_ PMM_AVL_TABLE VadRoot)
PPHYSICAL_MEMORY_DESCRIPTOR MmPhysicalMemoryBlock
PFN_NUMBER NTAPI MiFindContiguousPages(IN PFN_NUMBER LowestPfn, IN PFN_NUMBER HighestPfn, IN PFN_NUMBER BoundaryPfn, IN PFN_NUMBER SizeInPages, IN MEMORY_CACHING_TYPE CacheType)
NTSTATUS NTAPI MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
ULONG MmConsumedPoolPercentage
FORCEINLINE PMMPFN MI_PFN_ELEMENT(IN PFN_NUMBER Pfn)
VOID NTAPI MiSyncCachedRanges(VOID)
const ULONG_PTR MmProtectToPteMask[32]
SIZE_T MmSizeOfPagedPoolInBytes
FORCEINLINE VOID MiLockProcessWorkingSet(IN PEPROCESS Process, IN PETHREAD Thread)
PMMCOLOR_TABLES MmFreePagesByColor[FreePageList+1]
struct _MM_SESSION_SPACE MM_SESSION_SPACE
FORCEINLINE PFN_NUMBER MiRemoveZeroPageSafe(IN ULONG Color)
PFN_NUMBER MmHighMemoryThreshold
NTSTATUS NTAPI MiRosProtectVirtualMemory(IN PEPROCESS Process, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T NumberOfBytesToProtect, IN ULONG NewAccessProtection, OUT PULONG OldAccessProtection OPTIONAL)
struct _POOL_HEADER * PPOOL_HEADER
ULONG MmMaximumDeadKernelStacks
VOID NTAPI MiInitializeSessionWsSupport(VOID)
PLDR_DATA_TABLE_ENTRY NTAPI MiLookupDataTableEntry(IN PVOID Address)
PKEVENT MiHighNonPagedPoolEvent
PFN_NUMBER MmSystemPageDirectory[PPE_PER_PAGE]
FORCEINLINE VOID MiLockProcessWorkingSetUnsafe(IN PEPROCESS Process, IN PETHREAD Thread)
FORCEINLINE VOID MiUnlockWorkingSetShared(_In_ PETHREAD Thread, _In_ PMMSUPPORT WorkingSet)
ULONG MmCritsectTimeoutSeconds
#define MiAddressToPde(x)
_In_ HANDLE ProcessHandle
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG AllocationType
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
FORCEINLINE PMMPXE MiPdeToPxe(PMMPDE PointerPde)
#define MI_MAKE_OWNER_PAGE(x)
FORCEINLINE PMMPDE MiPdeToPpe(PMMPDE PointerPde)
#define MiGetPdeOffset(x)
#define MI_MAKE_ACCESSED_PAGE(x)
#define _MI_PAGING_LEVELS
#define SESSION_POOL_LOOKASIDES
#define MiPteToAddress(_Pte)
FORCEINLINE PMMPFN MiGetPfnEntry(IN PFN_NUMBER Pfn)
FORCEINLINE PFN_NUMBER MiGetPfnEntryIndex(IN PMMPFN Pfn1)
_In_ PVOID _Out_opt_ BOOLEAN _Out_opt_ PPFN_NUMBER Page
_Out_ PKAPC_STATE ApcState
BOOLEAN NTAPI KeAreAllApcsDisabled(VOID)
@ LoaderFirmwareTemporary
@ LoaderFirmwarePermanent
enum _TYPE_OF_MEMORY TYPE_OF_MEMORY
#define KeMemoryBarrierWithoutFence()
PULONG MinorVersion OPTIONAL
base of all file and directory entries
ULONG OwnsSessionWorkingSetExclusive
ULONG OwnsSessionWorkingSetShared
ULONG OwnsSystemWorkingSetShared
ULONG OwnsProcessWorkingSetShared
ULONG OwnsProcessWorkingSetExclusive
ULONG OwnsSystemWorkingSetExclusive
ULONG64 UsedPageTableEntries
ULONG SystemSpaceHashEntries
PKGUARDED_MUTEX SystemSpaceViewLockPointer
PRTL_BITMAP SystemSpaceBitMap
PCHAR SystemSpaceViewStart
ULONG SystemSpaceHashSize
PMMVIEW SystemSpaceViewTable
KGUARDED_MUTEX SystemSpaceViewLock
EX_PUSH_LOCK WorkingSetMutex
PCONTROL_AREA ControlArea
USHORT UsedPageTableEntries[768]
PFN_NUMBER SessionPageDirectoryIndex
LONG ResidentProcessCount
KGUARDED_MUTEX PagedPoolMutex
LARGE_INTEGER LastProcessSwappedOutTime
MM_PAGED_POOL_INFO PagedPoolInfo
struct _MM_SESSION_SPACE * GlobalVirtualAddress
MM_SESSION_SPACE_FLAGS Flags
ULONG SessionPoolAllocationFailures[4]
union _MM_SESSION_SPACE::@1836 u
LONG ProcessReferenceToSession
POOL_DESCRIPTOR PagedPool
PDRIVER_UNLOAD Win32KDriverUnload
LIST_ENTRY ListHeads[POOL_LISTS_PER_PAGE]
#define LIST_HEAD(name, type)
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_opt_ ULONG _Out_ WDFLOOKASIDE * Lookaside
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_Must_inspect_result_ _In_ ULONG Flags
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
DRIVER_UNLOAD * PDRIVER_UNLOAD
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_Must_inspect_result_ _Outptr_result_bytebuffer_ ViewSize PVOID * MappedBase
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS HighAddress
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS SkipBytes
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS _In_ MEMORY_CACHING_TYPE CacheType
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_ SIZE_T TotalBytes
enum _MM_SYSTEM_SIZE MM_SYSTEMSIZE
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG _In_ ULONG Protect