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)
1380 (
TempPte.u.Soft.Prototype == 1))
1483 PMMPTE PointerPte, ProtoPte;
1485#if (_MI_PAGING_LEVELS >= 3)
1488#if (_MI_PAGING_LEVELS >= 4)
1503#if (_MI_PAGING_LEVELS >= 3)
1506#if (_MI_PAGING_LEVELS >= 4)
1515#if (_MI_PAGING_LEVELS >= 4)
1517 if (PointerPxe->
u.
Long == 0)
1531#if (_MI_PAGING_LEVELS >= 3)
1533 if (PointerPpe->
u.
Long == 0)
1549 if (PointerPde->
u.
Long == 0)
1584 ((
TempPte.u.Soft.Prototype == 0) ||
1606 (
TempPte.u.Soft.Prototype == 1) &&
1607 (Vad->u.VadFlags.PrivateMemory == 0) &&
1625 if ((Vad->u.VadFlags.PrivateMemory == 0) && (Vad->ControlArea))
1638 TempProtoPte = *ProtoPte;
1639 if (TempProtoPte.
u.
Long)
1650 else if (Vad->u.VadFlags.MemCommit)
1747 (
PVOID*)&TargetProcess,
1771 DPRINT1(
"Process is dying\n");
1794 if (BaseVpn < Vad->StartingVpn)
1868 MemoryInfo.
Type = 0;
1915 DPRINT1(
"MmQuerySectionView failed. MemoryArea=%p (%p-%p), BaseAddress=%p\n",
1916 Vad, Vad->StartingVpn, Vad->EndingVpn,
BaseAddress);
1993 DPRINT(
"Base: %p AllocBase: %p AllocProtect: %lx Protect: %lx "
1994 "State: %lx Type: %lx Size: %lx\n",
2009 PMMPTE PointerPte, LastPte;
2012#if _MI_PAGING_LEVELS >= 3
2015#if _MI_PAGING_LEVELS == 4
2031 while (PointerPte <= LastPte)
2033#if _MI_PAGING_LEVELS == 4
2043 if (PointerPxe->
u.
Long != 0)
2052 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2061#if _MI_PAGING_LEVELS >= 3
2070 if (PointerPpe->
u.
Long != 0)
2079 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2083#if _MI_PAGING_LEVELS == 4
2095 if (PointerPde->
u.
Long != 0)
2107 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2112#if _MI_PAGING_LEVELS >= 3
2114#if _MI_PAGING_LEVELS == 4
2125 if (PointerPte->
u.
Long == 0)
2128 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2146#if _MI_PAGING_LEVELS >= 3
2148#if _MI_PAGING_LEVELS == 4
2168 ULONG_PTR StartingAddress, EndingAddress;
2169 PMMPTE PointerPte, LastPte;
2173 ULONG ProtectionMask, OldProtect;
2190 DPRINT1(
"Invalid protection mask\n");
2199 DPRINT1(
"Process is dying\n");
2209 if (
Result != TableFoundNode)
2211 DPRINT(
"Could not find a VAD for this allocation\n");
2226 *NumberOfBytesToProtect,
2227 NewAccessProtection,
2228 OldAccessProtection);
2246 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2254 DPRINT1(
"Trying to change protection of a NoChange VAD\n");
2265 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2273 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2282 DPRINT1(
"Invalid protection flags for section\n");
2291 DPRINT1(
"Fixme: Not checking for valid protection\n");
2295 DPRINT1(
"Section protection not yet supported\n");
2304 DPRINT1(
"Invalid protection flags for private memory\n");
2320 DPRINT1(
"The entire range is not committed\n");
2335 if (PointerPte->
u.
Long != 0)
2348 while (PointerPte <= LastPte)
2358 PteContents = *PointerPte;
2359 if (PteContents.
u.
Long == 0)
2433 *NumberOfBytesToProtect = EndingAddress - StartingAddress + 1;
2435 *OldAccessProtection = OldProtect;
2451#if _MI_PAGING_LEVELS >= 3
2453#if _MI_PAGING_LEVELS == 4
2475 (PointerPde->u.Hard.Valid))
2494#if _MI_PAGING_LEVELS == 4
2505#if _MI_PAGING_LEVELS >= 3
2527 ASSERT(PointerPde->u.Hard.Valid == 1);
2535 !PointerPde->u.Hard.Valid);
2599 ULONG CommitReduction = 0;
2600 PMMPTE ValidPteList[256];
2620 while (PointerPte <= EndingPte)
2650 PteContents = *PointerPte;
2651 if (PteContents.
u.
Long)
2684 if (PteCount == 256)
2689 ValidPteList[PteCount++] = PointerPte;
2721 if (PointerPte > CommitPte) CommitReduction++;
2738 return CommitReduction;
2835 if (NumberOfBytesToRead)
2855 NumberOfBytesToRead,
2869 if (NumberOfBytesRead)
2949 if (NumberOfBytesToWrite)
2969 NumberOfBytesToWrite,
2983 if (NumberOfBytesWritten)
3083 ULONG OldAccessProtection;
3087 SIZE_T NumberOfBytesToProtect = 0;
3134 NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
3151 NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
3189 if (CurrentProcess !=
Process)
3203 &NumberOfBytesToProtect,
3204 NewAccessProtection,
3205 &OldAccessProtection);
3225 *UnsafeOldAccessProtection = OldAccessProtection;
3227 *UnsafeNumberOfBytesToProtect = NumberOfBytesToProtect;
3317 while (CurrentVa < *EndAddress)
3332 *EndAddress = CurrentVa;
3353 PVOID CurrentVa, EndAddress;
3354 PMMPTE PointerPte, LastPte;
3356#if (_MI_PAGING_LEVELS >= 3)
3359#if (_MI_PAGING_LEVELS == 4)
3389 while (CurrentVa < EndAddress)
3391 (
void)(*(
volatile CHAR*)CurrentVa);
3409#if (_MI_PAGING_LEVELS >= 3)
3412#if (_MI_PAGING_LEVELS == 4)
3474#if (_MI_PAGING_LEVELS >= 3)
3477#if (_MI_PAGING_LEVELS == 4)
3480 }
while (PointerPte <= LastPte);
3505 PVOID CapturedBaseAddress;
3506 SIZE_T CapturedBytesToLock;
3546 CapturedBytesToLock = *NumberOfBytesToLock;
3610 if (CurrentProcess !=
Process)
3623 &CapturedBytesToLock,
3645 *NumberOfBytesToLock = CapturedBytesToLock;
3673 PMMPTE PointerPte, LastPte;
3675#if (_MI_PAGING_LEVELS >= 3)
3678#if (_MI_PAGING_LEVELS == 4)
3710#if (_MI_PAGING_LEVELS >= 3)
3713#if (_MI_PAGING_LEVELS == 4)
3756 DPRINT1(
"FIXME: Should remove the page from WS\n");
3766#if (_MI_PAGING_LEVELS >= 3)
3769#if (_MI_PAGING_LEVELS == 4)
3772 }
while (PointerPte <= LastPte);
3777 goto CleanupWithWsLock;
3785#if (_MI_PAGING_LEVELS >= 3)
3788#if (_MI_PAGING_LEVELS == 4)
3804#if (_MI_PAGING_LEVELS >= 3)
3807#if (_MI_PAGING_LEVELS == 4)
3810 }
while (PointerPte <= LastPte);
3841 PVOID CapturedBaseAddress;
3842 SIZE_T CapturedBytesToUnlock;
3882 CapturedBytesToUnlock = *NumberOfBytesToUnlock;
3946 if (CurrentProcess !=
Process)
3959 &CapturedBytesToUnlock,
3981 *NumberOfBytesToUnlock = CapturedBytesToUnlock;
4008 PVOID CapturedBaseAddress;
4009 SIZE_T CapturedBytesToFlush;
4034 CapturedBytesToFlush = *NumberOfBytesToFlush;
4051 CapturedBytesToFlush = *NumberOfBytesToFlush;
4085 &CapturedBaseAddress,
4086 &CapturedBytesToFlush,
4103 *NumberOfBytesToFlush = 0;
4172 CapturedEntryCount = *EntriesInUserAddressArray;
4194 CapturedEntryCount *
sizeof(
PVOID),
4211 CapturedEntryCount = *EntriesInUserAddressArray;
4212 ASSERT(CapturedEntryCount != 0);
4270 *EntriesInUserAddressArray = 0;
4384 DPRINT(
"Querying class %d about address: %p\n", MemoryInformationClass,
BaseAddress);
4396 MemoryInformationLength,
4413 switch(MemoryInformationClass)
4425 MemoryInformationLength,
4439 MemoryInformationLength,
4445 DPRINT1(
"Unhandled memory information class %d\n", MemoryInformationClass);
4469 ULONG_PTR PRegionSize, StartingAddress, EndingAddress;
4475 ULONG ProtectionMask, QuotaCharge = 0, QuotaFree = 0;
4478 PMMPTE PointerPte, LastPte;
4486 DPRINT1(
"Too many zero bits\n");
4494 DPRINT1(
"Invalid Allocation Type\n");
4501 DPRINT1(
"No memory allocation base type\n");
4508 DPRINT1(
"Invalid use of MEM_RESET\n");
4518 DPRINT1(
"Must supply MEM_COMMIT with MEM_LARGE_PAGES\n");
4525 DPRINT1(
"Using illegal flags with MEM_LARGE_PAGES\n");
4533 DPRINT1(
"MEM_WRITE_WATCH used without MEM_RESERVE\n");
4543 DPRINT1(
"MEM_PHYSICAL used without MEM_RESERVE\n");
4550 DPRINT1(
"Using illegal flags with MEM_PHYSICAL\n");
4557 DPRINT1(
"MEM_PHYSICAL used without PAGE_READWRITE\n");
4566 DPRINT1(
"Invalid protection mask\n");
4582 PBaseAddress = *UBaseAddress;
4583 PRegionSize = *URegionSize;
4595 DPRINT1(
"Virtual allocation base above User Space\n");
4602 DPRINT1(
"Region size would overflow into kernel-memory\n");
4609 DPRINT1(
"Region size is invalid (zero)\n");
4635 if (CurrentProcess !=
Process)
4642 DPRINT(
"NtAllocateVirtualMemory: Process 0x%p, Address 0x%p, Zerobits %lu , RegionSize 0x%x, Allocation type 0x%x, Protect 0x%x.\n",
4653 DPRINT1(
"Privilege not held for MEM_LARGE_PAGES\n");
4655 goto FailPathNoLock;
4663 DPRINT1(
"MEM_LARGE_PAGES not supported\n");
4665 goto FailPathNoLock;
4669 DPRINT1(
"MEM_PHYSICAL not supported\n");
4671 goto FailPathNoLock;
4675 DPRINT1(
"MEM_WRITE_WATCH not supported\n");
4677 goto FailPathNoLock;
4691 DPRINT1(
"Copy on write not allowed through this path\n");
4693 goto FailPathNoLock;
4706 StartingAddress = 0;
4720 goto FailPathNoLock;
4733 StartingAddress = (
ULONG_PTR)PBaseAddress;
4741 goto FailPathNoLock;
4752 DPRINT1(
"Failed to allocate a VAD!\n");
4754 goto FailPathNoLock;
4774 DPRINT1(
"Failed to insert the VAD!\n");
4776 goto FailPathNoLock;
4795 *URegionSize = PRegionSize;
4796 *UBaseAddress = (
PVOID)StartingAddress;
4805 DPRINT(
"Reserved %x bytes at %p.\n", PRegionSize, StartingAddress);
4817 PRegionSize = EndingAddress - StartingAddress + 1;
4826 DPRINT1(
"Process is dying\n");
4838 if (
Result != TableFoundNode)
4840 DPRINT1(
"Could not find a VAD for this allocation\n");
4848 DPRINT(
"MEM_RESET not supported\n");
4857 if ((FoundVad->u.VadFlags.VadType ==
VadAwe) ||
4861 DPRINT1(
"Illegal VAD for attempting a MEM_COMMIT\n");
4869 if (((StartingAddress >>
PAGE_SHIFT) < FoundVad->StartingVpn) ||
4870 ((EndingAddress >>
PAGE_SHIFT) > FoundVad->EndingVpn))
4872 DPRINT1(
"Address range does not fit into the VAD\n");
4882 DPRINT1(
"Illegal commit of non-ARM3 section!\n");
4890 if (FoundVad->u.VadFlags.PrivateMemory ==
FALSE)
4897 DPRINT1(
"Large page sections cannot be VirtualAlloc'd\n");
4908 DPRINT1(
"Cannot use caching flags with anything but rotate VADs\n");
4917 if (FoundVad->u.VadFlags.NoChange)
4934 DPRINT1(
"Secured VAD being messed around with\n");
4942 ASSERT(FoundVad->ControlArea->FilePointer ==
NULL);
4950 DPRINT1(
"Invalid page protection for rotate VAD\n");
4960 QuotaCharge = (
ULONG)(LastPte - PointerPte + 1);
4966 TempPte = FoundVad->ControlArea->Segment->SegmentPteTemplate;
4968 while (PointerPte <= LastPte)
4973 if (PointerPte->
u.
Long == 0)
4987 ASSERT(QuotaCharge >= QuotaFree);
4988 QuotaCharge -= QuotaFree;
4989 FoundVad->ControlArea->Segment->NumberOfCommittedPages += QuotaCharge;
5014 DPRINT1(
"Write copy attempted when not allowed\n");
5023 TempPte.u.Soft.Protection = ProtectionMask;
5038 FoundVad->u.VadFlags.CommitCharge += (1 + LastPte - PointerPte);
5039 Process->CommitCharge += (1 + LastPte - PointerPte);
5054 while (PointerPte <= LastPte)
5071 if (PointerPte->
u.
Long == 0)
5107 ChangeProtection =
TRUE;
5137 if (ChangeProtection)
5139 PVOID ProtectBaseAddress = (
PVOID)StartingAddress;
5140 SIZE_T ProtectSize = PRegionSize;
5141 ULONG OldProtection;
5147 &ProtectBaseAddress,
5170 *URegionSize = PRegionSize;
5171 *UBaseAddress = (
PVOID)StartingAddress;
5199 LONG_PTR AlreadyDecommitted, CommitReduction = 0;
5201 ULONG_PTR StartingAddress, EndingAddress;
5241 PBaseAddress = *UBaseAddress;
5242 PRegionSize = *URegionSize;
5255 DPRINT1(
"Virtual free base above User Space\n");
5264 DPRINT1(
"Region size would overflow into kernel-memory\n");
5290 if (CurrentProcess !=
Process)
5297 DPRINT(
"NtFreeVirtualMemory: Process 0x%p, Address 0x%p, Size 0x%Ix, FreeType 0x%08lx\n",
5325 DPRINT1(
"Unable to find VAD for address 0x%p\n", StartingAddress);
5335 DPRINT1(
"Address 0x%p is beyond the VAD\n", EndingAddress);
5347 DPRINT(
"Attempt to free section memory\n");
5380 DPRINT1(
"Address 0x%p does not match the VAD\n", PBaseAddress);
5492 DPRINT1(
"Failed to allocate a VAD!\n");
5502 DPRINT1(
"Ran out of process quota whilst creating new VAD!\n");
5547 StartingAddress - 1,
5575 PRegionSize = EndingAddress - StartingAddress + 1;
5576 Process->CommitCharge -= CommitReduction;
5598 *URegionSize = PRegionSize;
5599 *UBaseAddress = (
PVOID)StartingAddress;
5616 DPRINT1(
"Trying to decommit from invalid VAD\n");
5630 DPRINT1(
"Decomitting non-committed memory\n");
5650 ASSERT(CommitReduction >= 0);
5714 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
#define STATUS_ACCESS_VIOLATION
_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
#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
static OUT PIO_STATUS_BLOCK IoStatusBlock
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_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::@2796 u
struct _EXCEPTION_RECORD * ExceptionRecord
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
struct _MMADDRESS_NODE * RightChild
struct _MMPFN::@1931::@1937 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