MiUpdateSlabPagePlaceholderState
VOID __fastcall MiUpdateSlabPagePlaceholderState(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
char *v7;
__int64 v8;
unsigned int v9;
unsigned int v10;
char *v11;
if( !*(_DWORD *)(a1 + 48) )
{
if( (_DWORD)a4 )
{
if( a3 == 1 )
{
v11 = (char *)MmGetPfnDb() + 48 * a2;
*((_QWORD *)v11 + 5) = *((_QWORD *)v11 + 5) & 0x8FFFFFFFFFFFFFFFui64 | 0x3000000000000000i64;
MiAbortCombineScan((INT64)v11);
}
v10 = 0;
v9 = *((_DWORD *)MiSlabProtectionToPageProtection + *(int *)(a1 + 52));
}
else
{
if( a3 == 1 )
{
v7 = (char *)MmGetPfnDb() + 48 * a2;
*((_QWORD *)v7 + 5) &= 0x8FFFFFFFFFFFFFFFui64;
}
v8 = *(int *)(a1 + 52);
v9 = 0;
v10 = *((_DWORD *)MiSlabProtectionToPageProtection + v8);
}
if( (MiFlags & 0x8000) != 0 && (int)VslSetPlaceholderPages(a2, a3, v10, v9) < 0 )
KeBugCheckEx(0x1Au, 0x5150Fui64, a2, v10, v9);
}
}Referenced by:
MiAllocateSlabEntry
MiFreePageToSlabAllocator
MiFreeSlabEntry
MiGetPageFromSlabAllocator