15#define MODULE_INVOLVED_IN_ARM3
18#define MI_MAPPED_COPY_PAGES 14
19#define MI_POOL_COPY_BYTES 512
20#define MI_MAX_TRANSFER_SIZE 64 * 1024
47 PMMPTE PointerPte, LastPte;
50#if _MI_PAGING_LEVELS >= 3
53#if _MI_PAGING_LEVELS == 4
61 ASSERT(EndingAddress >= StartingAddress);
72 while (PointerPte <= LastPte)
74#if _MI_PAGING_LEVELS == 4
84 if (PointerPxe->
u.
Long == 0)
97#if _MI_PAGING_LEVELS >= 3
106 if (PointerPpe->
u.
Long == 0)
110#if _MI_PAGING_LEVELS == 4
126 if (PointerPde->
u.
Long == 0)
130#if _MI_PAGING_LEVELS >= 3
132#if _MI_PAGING_LEVELS == 4
145 if (PointerPte->
u.
Long != 0)
154 if (Vad->u.VadFlags.MemCommit)
157 else if (!Vad->u.VadFlags.MemCommit)
168#if _MI_PAGING_LEVELS >= 3
170#if _MI_PAGING_LEVELS == 4
178 return CommittedPages;
294 if (PointerPte->u.Long)
297 if (PointerPte->u.Hard.Valid)
307 if (ValidPages) (*ValidPages)++;
332 ASSERT(PointerPte->u.Soft.Prototype == 0);
333 ASSERT(PointerPte->u.Soft.Transition == 0);
342 ASSERT(PointerPte->u.Soft.PageFileHigh == 0);
404 DPRINT(
"Pte %p is transitional!\n", PointerPte);
425 if (Pfn1->
u3.
e2.ReferenceCount == 0)
432 Pfn1->
u3.
e2.ReferenceCount++;
452#if (_MI_PAGING_LEVELS == 2)
464#if (_MI_PAGING_LEVELS == 2)
537#if (_MI_PAGING_LEVELS >= 3)
540#if (_MI_PAGING_LEVELS >= 4)
556 if (!(Vad) || (Vad->u.VadFlags.PrivateMemory) || !(Vad->FirstPrototypePte))
565 LastPrototypePte = Vad->FirstPrototypePte + 1;
572 while (Va <= EndingAddress)
574#if (_MI_PAGING_LEVELS >= 4)
580 if (!PointerPxe->
u.
Long)
594#if (_MI_PAGING_LEVELS >= 3)
600 if (!PointerPpe->
u.
Long)
616 if (!PointerPde->
u.
Long)
636 ASSERT(Va <= EndingAddress);
639 if ((AddressGap) && (LastPrototypePte))
674 if ((LastPrototypePte) && (
PrototypePte > LastPrototypePte))
695 (
TempPte.u.Soft.Prototype == 1))
737 }
while ((Va & (
PDE_MAPPED_VA - 1)) && (Va <= EndingAddress));
742 if (Va > EndingAddress)
return;
760 *HaveBadAddress =
FALSE;
782 *HaveBadAddress =
TRUE;
805 SIZE_T TotalSize, CurrentSize, RemainingSize;
821 CurrentSize = TotalSize;
827 while (RemainingSize > 0)
832 if (RemainingSize < CurrentSize) CurrentSize = RemainingSize;
859 FailedInProbe =
TRUE;
869 FailedInProbe =
FALSE;
923 FailedInProbe =
TRUE;
933 FailedInProbe =
FALSE;
939 RtlCopyMemory(CurrentTargetAddress, MdlAddress, CurrentSize);
999 RemainingSize -= CurrentSize;
1000 CurrentAddress = (
PVOID)((
ULONG_PTR)CurrentAddress + CurrentSize);
1001 CurrentTargetAddress = (
PVOID)((
ULONG_PTR)CurrentTargetAddress + CurrentSize);
1005 if (MdlAddress !=
NULL)
1029 SIZE_T TotalSize, CurrentSize, RemainingSize;
1039 DPRINT(
"Copying %Iu bytes from process %p (address %p) to process %p (Address %p)\n",
1047 CurrentSize = TotalSize;
1058 PoolAddress = (
PVOID)StackBuffer;
1067 HavePoolAddress =
TRUE;
1073 while (RemainingSize > 0)
1078 if (RemainingSize < CurrentSize) CurrentSize = RemainingSize;
1102 FailedInProbe =
TRUE;
1112 FailedInProbe =
FALSE;
1178 FailedInProbe =
TRUE;
1188 FailedInProbe =
FALSE;
1194 RtlCopyMemory(CurrentTargetAddress, PoolAddress, CurrentSize);
1248 RemainingSize -= CurrentSize;
1249 CurrentAddress = (
PVOID)((
ULONG_PTR)CurrentAddress + CurrentSize);
1258 if (HavePoolAddress)
1375 (
TempPte.u.Soft.Prototype == 1))
1478 PMMPTE PointerPte, ProtoPte;
1480#if (_MI_PAGING_LEVELS >= 3)
1483#if (_MI_PAGING_LEVELS >= 4)
1498#if (_MI_PAGING_LEVELS >= 3)
1501#if (_MI_PAGING_LEVELS >= 4)
1510#if (_MI_PAGING_LEVELS >= 4)
1512 if (PointerPxe->
u.
Long == 0)
1526#if (_MI_PAGING_LEVELS >= 3)
1528 if (PointerPpe->
u.
Long == 0)
1544 if (PointerPde->
u.
Long == 0)
1579 ((
TempPte.u.Soft.Prototype == 0) ||
1601 (
TempPte.u.Soft.Prototype == 1) &&
1602 (Vad->u.VadFlags.PrivateMemory == 0) &&
1620 if ((Vad->u.VadFlags.PrivateMemory == 0) && (Vad->ControlArea))
1633 TempProtoPte = *ProtoPte;
1634 if (TempProtoPte.
u.
Long)
1645 else if (Vad->u.VadFlags.MemCommit)
1742 (
PVOID*)&TargetProcess,
1766 DPRINT1(
"Process is dying\n");
1789 if (BaseVpn < Vad->StartingVpn)
1863 MemoryInfo.
Type = 0;
1910 DPRINT1(
"MmQuerySectionView failed. MemoryArea=%p (%p-%p), BaseAddress=%p\n",
1911 Vad, Vad->StartingVpn, Vad->EndingVpn,
BaseAddress);
1988 DPRINT(
"Base: %p AllocBase: %p AllocProtect: %lx Protect: %lx "
1989 "State: %lx Type: %lx Size: %lx\n",
2004 PMMPTE PointerPte, LastPte;
2007#if _MI_PAGING_LEVELS >= 3
2010#if _MI_PAGING_LEVELS == 4
2026 while (PointerPte <= LastPte)
2028#if _MI_PAGING_LEVELS == 4
2038 if (PointerPxe->
u.
Long != 0)
2047 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2056#if _MI_PAGING_LEVELS >= 3
2065 if (PointerPpe->
u.
Long != 0)
2074 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2078#if _MI_PAGING_LEVELS == 4
2090 if (PointerPde->
u.
Long != 0)
2102 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2107#if _MI_PAGING_LEVELS >= 3
2109#if _MI_PAGING_LEVELS == 4
2120 if (PointerPte->
u.
Long == 0)
2123 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2141#if _MI_PAGING_LEVELS >= 3
2143#if _MI_PAGING_LEVELS == 4
2163 ULONG_PTR StartingAddress, EndingAddress;
2164 PMMPTE PointerPte, LastPte;
2168 ULONG ProtectionMask, OldProtect;
2185 DPRINT1(
"Invalid protection mask\n");
2194 DPRINT1(
"Process is dying\n");
2204 if (
Result != TableFoundNode)
2206 DPRINT(
"Could not find a VAD for this allocation\n");
2221 *NumberOfBytesToProtect,
2222 NewAccessProtection,
2223 OldAccessProtection);
2241 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2249 DPRINT1(
"Trying to change protection of a NoChange VAD\n");
2260 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2268 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2277 DPRINT1(
"Invalid protection flags for section\n");
2286 DPRINT1(
"Fixme: Not checking for valid protection\n");
2290 DPRINT1(
"Section protection not yet supported\n");
2299 DPRINT1(
"Invalid protection flags for private memory\n");
2315 DPRINT1(
"The entire range is not committed\n");
2330 if (PointerPte->
u.
Long != 0)
2343 while (PointerPte <= LastPte)
2353 PteContents = *PointerPte;
2354 if (PteContents.
u.
Long == 0)
2428 *NumberOfBytesToProtect = EndingAddress - StartingAddress + 1;
2430 *OldAccessProtection = OldProtect;
2446#if _MI_PAGING_LEVELS >= 3
2448#if _MI_PAGING_LEVELS == 4
2470 (PointerPde->u.Hard.Valid))
2489#if _MI_PAGING_LEVELS == 4
2500#if _MI_PAGING_LEVELS >= 3
2522 ASSERT(PointerPde->u.Hard.Valid == 1);
2530 !PointerPde->u.Hard.Valid);
2594 ULONG CommitReduction = 0;
2595 PMMPTE ValidPteList[256];
2615 while (PointerPte <= EndingPte)
2645 PteContents = *PointerPte;
2646 if (PteContents.
u.
Long)
2679 if (PteCount == 256)
2684 ValidPteList[PteCount++] = PointerPte;
2716 if (PointerPte > CommitPte) CommitReduction++;
2733 return CommitReduction;
2830 if (NumberOfBytesToRead)
2850 NumberOfBytesToRead,
2864 if (NumberOfBytesRead)
2944 if (NumberOfBytesToWrite)
2964 NumberOfBytesToWrite,
2978 if (NumberOfBytesWritten)
3078 ULONG OldAccessProtection;
3082 SIZE_T NumberOfBytesToProtect = 0;
3129 NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
3146 NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
3184 if (CurrentProcess !=
Process)
3198 &NumberOfBytesToProtect,
3199 NewAccessProtection,
3200 &OldAccessProtection);
3220 *UnsafeOldAccessProtection = OldAccessProtection;
3222 *UnsafeNumberOfBytesToProtect = NumberOfBytesToProtect;
3312 while (CurrentVa < *EndAddress)
3327 *EndAddress = CurrentVa;
3348 PVOID CurrentVa, EndAddress;
3349 PMMPTE PointerPte, LastPte;
3351#if (_MI_PAGING_LEVELS >= 3)
3354#if (_MI_PAGING_LEVELS == 4)
3384 while (CurrentVa < EndAddress)
3386 (
void)(*(
volatile CHAR*)CurrentVa);
3404#if (_MI_PAGING_LEVELS >= 3)
3407#if (_MI_PAGING_LEVELS == 4)
3469#if (_MI_PAGING_LEVELS >= 3)
3472#if (_MI_PAGING_LEVELS == 4)
3475 }
while (PointerPte <= LastPte);
3500 PVOID CapturedBaseAddress;
3501 SIZE_T CapturedBytesToLock;
3541 CapturedBytesToLock = *NumberOfBytesToLock;
3605 if (CurrentProcess !=
Process)
3618 &CapturedBytesToLock,
3640 *NumberOfBytesToLock = CapturedBytesToLock;
3668 PMMPTE PointerPte, LastPte;
3670#if (_MI_PAGING_LEVELS >= 3)
3673#if (_MI_PAGING_LEVELS == 4)
3705#if (_MI_PAGING_LEVELS >= 3)
3708#if (_MI_PAGING_LEVELS == 4)
3751 DPRINT1(
"FIXME: Should remove the page from WS\n");
3761#if (_MI_PAGING_LEVELS >= 3)
3764#if (_MI_PAGING_LEVELS == 4)
3767 }
while (PointerPte <= LastPte);
3772 goto CleanupWithWsLock;
3780#if (_MI_PAGING_LEVELS >= 3)
3783#if (_MI_PAGING_LEVELS == 4)
3799#if (_MI_PAGING_LEVELS >= 3)
3802#if (_MI_PAGING_LEVELS == 4)
3805 }
while (PointerPte <= LastPte);
3836 PVOID CapturedBaseAddress;
3837 SIZE_T CapturedBytesToUnlock;
3877 CapturedBytesToUnlock = *NumberOfBytesToUnlock;
3941 if (CurrentProcess !=
Process)
3954 &CapturedBytesToUnlock,
3976 *NumberOfBytesToUnlock = CapturedBytesToUnlock;
4003 PVOID CapturedBaseAddress;
4004 SIZE_T CapturedBytesToFlush;
4029 CapturedBytesToFlush = *NumberOfBytesToFlush;
4046 CapturedBytesToFlush = *NumberOfBytesToFlush;
4080 &CapturedBaseAddress,
4081 &CapturedBytesToFlush,
4098 *NumberOfBytesToFlush = 0;
4167 CapturedEntryCount = *EntriesInUserAddressArray;
4189 CapturedEntryCount *
sizeof(
PVOID),
4206 CapturedEntryCount = *EntriesInUserAddressArray;
4207 ASSERT(CapturedEntryCount != 0);
4265 *EntriesInUserAddressArray = 0;
4379 DPRINT(
"Querying class %d about address: %p\n", MemoryInformationClass,
BaseAddress);
4391 MemoryInformationLength,
4408 switch(MemoryInformationClass)
4420 MemoryInformationLength,
4434 MemoryInformationLength,
4440 DPRINT1(
"Unhandled memory information class %d\n", MemoryInformationClass);
4464 ULONG_PTR PRegionSize, StartingAddress, EndingAddress;
4470 ULONG ProtectionMask, QuotaCharge = 0, QuotaFree = 0;
4473 PMMPTE PointerPte, LastPte;
4481 DPRINT1(
"Too many zero bits\n");
4489 DPRINT1(
"Invalid Allocation Type\n");
4496 DPRINT1(
"No memory allocation base type\n");
4503 DPRINT1(
"Invalid use of MEM_RESET\n");
4513 DPRINT1(
"Must supply MEM_COMMIT with MEM_LARGE_PAGES\n");
4520 DPRINT1(
"Using illegal flags with MEM_LARGE_PAGES\n");
4528 DPRINT1(
"MEM_WRITE_WATCH used without MEM_RESERVE\n");
4538 DPRINT1(
"MEM_PHYSICAL used without MEM_RESERVE\n");
4545 DPRINT1(
"Using illegal flags with MEM_PHYSICAL\n");
4552 DPRINT1(
"MEM_PHYSICAL used without PAGE_READWRITE\n");
4561 DPRINT1(
"Invalid protection mask\n");
4577 PBaseAddress = *UBaseAddress;
4578 PRegionSize = *URegionSize;
4590 DPRINT1(
"Virtual allocation base above User Space\n");
4597 DPRINT1(
"Region size would overflow into kernel-memory\n");
4604 DPRINT1(
"Region size is invalid (zero)\n");
4630 if (CurrentProcess !=
Process)
4637 DPRINT(
"NtAllocateVirtualMemory: Process 0x%p, Address 0x%p, Zerobits %lu , RegionSize 0x%x, Allocation type 0x%x, Protect 0x%x.\n",
4648 DPRINT1(
"Privilege not held for MEM_LARGE_PAGES\n");
4650 goto FailPathNoLock;
4658 DPRINT1(
"MEM_LARGE_PAGES not supported\n");
4660 goto FailPathNoLock;
4664 DPRINT1(
"MEM_PHYSICAL not supported\n");
4666 goto FailPathNoLock;
4670 DPRINT1(
"MEM_WRITE_WATCH not supported\n");
4672 goto FailPathNoLock;
4686 DPRINT1(
"Copy on write not allowed through this path\n");
4688 goto FailPathNoLock;
4701 StartingAddress = 0;
4715 goto FailPathNoLock;
4728 StartingAddress = (
ULONG_PTR)PBaseAddress;
4736 goto FailPathNoLock;
4747 DPRINT1(
"Failed to allocate a VAD!\n");
4749 goto FailPathNoLock;
4769 DPRINT1(
"Failed to insert the VAD!\n");
4771 goto FailPathNoLock;
4790 *URegionSize = PRegionSize;
4791 *UBaseAddress = (
PVOID)StartingAddress;
4800 DPRINT(
"Reserved %x bytes at %p.\n", PRegionSize, StartingAddress);
4812 PRegionSize = EndingAddress - StartingAddress + 1;
4821 DPRINT1(
"Process is dying\n");
4833 if (
Result != TableFoundNode)
4835 DPRINT1(
"Could not find a VAD for this allocation\n");
4843 DPRINT(
"MEM_RESET not supported\n");
4852 if ((FoundVad->u.VadFlags.VadType ==
VadAwe) ||
4856 DPRINT1(
"Illegal VAD for attempting a MEM_COMMIT\n");
4864 if (((StartingAddress >>
PAGE_SHIFT) < FoundVad->StartingVpn) ||
4865 ((EndingAddress >>
PAGE_SHIFT) > FoundVad->EndingVpn))
4867 DPRINT1(
"Address range does not fit into the VAD\n");
4877 DPRINT1(
"Illegal commit of non-ARM3 section!\n");
4885 if (FoundVad->u.VadFlags.PrivateMemory ==
FALSE)
4892 DPRINT1(
"Large page sections cannot be VirtualAlloc'd\n");
4903 DPRINT1(
"Cannot use caching flags with anything but rotate VADs\n");
4912 if (FoundVad->u.VadFlags.NoChange)
4929 DPRINT1(
"Secured VAD being messed around with\n");
4937 ASSERT(FoundVad->ControlArea->FilePointer ==
NULL);
4945 DPRINT1(
"Invalid page protection for rotate VAD\n");
4955 QuotaCharge = (
ULONG)(LastPte - PointerPte + 1);
4961 TempPte = FoundVad->ControlArea->Segment->SegmentPteTemplate;
4963 while (PointerPte <= LastPte)
4968 if (PointerPte->
u.
Long == 0)
4982 ASSERT(QuotaCharge >= QuotaFree);
4983 QuotaCharge -= QuotaFree;
4984 FoundVad->ControlArea->Segment->NumberOfCommittedPages += QuotaCharge;
5009 DPRINT1(
"Write copy attempted when not allowed\n");
5018 TempPte.u.Soft.Protection = ProtectionMask;
5033 FoundVad->u.VadFlags.CommitCharge += (1 + LastPte - PointerPte);
5034 Process->CommitCharge += (1 + LastPte - PointerPte);
5049 while (PointerPte <= LastPte)
5066 if (PointerPte->
u.
Long == 0)
5102 ChangeProtection =
TRUE;
5132 if (ChangeProtection)
5134 PVOID ProtectBaseAddress = (
PVOID)StartingAddress;
5135 SIZE_T ProtectSize = PRegionSize;
5136 ULONG OldProtection;
5142 &ProtectBaseAddress,
5165 *URegionSize = PRegionSize;
5166 *UBaseAddress = (
PVOID)StartingAddress;
5194 LONG_PTR AlreadyDecommitted, CommitReduction = 0;
5196 ULONG_PTR StartingAddress, EndingAddress;
5236 PBaseAddress = *UBaseAddress;
5237 PRegionSize = *URegionSize;
5250 DPRINT1(
"Virtual free base above User Space\n");
5259 DPRINT1(
"Region size would overflow into kernel-memory\n");
5285 if (CurrentProcess !=
Process)
5292 DPRINT(
"NtFreeVirtualMemory: Process 0x%p, Address 0x%p, Size 0x%Ix, FreeType 0x%08lx\n",
5320 DPRINT1(
"Unable to find VAD for address 0x%p\n", StartingAddress);
5330 DPRINT1(
"Address 0x%p is beyond the VAD\n", EndingAddress);
5342 DPRINT(
"Attempt to free section memory\n");
5375 DPRINT1(
"Address 0x%p does not match the VAD\n", PBaseAddress);
5487 DPRINT1(
"Failed to allocate a VAD!\n");
5497 DPRINT1(
"Ran out of process quota whilst creating new VAD!\n");
5542 StartingAddress - 1,
5570 PRegionSize = EndingAddress - StartingAddress + 1;
5571 Process->CommitCharge -= CommitReduction;
5593 *URegionSize = PRegionSize;
5594 *UBaseAddress = (
PVOID)StartingAddress;
5611 DPRINT1(
"Trying to decommit from invalid VAD\n");
5625 DPRINT1(
"Decomitting non-committed memory\n");
5645 ASSERT(CommitReduction >= 0);
5709 DPRINT1(
"MM:MmGetPhysicalAddressFailed base address was %p\n",
Address);
#define STATUS_PRIVILEGE_NOT_HELD
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG ReturnLength
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG _In_ KPROCESSOR_MODE PreviousMode
HARDWARE_PTE_ARMV6 TempPte
HARDWARE_PDE_ARMV6 TempPde
#define MM_HIGHEST_USER_ADDRESS
_In_ WDFREQUEST _In_ MEDIA_LOCK_TYPE LockType
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
static const WCHAR Cleanup[]
#define ExAllocatePoolWithTag(hernya, size, tag)
#define PsGetCurrentThread()
#define KeGetCurrentIrql()
#define ROUND_DOWN(n, align)
#define ExReleaseRundownProtection
#define ExGetPreviousMode
#define ExAcquireRundownProtection
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
_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
#define KeRosDumpStackFrames(Frames, Count)
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 const GLfloat const GLdouble const GLfloat GLint i
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
VOID FASTCALL KeReleaseGuardedMutexUnsafe(IN OUT PKGUARDED_MUTEX GuardedMutex)
VOID FASTCALL KeAcquireGuardedMutexUnsafe(IN OUT PKGUARDED_MUTEX GuardedMutex)
#define PROCESS_QUERY_INFORMATION
#define PROCESS_VM_OPERATION
#define EXCEPTION_EXECUTE_HANDLER
PMMVAD NTAPI MiLocateAddress(IN PVOID VirtualAddress)
NTSTATUS NTAPI MiQueryMemorySectionName(IN HANDLE ProcessHandle, IN PVOID BaseAddress, OUT PVOID MemoryInformation, IN SIZE_T MemoryInformationLength, OUT PSIZE_T ReturnLength)
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 VOID MiLockProcessWorkingSetShared(IN PEPROCESS Process, IN PETHREAD Thread)
FORCEINLINE VOID MiDeletePde(_In_ PMMPDE PointerPde, _In_ PEPROCESS CurrentProcess)
FORCEINLINE VOID MiLockWorkingSet(IN PETHREAD Thread, IN PMMSUPPORT WorkingSet)
VOID NTAPI MiRemoveNode(IN PMMADDRESS_NODE Node, IN PMM_AVL_TABLE Table)
FORCEINLINE VOID MiUnlockProcessWorkingSetForFault(IN PEPROCESS Process, IN PETHREAD Thread, OUT PBOOLEAN Safe, OUT PBOOLEAN Shared)
FORCEINLINE VOID MiLockProcessWorkingSetForFault(IN PEPROCESS Process, IN PETHREAD Thread, IN BOOLEAN Safe, IN BOOLEAN Shared)
#define MI_SET_PFN_DELETED(x)
FORCEINLINE VOID MiUnlockProcessWorkingSetShared(IN PEPROCESS Process, IN PETHREAD Thread)
FORCEINLINE VOID MI_ERASE_PTE(IN PMMPTE PointerPte)
FORCEINLINE USHORT MiDecrementPageTableReferences(IN PVOID Address)
#define MM_INVALID_PROTECTION
VOID NTAPI MiDecrementShareCount(IN PMMPFN Pfn1, IN PFN_NUMBER PageFrameIndex)
FORCEINLINE VOID MiUnlockProcessWorkingSet(IN PEPROCESS Process, IN PETHREAD Thread)
FORCEINLINE VOID MiUnlockProcessWorkingSetUnsafe(IN PEPROCESS Process, IN PETHREAD Thread)
FORCEINLINE VOID MI_WRITE_INVALID_PTE(IN PMMPTE PointerPte, IN MMPTE InvalidPte)
FORCEINLINE VOID MiUnlockWorkingSet(IN PETHREAD Thread, IN PMMSUPPORT WorkingSet)
FORCEINLINE VOID MiDereferencePfnAndDropLockCount(IN PMMPFN Pfn1)
VOID NTAPI MiUnlinkPageFromList(IN PMMPFN Pfn)
FORCEINLINE VOID MiReferenceProbedPageAndBumpLockCount(IN PMMPFN Pfn1)
PSUBSECTION NTAPI MiLocateSubsection(IN PMMVAD Vad, IN ULONG_PTR Vpn)
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)
KGUARDED_MUTEX MmSectionCommitMutex
NTSTATUS NTAPI MiCheckSecuredVad(IN PMMVAD Vad, IN PVOID Base, IN SIZE_T Size, IN ULONG ProtectionMask)
NTSTATUS FASTCALL MiCheckPdeForPagedPool(IN PVOID Address)
VOID NTAPI MiDecrementReferenceCount(IN PMMPFN Pfn1, IN PFN_NUMBER PageFrameIndex)
#define MI_PTE_LOOKUP_NEEDED
TABLE_SEARCH_RESULT NTAPI MiCheckForConflictingNode(IN ULONG_PTR StartVpn, IN ULONG_PTR EndVpn, IN PMM_AVL_TABLE Table, OUT PMMADDRESS_NODE *NodeOrParent)
ULONG NTAPI MiMakeProtectionMask(IN ULONG Protect)
FORCEINLINE USHORT MiIncrementPageTableReferences(IN PVOID Address)
PMMADDRESS_NODE NTAPI MiGetNextNode(IN PMMADDRESS_NODE Node)
VOID NTAPI MiInsertVad(_Inout_ PMMVAD Vad, _Inout_ PMM_AVL_TABLE VadRoot)
FORCEINLINE PMMPFN MI_PFN_ELEMENT(IN PFN_NUMBER Pfn)
FORCEINLINE VOID MiLockProcessWorkingSet(IN PEPROCESS Process, IN PETHREAD Thread)
FORCEINLINE VOID MiLockProcessWorkingSetUnsafe(IN PEPROCESS Process, IN PETHREAD Thread)
VOID NTAPI MmProbeAndLockPages(IN PMDL Mdl, IN KPROCESSOR_MODE AccessMode, IN LOCK_OPERATION Operation)
VOID NTAPI MmUnlockPages(IN PMDL Mdl)
PVOID NTAPI MmMapLockedPagesSpecifyCache(IN PMDL Mdl, IN KPROCESSOR_MODE AccessMode, IN MEMORY_CACHING_TYPE CacheType, IN PVOID BaseAddress, IN ULONG BugCheckOnFailure, IN ULONG Priority)
VOID NTAPI MmUnmapLockedPages(IN PVOID BaseAddress, IN PMDL Mdl)
BOOLEAN NTAPI MmIsAddressValid(IN PVOID VirtualAddress)
#define MiAddressToPte(x)
#define MiAddressToPde(x)
#define ExFreePoolWithTag(_P, _T)
FORCEINLINE PVOID ExAllocatePoolZero(ULONG PoolType, SIZE_T NumberOfBytes, ULONG Tag)
static const OBJECT_ATTRIBUTES const LARGE_INTEGER ULONG
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define MM_SHARED_USER_DATA_VA
#define KeGetPreviousMode()
_In_ HANDLE ProcessHandle
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR ZeroBits
_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
__kernel_entry _Inout_ _Inout_ PSIZE_T RegionSize
__kernel_entry _Inout_ _Inout_ PSIZE_T _In_ ULONG FreeType
struct _MEMORY_BASIC_INFORMATION * PMEMORY_BASIC_INFORMATION
@ MemoryBasicVlmInformation
@ VadDevicePhysicalMemory
enum _MEMORY_INFORMATION_CLASS MEMORY_INFORMATION_CLASS
struct _MEMORY_BASIC_INFORMATION MEMORY_BASIC_INFORMATION
#define PAGE_ROUND_DOWN(x)
#define PAGE_EXECUTE_READ
#define NtCurrentProcess()
#define PAGE_EXECUTE_WRITECOPY
#define PAGE_EXECUTE_READWRITE
_In_ ULONG _In_ ULONG _In_ ULONG Length
FORCEINLINE VOID KeInvalidateTlbEntry(IN PVOID Address)
FORCEINLINE VOID KeSweepICache(IN PVOID BaseAddress, IN SIZE_T FlushSize)
FORCEINLINE PMMPXE MiPdeToPxe(PMMPDE PointerPde)
FORCEINLINE PVOID MiPpeToAddress(PMMPTE PointerPpe)
FORCEINLINE PMMPDE MiPdeToPpe(PMMPDE PointerPde)
FORCEINLINE PMMPPE MiPteToPpe(PMMPTE PointerPte)
FORCEINLINE PMMPTE MiPxeToPte(PMMPXE PointerPxe)
#define MiIsPteOnPpeBoundary(PointerPte)
FORCEINLINE PMMPTE MiPpeToPte(PMMPPE PointerPpe)
#define MM_HIGHEST_VAD_ADDRESS
#define _MI_PAGING_LEVELS
FORCEINLINE PMMPTE MiAddressToPpe(PVOID Address)
#define MiProtoPteToPte(x)
FORCEINLINE PMMPTE MiAddressToPxe(PVOID Address)
#define MiIsPteOnPdeBoundary(PointerPte)
FORCEINLINE BOOLEAN MI_IS_MAPPED_PTE(PMMPTE PointerPte)
#define MiIsPteOnPxeBoundary(PointerPte)
FORCEINLINE PMMPXE MiPteToPxe(PMMPTE PointerPte)
FORCEINLINE PVOID MiPxeToAddress(PMMPTE PointerPxe)
#define MiPdeToAddress(_Pde)
#define MiPteToAddress(_Pte)
VOID NTAPI KeFlushCurrentTb(VOID)
FORCEINLINE PMMSUPPORT MmGetCurrentAddressSpace(VOID)
FORCEINLINE PMMPFN MiGetPfnEntry(IN PFN_NUMBER Pfn)
FORCEINLINE VOID MmLockAddressSpace(PMMSUPPORT AddressSpace)
#define MM_VIRTMEM_GRANULARITY
#define MI_ASSERT_PFN_LOCK_HELD()
NTSTATUS NTAPI MmQuerySectionView(PMEMORY_AREA MemoryArea, PVOID Address, PMEMORY_BASIC_INFORMATION Info, PSIZE_T ResultLength)
NTSTATUS NTAPI MmProtectSectionView(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PVOID BaseAddress, SIZE_T Length, ULONG Protect, PULONG OldProtect)
FORCEINLINE VOID MmUnlockAddressSpace(PMMSUPPORT AddressSpace)
_Out_ PKAPC_STATE ApcState
#define MI_IS_MEMORY_AREA_VAD(Vad)
#define MI_IS_ROSMM_VAD(Vad)
#define MEMORY_AREA_SECTION_VIEW
NTSTATUS NTAPI MmAccessFault(IN ULONG FaultCode, IN PVOID Address, IN KPROCESSOR_MODE Mode, IN PVOID TrapInformation)
const LUID SeLockMemoryPrivilege
VOID NTAPI KeFlushEntireTb(IN BOOLEAN Invalid, IN BOOLEAN AllProcessors)
BOOLEAN NTAPI KeAreAllApcsDisabled(VOID)
MMSUPPORT MmSystemCacheWs
LONG MiGetExceptionInfo(IN PEXCEPTION_POINTERS ExceptionInfo, OUT PBOOLEAN HaveBadAddress, OUT PULONG_PTR BadAddress)
NTSTATUS NTAPI NtResetWriteWatch(IN HANDLE ProcessHandle, IN PVOID BaseAddress, IN SIZE_T RegionSize)
static NTSTATUS MiLockVirtualMemory(IN OUT PVOID *BaseAddress, IN OUT PSIZE_T RegionSize, IN ULONG MapType)
NTSTATUS NTAPI NtGetWriteWatch(IN HANDLE ProcessHandle, IN ULONG Flags, IN PVOID BaseAddress, IN SIZE_T RegionSize, IN PVOID *UserAddressArray, OUT PULONG_PTR EntriesInUserAddressArray, OUT PULONG Granularity)
NTSTATUS NTAPI NtFreeVirtualMemory(IN HANDLE ProcessHandle, IN PVOID *UBaseAddress, IN PSIZE_T URegionSize, IN ULONG FreeType)
NTSTATUS NTAPI MmFlushVirtualMemory(IN PEPROCESS Process, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T RegionSize, OUT PIO_STATUS_BLOCK IoStatusBlock)
NTSTATUS NTAPI NtWriteVirtualMemory(IN HANDLE ProcessHandle, IN PVOID BaseAddress, IN PVOID Buffer, IN SIZE_T NumberOfBytesToWrite, OUT PSIZE_T NumberOfBytesWritten OPTIONAL)
#define MI_MAPPED_COPY_PAGES
VOID NTAPI MiProcessValidPteList(IN PMMPTE *ValidPteList, IN ULONG Count)
PVOID NTAPI MmGetVirtualForPhysical(IN PHYSICAL_ADDRESS PhysicalAddress)
NTSTATUS NTAPI MmCopyVirtualMemory(IN PEPROCESS SourceProcess, IN PVOID SourceAddress, IN PEPROCESS TargetProcess, OUT PVOID TargetAddress, IN SIZE_T BufferSize, IN KPROCESSOR_MODE PreviousMode, OUT PSIZE_T ReturnSize)
ULONG NTAPI MiGetPageProtection(IN PMMPTE PointerPte)
NTSTATUS NTAPI NtProtectVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *UnsafeBaseAddress, IN OUT SIZE_T *UnsafeNumberOfBytesToProtect, IN ULONG NewAccessProtection, OUT PULONG UnsafeOldAccessProtection)
VOID NTAPI MiFlushTbAndCapture(IN PMMVAD FoundVad, IN PMMPTE PointerPte, IN ULONG ProtectionMask, IN PMMPFN Pfn1, IN BOOLEAN CaptureDirtyBit)
NTSTATUS NTAPI NtReadVirtualMemory(IN HANDLE ProcessHandle, IN PVOID BaseAddress, OUT PVOID Buffer, IN SIZE_T NumberOfBytesToRead, OUT PSIZE_T NumberOfBytesRead OPTIONAL)
VOID NTAPI MiDeletePte(IN PMMPTE PointerPte, IN PVOID VirtualAddress, IN PEPROCESS CurrentProcess, IN PMMPTE PrototypePte)
NTSTATUS NTAPI NtQueryVirtualMemory(IN HANDLE ProcessHandle, IN PVOID BaseAddress, IN MEMORY_INFORMATION_CLASS MemoryInformationClass, OUT PVOID MemoryInformation, IN SIZE_T MemoryInformationLength, OUT PSIZE_T ReturnLength)
ULONG NTAPI MiMakeSystemAddressValidPfn(IN PVOID VirtualAddress, IN KIRQL OldIrql)
ULONG NTAPI MiCalculatePageCommitment(IN ULONG_PTR StartingAddress, IN ULONG_PTR EndingAddress, IN PMMVAD Vad, IN PEPROCESS Process)
NTSTATUS NTAPI NtLockVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T NumberOfBytesToLock, IN ULONG MapType)
FORCEINLINE VOID MI_LOCK_VA(PMMPFN Pfn1, ULONG LockType)
NTSTATUS NTAPI MiDoPoolCopy(IN PEPROCESS SourceProcess, IN PVOID SourceAddress, IN PEPROCESS TargetProcess, OUT PVOID TargetAddress, IN SIZE_T BufferSize, IN KPROCESSOR_MODE PreviousMode, OUT PSIZE_T ReturnSize)
PHYSICAL_ADDRESS NTAPI MmGetPhysicalAddress(PVOID Address)
static NTSTATUS MiUnlockVirtualMemory(IN OUT PVOID *BaseAddress, IN OUT PSIZE_T RegionSize, IN ULONG MapType)
VOID NTAPI MmUnsecureVirtualMemory(IN PVOID SecureMem)
FORCEINLINE VOID MI_UNLOCK_VA(PMMPFN Pfn1, ULONG LockType)
NTSTATUS NTAPI NtFlushVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T NumberOfBytesToFlush, OUT PIO_STATUS_BLOCK IoStatusBlock)
NTSTATUS NTAPI MiDoMappedCopy(IN PEPROCESS SourceProcess, IN PVOID SourceAddress, IN PEPROCESS TargetProcess, OUT PVOID TargetAddress, IN SIZE_T BufferSize, IN KPROCESSOR_MODE PreviousMode, OUT PSIZE_T ReturnSize)
NTSTATUS NTAPI MiProtectVirtualMemory(IN PEPROCESS Process, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T NumberOfBytesToProtect, IN ULONG NewAccessProtection, OUT PULONG OldAccessProtection OPTIONAL)
VOID NTAPI MiMakePdeExistAndMakeValid(IN PMMPDE PointerPde, IN PEPROCESS TargetProcess, IN KIRQL OldIrql)
ULONG NTAPI MiMakeSystemAddressValid(IN PVOID PageTableVirtualAddress, IN PEPROCESS CurrentProcess)
#define MI_MAX_TRANSFER_SIZE
ULONG NTAPI MiDecommitPages(IN PVOID StartingAddress, IN PMMPTE EndingPte, IN PEPROCESS Process, IN PMMVAD Vad)
VOID NTAPI MiDeleteVirtualAddresses(_In_ ULONG_PTR Va, _In_ ULONG_PTR EndingAddress, _In_opt_ PMMVAD Vad)
PVOID NTAPI MmSecureVirtualMemory(IN PVOID Address, IN SIZE_T Length, IN ULONG Mode)
static NTSTATUS MiCheckVadsForLockOperation(_Inout_ PVOID *BaseAddress, _Inout_ PSIZE_T RegionSize, _Inout_ PVOID *EndAddress)
NTSTATUS NTAPI NtUnlockVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T NumberOfBytesToUnlock, IN ULONG MapType)
FORCEINLINE BOOLEAN MI_IS_LOCKED_VA(PMMPFN Pfn1, ULONG LockType)
NTSTATUS NTAPI MiQueryMemoryBasicInformation(IN HANDLE ProcessHandle, IN PVOID BaseAddress, OUT PVOID MemoryInformation, IN SIZE_T MemoryInformationLength, OUT PSIZE_T ReturnLength)
ULONG NTAPI MiQueryAddressState(IN PVOID Va, IN PMMVAD Vad, IN PEPROCESS TargetProcess, OUT PULONG ReturnedProtect, OUT PVOID *NextVa)
BOOLEAN NTAPI MiIsEntireRangeCommitted(IN ULONG_PTR StartingAddress, IN ULONG_PTR EndingAddress, IN PMMVAD Vad, IN PEPROCESS Process)
PFN_COUNT NTAPI MiDeleteSystemPageableVm(IN PMMPTE PointerPte, IN PFN_NUMBER PageCount, IN ULONG Flags, OUT PPFN_NUMBER ValidPages)
NTSTATUS NTAPI NtAllocateVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *UBaseAddress, IN ULONG_PTR ZeroBits, IN OUT PSIZE_T URegionSize, IN ULONG AllocationType, IN ULONG Protect)
NTSTATUS NTAPI NtFlushInstructionCache(_In_ HANDLE ProcessHandle, _In_opt_ PVOID BaseAddress, _In_ SIZE_T FlushSize)
#define MI_POOL_COPY_BYTES
const ULONG MmProtectToValue[32]
POBJECT_TYPE PsProcessType
BOOLEAN NTAPI SeSinglePrivilegeCheck(_In_ LUID PrivilegeValue, _In_ KPROCESSOR_MODE PreviousMode)
Checks if a single privilege is present in the context of the calling thread.
#define STATUS_QUOTA_EXCEEDED
#define STATUS_UNABLE_TO_DELETE_SECTION
#define STATUS_WAS_LOCKED
#define STATUS_UNABLE_TO_FREE_VM
#define STATUS_MEMORY_NOT_ALLOCATED
#define STATUS_INCOMPATIBLE_FILE_MAP
#define STATUS_INVALID_PARAMETER_4
#define STATUS_ALREADY_COMMITTED
#define STATUS_INVALID_PARAMETER_2
#define STATUS_FREE_VM_NOT_AT_BASE
#define STATUS_PROCESS_IS_TERMINATING
#define STATUS_ACCESS_VIOLATION
#define STATUS_INVALID_PARAMETER_6
#define STATUS_NOT_LOCKED
#define STATUS_IN_PAGE_ERROR
#define STATUS_CONFLICTING_ADDRESSES
#define STATUS_INVALID_PAGE_PROTECTION
#define STATUS_GUARD_PAGE_VIOLATION
#define STATUS_NOT_COMMITTED
#define STATUS_INVALID_PARAMETER_3
#define STATUS_INVALID_PARAMETER_5
#define STATUS_PARTIAL_COPY
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
VOID NTAPI KeStackAttachProcess(IN PKPROCESS Process, OUT PRKAPC_STATE ApcState)
VOID NTAPI KeUnstackDetachProcess(IN PRKAPC_STATE ApcState)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionInformation()
#define _SEH2_YIELD(__stmt)
NTSTATUS NTAPI PsChargeProcessNonPagedPoolQuota(_In_ PEPROCESS Process, _In_ SIZE_T Amount)
Charges the non paged pool quota of a given process.
VOID NTAPI PsReturnProcessNonPagedPoolQuota(_In_ PEPROCESS Process, _In_ SIZE_T Amount)
Returns the non paged quota pool that the process was taking up.
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
PVOID MmHighestUserAddress
#define ProbeForWritePointer(Ptr)
#define ProbeForWriteSize_t(Ptr)
#define ProbeForWriteUlong(Ptr)
#define ProbeForWriteIoStatusBlock(Ptr)
PULONG MinorVersion OPTIONAL
union _CONTROL_AREA::@2704 u
struct _EXCEPTION_RECORD * ExceptionRecord
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
struct _MMADDRESS_NODE * RightChild
struct _MMPFN::@1843::@1849 e2
struct _MMVAD * RightChild
struct _MMVAD * LeftChild
PCONTROL_AREA ControlArea
ULONG_PTR NumberGenericTableElements
MMADDRESS_NODE BalancedRoot
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_INFO_LENGTH_MISMATCH
#define STATUS_INSUFFICIENT_RESOURCES
#define ALIGN_UP_POINTER_BY(ptr, align)
#define ALIGN_DOWN_POINTER_BY(ptr, align)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_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
_Out_ PBOOLEAN QuotaCharged
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG AddressSpace
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER _Outptr_ PVOID * TargetAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS SourceAddress
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define ROUND_TO_PAGES(Size)
#define MmInitializeMdl(_MemoryDescriptorList, _BaseVa, _Length)
#define BYTES_TO_PAGES(Size)
_Must_inspect_result_ _In_ ULONG NewProtect
#define PAGE_WRITECOMBINE
#define ObDereferenceObject
#define PsGetCurrentProcess
_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