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)
536#if (_MI_PAGING_LEVELS >= 3)
539#if (_MI_PAGING_LEVELS >= 4)
549 if ((Vad) && (Vad->u.VadFlags.Spare == 1))
return;
555 if (!(Vad) || (Vad->u.VadFlags.PrivateMemory) || !(Vad->FirstPrototypePte))
564 LastPrototypePte = Vad->FirstPrototypePte + 1;
571 while (Va <= EndingAddress)
573#if (_MI_PAGING_LEVELS >= 4)
579 if (!PointerPxe->
u.
Long)
593#if (_MI_PAGING_LEVELS >= 3)
599 if (!PointerPpe->
u.
Long)
615 if (!PointerPde->
u.
Long)
635 ASSERT(Va <= EndingAddress);
638 if ((AddressGap) && (LastPrototypePte))
673 if ((LastPrototypePte) && (
PrototypePte > LastPrototypePte))
694 (
TempPte.u.Soft.Prototype == 1))
736 }
while ((Va & (
PDE_MAPPED_VA - 1)) && (Va <= EndingAddress));
741 if (Va > EndingAddress)
return;
759 *HaveBadAddress =
FALSE;
781 *HaveBadAddress =
TRUE;
804 SIZE_T TotalSize, CurrentSize, RemainingSize;
820 CurrentSize = TotalSize;
826 while (RemainingSize > 0)
831 if (RemainingSize < CurrentSize) CurrentSize = RemainingSize;
858 FailedInProbe =
TRUE;
868 FailedInProbe =
FALSE;
922 FailedInProbe =
TRUE;
932 FailedInProbe =
FALSE;
938 RtlCopyMemory(CurrentTargetAddress, MdlAddress, CurrentSize);
998 RemainingSize -= CurrentSize;
999 CurrentAddress = (
PVOID)((
ULONG_PTR)CurrentAddress + CurrentSize);
1000 CurrentTargetAddress = (
PVOID)((
ULONG_PTR)CurrentTargetAddress + CurrentSize);
1004 if (MdlAddress !=
NULL)
1028 SIZE_T TotalSize, CurrentSize, RemainingSize;
1038 DPRINT(
"Copying %Iu bytes from process %p (address %p) to process %p (Address %p)\n",
1046 CurrentSize = TotalSize;
1057 PoolAddress = (
PVOID)StackBuffer;
1066 HavePoolAddress =
TRUE;
1072 while (RemainingSize > 0)
1077 if (RemainingSize < CurrentSize) CurrentSize = RemainingSize;
1101 FailedInProbe =
TRUE;
1111 FailedInProbe =
FALSE;
1177 FailedInProbe =
TRUE;
1187 FailedInProbe =
FALSE;
1193 RtlCopyMemory(CurrentTargetAddress, PoolAddress, CurrentSize);
1247 RemainingSize -= CurrentSize;
1248 CurrentAddress = (
PVOID)((
ULONG_PTR)CurrentAddress + CurrentSize);
1257 if (HavePoolAddress)
1374 (
TempPte.u.Soft.Prototype == 1))
1477 PMMPTE PointerPte, ProtoPte;
1479#if (_MI_PAGING_LEVELS >= 3)
1482#if (_MI_PAGING_LEVELS >= 4)
1497#if (_MI_PAGING_LEVELS >= 3)
1500#if (_MI_PAGING_LEVELS >= 4)
1509#if (_MI_PAGING_LEVELS >= 4)
1511 if (PointerPxe->
u.
Long == 0)
1525#if (_MI_PAGING_LEVELS >= 3)
1527 if (PointerPpe->
u.
Long == 0)
1543 if (PointerPde->
u.
Long == 0)
1578 ((
TempPte.u.Soft.Prototype == 0) ||
1600 (
TempPte.u.Soft.Prototype == 1) &&
1601 (Vad->u.VadFlags.PrivateMemory == 0) &&
1619 if ((Vad->u.VadFlags.PrivateMemory == 0) && (Vad->ControlArea))
1632 TempProtoPte = *ProtoPte;
1633 if (TempProtoPte.
u.
Long)
1644 else if (Vad->u.VadFlags.MemCommit)
1742 (
PVOID*)&TargetProcess,
1766 DPRINT1(
"Process is dying\n");
1789 if (BaseVpn < Vad->StartingVpn)
1863 MemoryInfo.
Type = 0;
1913 DPRINT1(
"MmQuerySectionView failed. MemoryArea=%p (%p-%p), BaseAddress=%p\n",
1991 DPRINT(
"Base: %p AllocBase: %p AllocProtect: %lx Protect: %lx "
1992 "State: %lx Type: %lx Size: %lx\n",
2007 PMMPTE PointerPte, LastPte;
2010#if _MI_PAGING_LEVELS >= 3
2013#if _MI_PAGING_LEVELS == 4
2029 while (PointerPte <= LastPte)
2031#if _MI_PAGING_LEVELS == 4
2041 if (PointerPxe->
u.
Long != 0)
2050 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2059#if _MI_PAGING_LEVELS >= 3
2068 if (PointerPpe->
u.
Long != 0)
2077 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2081#if _MI_PAGING_LEVELS == 4
2093 if (PointerPde->
u.
Long != 0)
2105 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2110#if _MI_PAGING_LEVELS >= 3
2112#if _MI_PAGING_LEVELS == 4
2123 if (PointerPte->
u.
Long == 0)
2126 if (!Vad->u.VadFlags.MemCommit)
return FALSE;
2144#if _MI_PAGING_LEVELS >= 3
2146#if _MI_PAGING_LEVELS == 4
2166 ULONG OldAccessProtection_;
2181 if (OldAccessProtection ==
NULL) OldAccessProtection = &OldAccessProtection_;
2187 *NumberOfBytesToProtect,
2188 NewAccessProtection,
2189 OldAccessProtection);
2207 ULONG_PTR StartingAddress, EndingAddress;
2208 PMMPTE PointerPte, LastPte;
2212 ULONG ProtectionMask, OldProtect;
2229 DPRINT1(
"Invalid protection mask\n");
2238 DPRINT1(
"Process is dying\n");
2251 NumberOfBytesToProtect,
2252 NewAccessProtection,
2253 OldAccessProtection);
2261 if (
Result != TableFoundNode)
2263 DPRINT(
"Could not find a VAD for this allocation\n");
2281 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2289 DPRINT1(
"Trying to change protection of a NoChange VAD\n");
2300 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2308 DPRINT1(
"Illegal VAD for attempting to set protection\n");
2317 DPRINT1(
"Invalid protection flags for section\n");
2326 DPRINT1(
"Fixme: Not checking for valid protection\n");
2330 DPRINT1(
"Section protection not yet supported\n");
2339 DPRINT1(
"Invalid protection flags for private memory\n");
2355 DPRINT1(
"The entire range is not committed\n");
2370 if (PointerPte->
u.
Long != 0)
2383 while (PointerPte <= LastPte)
2393 PteContents = *PointerPte;
2394 if (PteContents.
u.
Long == 0)
2468 *NumberOfBytesToProtect = EndingAddress - StartingAddress + 1;
2470 *OldAccessProtection = OldProtect;
2486#if _MI_PAGING_LEVELS >= 3
2488#if _MI_PAGING_LEVELS == 4
2510 (PointerPde->u.Hard.Valid))
2529#if _MI_PAGING_LEVELS == 4
2540#if _MI_PAGING_LEVELS >= 3
2562 ASSERT(PointerPde->u.Hard.Valid == 1);
2570 !PointerPde->u.Hard.Valid);
2634 ULONG CommitReduction = 0;
2635 PMMPTE ValidPteList[256];
2655 while (PointerPte <= EndingPte)
2685 PteContents = *PointerPte;
2686 if (PteContents.
u.
Long)
2719 if (PteCount == 256)
2724 ValidPteList[PteCount++] = PointerPte;
2756 if (PointerPte > CommitPte) CommitReduction++;
2773 return CommitReduction;
2870 if (NumberOfBytesToRead)
2890 NumberOfBytesToRead,
2904 if (NumberOfBytesRead)
2984 if (NumberOfBytesToWrite)
3004 NumberOfBytesToWrite,
3018 if (NumberOfBytesWritten)
3118 ULONG OldAccessProtection;
3122 SIZE_T NumberOfBytesToProtect = 0;
3169 NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
3186 NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
3224 if (CurrentProcess !=
Process)
3238 &NumberOfBytesToProtect,
3239 NewAccessProtection,
3240 &OldAccessProtection);
3260 *UnsafeOldAccessProtection = OldAccessProtection;
3262 *UnsafeNumberOfBytesToProtect = NumberOfBytesToProtect;
3352 while (CurrentVa < *EndAddress)
3367 *EndAddress = CurrentVa;
3388 PVOID CurrentVa, EndAddress;
3389 PMMPTE PointerPte, LastPte;
3391#if (_MI_PAGING_LEVELS >= 3)
3394#if (_MI_PAGING_LEVELS == 4)
3424 while (CurrentVa < EndAddress)
3426 (
void)(*(
volatile CHAR*)CurrentVa);
3444#if (_MI_PAGING_LEVELS >= 3)
3447#if (_MI_PAGING_LEVELS == 4)
3509#if (_MI_PAGING_LEVELS >= 3)
3512#if (_MI_PAGING_LEVELS == 4)
3515 }
while (PointerPte <= LastPte);
3540 PVOID CapturedBaseAddress;
3541 SIZE_T CapturedBytesToLock;
3581 CapturedBytesToLock = *NumberOfBytesToLock;
3645 if (CurrentProcess !=
Process)
3658 &CapturedBytesToLock,
3680 *NumberOfBytesToLock = CapturedBytesToLock;
3708 PMMPTE PointerPte, LastPte;
3710#if (_MI_PAGING_LEVELS >= 3)
3713#if (_MI_PAGING_LEVELS == 4)
3745#if (_MI_PAGING_LEVELS >= 3)
3748#if (_MI_PAGING_LEVELS == 4)
3791 DPRINT1(
"FIXME: Should remove the page from WS\n");
3801#if (_MI_PAGING_LEVELS >= 3)
3804#if (_MI_PAGING_LEVELS == 4)
3807 }
while (PointerPte <= LastPte);
3812 goto CleanupWithWsLock;
3820#if (_MI_PAGING_LEVELS >= 3)
3823#if (_MI_PAGING_LEVELS == 4)
3839#if (_MI_PAGING_LEVELS >= 3)
3842#if (_MI_PAGING_LEVELS == 4)
3845 }
while (PointerPte <= LastPte);
3876 PVOID CapturedBaseAddress;
3877 SIZE_T CapturedBytesToUnlock;
3917 CapturedBytesToUnlock = *NumberOfBytesToUnlock;
3981 if (CurrentProcess !=
Process)
3994 &CapturedBytesToUnlock,
4016 *NumberOfBytesToUnlock = CapturedBytesToUnlock;
4043 PVOID CapturedBaseAddress;
4044 SIZE_T CapturedBytesToFlush;
4069 CapturedBytesToFlush = *NumberOfBytesToFlush;
4086 CapturedBytesToFlush = *NumberOfBytesToFlush;
4120 &CapturedBaseAddress,
4121 &CapturedBytesToFlush,
4138 *NumberOfBytesToFlush = 0;
4207 CapturedEntryCount = *EntriesInUserAddressArray;
4229 CapturedEntryCount *
sizeof(
PVOID),
4246 CapturedEntryCount = *EntriesInUserAddressArray;
4247 ASSERT(CapturedEntryCount != 0);
4305 *EntriesInUserAddressArray = 0;
4419 DPRINT(
"Querying class %d about address: %p\n", MemoryInformationClass,
BaseAddress);
4431 MemoryInformationLength,
4448 switch(MemoryInformationClass)
4460 MemoryInformationLength,
4474 MemoryInformationLength,
4480 DPRINT1(
"Unhandled memory information class %d\n", MemoryInformationClass);
4505 ULONG_PTR PRegionSize, StartingAddress, EndingAddress;
4511 ULONG ProtectionMask, QuotaCharge = 0, QuotaFree = 0;
4514 PMMPTE PointerPte, LastPte;
4522 DPRINT1(
"Too many zero bits\n");
4530 DPRINT1(
"Invalid Allocation Type\n");
4537 DPRINT1(
"No memory allocation base type\n");
4544 DPRINT1(
"Invalid use of MEM_RESET\n");
4554 DPRINT1(
"Must supply MEM_COMMIT with MEM_LARGE_PAGES\n");
4561 DPRINT1(
"Using illegal flags with MEM_LARGE_PAGES\n");
4569 DPRINT1(
"MEM_WRITE_WATCH used without MEM_RESERVE\n");
4579 DPRINT1(
"MEM_PHYSICAL used without MEM_RESERVE\n");
4586 DPRINT1(
"Using illegal flags with MEM_PHYSICAL\n");
4593 DPRINT1(
"MEM_PHYSICAL used without PAGE_READWRITE\n");
4602 DPRINT1(
"Invalid protection mask\n");
4618 PBaseAddress = *UBaseAddress;
4619 PRegionSize = *URegionSize;
4631 DPRINT1(
"Virtual allocation base above User Space\n");
4638 DPRINT1(
"Region size would overflow into kernel-memory\n");
4645 DPRINT1(
"Region size is invalid (zero)\n");
4671 if (CurrentProcess !=
Process)
4678 DPRINT(
"NtAllocateVirtualMemory: Process 0x%p, Address 0x%p, Zerobits %lu , RegionSize 0x%x, Allocation type 0x%x, Protect 0x%x.\n",
4689 DPRINT1(
"Privilege not held for MEM_LARGE_PAGES\n");
4691 goto FailPathNoLock;
4699 DPRINT1(
"MEM_LARGE_PAGES not supported\n");
4701 goto FailPathNoLock;
4705 DPRINT1(
"MEM_PHYSICAL not supported\n");
4707 goto FailPathNoLock;
4711 DPRINT1(
"MEM_WRITE_WATCH not supported\n");
4713 goto FailPathNoLock;
4727 DPRINT1(
"Copy on write not allowed through this path\n");
4729 goto FailPathNoLock;
4742 StartingAddress = 0;
4756 goto FailPathNoLock;
4769 StartingAddress = (
ULONG_PTR)PBaseAddress;
4777 goto FailPathNoLock;
4788 DPRINT1(
"Failed to allocate a VAD!\n");
4790 goto FailPathNoLock;
4810 DPRINT1(
"Failed to insert the VAD!\n");
4812 goto FailPathNoLock;
4831 *URegionSize = PRegionSize;
4832 *UBaseAddress = (
PVOID)StartingAddress;
4841 DPRINT(
"Reserved %x bytes at %p.\n", PRegionSize, StartingAddress);
4853 PRegionSize = EndingAddress - StartingAddress + 1;
4862 DPRINT1(
"Process is dying\n");
4874 if (
Result != TableFoundNode)
4876 DPRINT1(
"Could not find a VAD for this allocation\n");
4884 DPRINT(
"MEM_RESET not supported\n");
4893 if ((FoundVad->u.VadFlags.VadType ==
VadAwe) ||
4897 DPRINT1(
"Illegal VAD for attempting a MEM_COMMIT\n");
4905 if (((StartingAddress >>
PAGE_SHIFT) < FoundVad->StartingVpn) ||
4906 ((EndingAddress >>
PAGE_SHIFT) > FoundVad->EndingVpn))
4908 DPRINT1(
"Address range does not fit into the VAD\n");
4920 DPRINT1(
"Illegal commit of non-ARM3 section!\n");
4928 if (FoundVad->u.VadFlags.PrivateMemory ==
FALSE)
4935 DPRINT1(
"Large page sections cannot be VirtualAlloc'd\n");
4946 DPRINT1(
"Cannot use caching flags with anything but rotate VADs\n");
4955 if (FoundVad->u.VadFlags.NoChange)
4972 DPRINT1(
"Secured VAD being messed around with\n");
4980 ASSERT(FoundVad->ControlArea->FilePointer ==
NULL);
4988 DPRINT1(
"Invalid page protection for rotate VAD\n");
4998 QuotaCharge = (
ULONG)(LastPte - PointerPte + 1);
5004 TempPte = FoundVad->ControlArea->Segment->SegmentPteTemplate;
5006 while (PointerPte <= LastPte)
5011 if (PointerPte->
u.
Long == 0)
5025 ASSERT(QuotaCharge >= QuotaFree);
5026 QuotaCharge -= QuotaFree;
5027 FoundVad->ControlArea->Segment->NumberOfCommittedPages += QuotaCharge;
5052 DPRINT1(
"Write copy attempted when not allowed\n");
5061 TempPte.u.Soft.Protection = ProtectionMask;
5076 FoundVad->u.VadFlags.CommitCharge += (1 + LastPte - PointerPte);
5077 Process->CommitCharge += (1 + LastPte - PointerPte);
5092 while (PointerPte <= LastPte)
5109 if (PointerPte->
u.
Long == 0)
5145 ChangeProtection =
TRUE;
5175 if (ChangeProtection)
5177 PVOID ProtectBaseAddress = (
PVOID)StartingAddress;
5178 SIZE_T ProtectSize = PRegionSize;
5179 ULONG OldProtection;
5185 &ProtectBaseAddress,
5208 *URegionSize = PRegionSize;
5209 *UBaseAddress = (
PVOID)StartingAddress;
5238 LONG_PTR AlreadyDecommitted, CommitReduction = 0;
5240 ULONG_PTR StartingAddress, EndingAddress;
5280 PBaseAddress = *UBaseAddress;
5281 PRegionSize = *URegionSize;
5294 DPRINT1(
"Virtual free base above User Space\n");
5303 DPRINT1(
"Region size would overflow into kernel-memory\n");
5329 if (CurrentProcess !=
Process)
5336 DPRINT(
"NtFreeVirtualMemory: Process 0x%p, Address 0x%p, Size 0x%Ix, FreeType 0x%08lx\n",
5364 DPRINT1(
"Unable to find VAD for address 0x%p\n", StartingAddress);
5374 DPRINT1(
"Address 0x%p is beyond the VAD\n", EndingAddress);
5386 DPRINT(
"Attempt to free section memory\n");
5428 DPRINT1(
"Address 0x%p does not match the VAD\n", PBaseAddress);
5548 DPRINT1(
"Failed to allocate a VAD!\n");
5558 DPRINT1(
"Ran out of process quota whilst creating new VAD!\n");
5607 StartingAddress - 1,
5635 PRegionSize = EndingAddress - StartingAddress + 1;
5636 Process->CommitCharge -= CommitReduction;
5658 *URegionSize = PRegionSize;
5659 *UBaseAddress = (
PVOID)StartingAddress;
5676 DPRINT1(
"Trying to decommit from invalid VAD\n");
5690 DPRINT1(
"Decomitting non-committed memory\n");
5710 ASSERT(CommitReduction >= 0);
5774 DPRINT1(
"MM:MmGetPhysicalAddressFailed base address was %p\n",
Address);
#define STATUS_PRIVILEGE_NOT_HELD
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[]
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
#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)
_In_ PMEMORY_AREA MemoryArea
#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)
PMEMORY_AREA NTAPI MmLocateMemoryAreaByAddress(PMMSUPPORT AddressSpace, PVOID Address)
#define MEMORY_AREA_OWNED_BY_ARM3
#define MA_GetEndingAddress(_MemoryArea)
#define MA_GetStartingAddress(_MemoryArea)
FORCEINLINE VOID MmUnlockAddressSpace(PMMSUPPORT AddressSpace)
_Out_ PKAPC_STATE ApcState
#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)
VOID NTAPI MiDeleteVirtualAddresses(IN ULONG_PTR Va, IN ULONG_PTR EndingAddress, IN PMMVAD Vad)
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)
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)
NTSTATUS NTAPI MiRosProtectVirtualMemory(IN PEPROCESS Process, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T NumberOfBytesToProtect, IN ULONG NewAccessProtection, OUT PULONG OldAccessProtection OPTIONAL)
#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::@2611 u
struct _EXCEPTION_RECORD * ExceptionRecord
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
struct _MMADDRESS_NODE * RightChild
struct _MMPFN::@1803::@1809 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_UNSUCCESSFUL
#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_ KPROCESSOR_MODE PreviousMode
_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