MiUpdateSlabPagePlaceholderState
void __fastcall MiUpdateSlabPagePlaceholderState(__int64 a1, INT64 a2, INT64 a3, int a4){
_MMPFN *v7;
__int64 v8;
unsigned int v9;
unsigned int v10;
_MMPFN *v11;
if( !*(_DWORD *)(a1 + 48) )
{
if( a4 )
{
if( a3 == 1 )
{
v11 = &MmGetPfnDb()[a2];
v11->u4._bf_0 = v11->u4._bf_0 & 0x8FFFFFFFFFFFFFFFui64 | 0x3000000000000000i64;
MiAbortCombineScan(v11);
}
v10 = 0;
v9 = *((_DWORD *)MiSlabProtectionToPageProtection + *(int *)(a1 + 52));
}
else
{
if( a3 == 1 )
{
v7 = &MmGetPfnDb()[a2];
v7->u4._bf_0 &= 0x8FFFFFFFFFFFFFFFui64;
}
v8 = *(int *)(a1 + 52);
v9 = 0;
v10 = *((_DWORD *)MiSlabProtectionToPageProtection + v8);
}
if( (MiFlags & 0x8000) != 0 && VslSetPlaceholderPages(a2, a3, v10, v9) < 0 )
KeBugCheckEx(0x1Au, (PVOID)0x5150F, (PVOID)a2, (PVOID)v10, (PVOID)v9);
}
}Referenced by:
MiAllocateSlabEntry
MiFreePageToSlabAllocator
MiFreeSlabEntry
MiGetPageFromSlabAllocator