20#define MODULE_INVOLVED_IN_ARM3
34#define SPECIAL_POOL_PAGED_PTE 0x2000
35#define SPECIAL_POOL_NONPAGED_PTE 0x4000
36#define SPECIAL_POOL_PAGED 0x8000
139 if (SpecialPoolPtes > 0x6000) SpecialPoolPtes = 0x6000;
152 if (PointerPte)
break;
157 }
while (SpecialPoolPtes);
160 if (!SpecialPoolPtes)
return;
295 Irql = MiAcquirePfnLock();
301 MiReleasePfnLock(
Irql);
314 MiReleasePfnLock(
Irql);
315 if (!once++)
DPRINT1(
"Special pool: No PTEs left!\n");
347 MiReleasePfnLock(
Irql);
359 if ((SpecialType != 0) &&
424 BytesRequested = (
Header->Ulong1 & ~SPECIAL_POOL_PAGED) & 0xFFFF;
428 Ptr =
P + BytesRequested;
464 ULONG BytesRequested, BytesReal = 0;
471 DPRINT(
"MmFreeSpecialPool(%p)\n",
P);
536 BytesRequested = (
Header->Ulong1 & ~SPECIAL_POOL_PAGED) & 0xFFFF;
546 if (BytesRequested > BytesReal)
555 if (BytesRequested +
sizeof(
POOL_HEADER) < BytesReal)
604 Irql = MiAcquirePfnLock();
627 Irql = MiAcquirePfnLock();
644 MiReleasePfnLock(
Irql);
661 for (
i=0;
i<100;
i++)
670 for (
i=0;
i<100;
i++)
676 for (
i=0;
i<100;
i++)
#define BASE_POOL_TYPE_MASK
HARDWARE_PTE_ARMV6 TempPte
#define PtrOffset(BASE, OFFSET)
#define NT_SUCCESS(StatCode)
#define PsGetCurrentThread()
#define KeGetCurrentIrql()
#define InterlockedDecrementUL(Addend)
#define InterlockedIncrementUL(Addend)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLboolean GLboolean GLboolean b
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
#define RtlFillMemory(Dest, Length, Fill)
struct _POOL_HEADER POOL_HEADER
struct _POOL_HEADER * PPOOL_HEADER
#define MI_SET_PFN_DELETED(x)
#define MI_GET_NEXT_COLOR()
PFN_NUMBER NTAPI MiRemoveAnyPage(IN ULONG Color)
VOID NTAPI MiInitializePfnAndMakePteValid(IN PFN_NUMBER PageFrameIndex, IN PMMPTE PointerPte, IN MMPTE TempPte)
FORCEINLINE VOID MI_ERASE_PTE(IN PMMPTE PointerPte)
VOID NTAPI MiDecrementShareCount(IN PMMPFN Pfn1, IN PFN_NUMBER PageFrameIndex)
#define POOL_FLAG_SPECIAL_POOL
enum _MMSYSTEM_PTE_POOL_TYPE MMSYSTEM_PTE_POOL_TYPE
PFN_COUNT NTAPI MiDeleteSystemPageableVm(IN PMMPTE PointerPte, IN PFN_NUMBER PageCount, IN ULONG Flags, OUT PPFN_NUMBER ValidPages)
FORCEINLINE PMMPFN MI_PFN_ELEMENT(IN PFN_NUMBER Pfn)
#define MiAddressToPte(x)
#define MM_EMPTY_PTE_LIST
#define MiPteToAddress(_Pte)
PFN_NUMBER MmResidentAvailablePages
#define MI_SET_PROCESS2(x)
PFN_COUNT MmNumberOfPhysicalPages
#define MI_ASSERT_PFN_LOCK_HELD()
PFN_NUMBER MmAvailablePages
VOID NTAPI KeFlushEntireTb(IN BOOLEAN Invalid, IN BOOLEAN AllProcessors)
ULONG MmNumberOfSystemPtes
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
#define KeQueryTickCount(CurrentCount)
BOOLEAN NTAPI MmIsSpecialPoolAddressFree(PVOID P)
VOID NTAPI MiTestSpecialPool(VOID)
BOOLEAN NTAPI MmIsSpecialPoolAddress(PVOID P)
PFN_COUNT MmSpecialPagesInUse
struct _MI_FREED_SPECIAL_POOL MI_FREED_SPECIAL_POOL
ULONG MiSpecialPoolExtraCount
VOID NTAPI MiSpecialPoolCheckPattern(PUCHAR P, PPOOL_HEADER Header)
PFN_COUNT MiSpecialPagesNonPagedPeak
#define SPECIAL_POOL_NONPAGED_PTE
#define SPECIAL_POOL_PAGED_PTE
PFN_COUNT MiSpecialPagesPagable
struct _MI_FREED_SPECIAL_POOL * PMI_FREED_SPECIAL_POOL
PMMPTE MiSpecialPoolLastPte
NTSTATUS NTAPI MmExpandSpecialPool(VOID)
BOOLEAN NTAPI MmUseSpecialPool(SIZE_T NumberOfBytes, ULONG Tag)
PFN_COUNT MiSpecialPagesNonPaged
PFN_COUNT MmSpecialPagesInUsePeak
PFN_COUNT MiSpecialPagesNonPagedMaximum
PMMPTE NTAPI MiReserveAlignedSystemPtes(IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType, IN ULONG Alignment)
VOID NTAPI MiInitializeSpecialPool(VOID)
PVOID NTAPI MmAllocateSpecialPool(SIZE_T NumberOfBytes, ULONG Tag, POOL_TYPE PoolType, ULONG SpecialType)
BOOLEAN MmSpecialPoolCatchOverruns
PMMPTE MiSpecialPoolFirstPte
#define SPECIAL_POOL_PAGED
PFN_COUNT MiSpecialPagesPagablePeak
VOID NTAPI MmFreeSpecialPool(PVOID P)
base of all file and directory entries
POOL_HEADER OverlaidPoolHeader
ULONG NumberOfBytesRequested
#define RtlZeroMemory(Destination, Length)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
_IRQL_requires_same_ _In_ CLONG ByteSize