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) &&
428 Ptr =
P + BytesRequested;
464 ULONG BytesRequested, BytesReal = 0;
471 DPRINT(
"MmFreeSpecialPool(%p)\n",
P);
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++)
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 KeGetCurrentIrql()
VOID NTAPI MiTestSpecialPool(VOID)
FORCEINLINE VOID MI_ERASE_PTE(IN PMMPTE PointerPte)
PFN_NUMBER MmResidentAvailablePages
ULONG MiSpecialPoolExtraCount
#define STATUS_INSUFFICIENT_RESOURCES
#define MI_ASSERT_PFN_LOCK_HELD()
BOOLEAN NTAPI MmIsSpecialPoolAddressFree(PVOID P)
#define PsGetCurrentThread()
POOL_HEADER OverlaidPoolHeader
#define PtrOffset(BASE, OFFSET)
#define MM_EMPTY_PTE_LIST
#define POOL_FLAG_SPECIAL_POOL
ULONG MmNumberOfSystemPtes
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
PVOID NTAPI MmAllocateSpecialPool(SIZE_T NumberOfBytes, ULONG Tag, POOL_TYPE PoolType, ULONG SpecialType)
#define MI_GET_NEXT_COLOR()
struct _POOL_HEADER POOL_HEADER
PFN_NUMBER MmAvailablePages
PMMPTE MiSpecialPoolLastPte
#define MiAddressToPte(x)
PFN_COUNT MiSpecialPagesNonPagedPeak
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
struct _MI_FREED_SPECIAL_POOL MI_FREED_SPECIAL_POOL
PFN_COUNT MiSpecialPagesPagable
#define SPECIAL_POOL_PAGED_PTE
#define MI_SET_PROCESS2(x)
BOOLEAN NTAPI MmUseSpecialPool(SIZE_T NumberOfBytes, ULONG Tag)
VOID NTAPI MiDecrementShareCount(IN PMMPFN Pfn1, IN PFN_NUMBER PageFrameIndex)
#define BASE_POOL_TYPE_MASK
struct _POOL_HEADER * PPOOL_HEADER
ULONG NumberOfBytesRequested
VOID NTAPI KeQueryTickCount(IN PLARGE_INTEGER TickCount)
VOID NTAPI KeFlushEntireTb(IN BOOLEAN Invalid, IN BOOLEAN AllProcessors)
PFN_COUNT MiSpecialPagesNonPagedMaximum
GLboolean GLboolean GLboolean b
#define NT_SUCCESS(StatCode)
#define RtlFillMemory(Dest, Length, Fill)
_In_ WDFCOLLECTION _In_ ULONG Index
enum _MMSYSTEM_PTE_POOL_TYPE MMSYSTEM_PTE_POOL_TYPE
PFN_COUNT MiSpecialPagesNonPaged
HARDWARE_PTE_ARMV6 TempPte
VOID NTAPI MiInitializeSpecialPool(VOID)
FORCEINLINE PMMPFN MI_PFN_ELEMENT(IN PFN_NUMBER Pfn)
#define InterlockedDecrementUL(Addend)
VOID NTAPI MiSpecialPoolCheckPattern(PUCHAR P, PPOOL_HEADER Header)
BOOLEAN MmSpecialPoolCatchOverruns
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
#define SPECIAL_POOL_PAGED
BOOLEAN NTAPI MmIsSpecialPoolAddress(PVOID P)
PFN_COUNT NTAPI MiDeleteSystemPageableVm(IN PMMPTE PointerPte, IN PFN_NUMBER PageCount, IN ULONG Flags, OUT PPFN_NUMBER ValidPages)
PFN_COUNT MmSpecialPagesInUse
PFN_NUMBER NTAPI MiRemoveAnyPage(IN ULONG Color)
PMMPTE NTAPI MiReserveAlignedSystemPtes(IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType, IN ULONG Alignment)
NTSTATUS NTAPI MmExpandSpecialPool(VOID)
#define MI_SET_PFN_DELETED(x)
PFN_COUNT MmNumberOfPhysicalPages
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
#define InterlockedIncrementUL(Addend)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
#define SPECIAL_POOL_NONPAGED_PTE
struct _MI_FREED_SPECIAL_POOL * PMI_FREED_SPECIAL_POOL
PFN_COUNT MiSpecialPagesPagablePeak
VOID NTAPI MiInitializePfnAndMakePteValid(IN PFN_NUMBER PageFrameIndex, IN PMMPTE PointerPte, IN MMPTE TempPte)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
#define RtlZeroMemory(Destination, Length)
PFN_COUNT MmSpecialPagesInUsePeak
VOID NTAPI MmFreeSpecialPool(PVOID P)
FORCEINLINE PVOID MiPteToAddress(PMMPTE PointerPte)
_IRQL_requires_same_ _In_ CLONG ByteSize
PMMPTE MiSpecialPoolFirstPte
base of all file and directory entries
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)