MiUpdatePfnPriority
NTSTATUS __stdcall MiUpdatePfnPriority(_MMPFN *Pfn1, UINT64 DesiredPriority, UINT64 AllowDecrease){
char v3;
unsigned __int64 v4;
__int64 v5;
UINT8 *v6;
__int64 v7;
unsigned int v8;
unsigned int v9;
char v10;
char v11;
v3 = -1;
LODWORD(v4) = MiGetPfnPriority(Pfn1);
v9 = v4;
if( v8 != (_DWORD)v4 )
{
v10 = 0;
if( v8 >= (unsigned int)v4
|| (_DWORD)v6
&& ((unsigned int)v4 <= 5
|| (LOBYTE(v4) = MI_PFN_IS_PROTO(
(_UNICODE_STRING *)v5,
(_UNICODE_STRING *)(unsigned int)v4,
(UINT8)v6,
(PWCHAR)v7),
!(_DWORD)v4)) )
{
v11 = *(_BYTE *)(v5 + 34) & 7;
if( v11 == 2 )
{
if( v9
|| (*(_DWORD *)(v5 + 16) & 0x400i64) != 0
|| (LODWORD(v4) = MiIsPteInStore(
*(_MI_PARTITION **)(*(&stru_140C4DB30 + 267)
+ 8 * ((*(_QWORD *)(v5 + 40) >> 39) & 0x3FFi64)),
*(_MMPTE *)(v5 + 16)),
!(_DWORD)v4) )
{
LODWORD(v4) = MiRelinkStandbyPage(v7, v8, v6);
}
}
else if( v11 != 6 || (v4 = *(_QWORD *)(v5 + 24) & 0x3FFFFFFFFFFFFFFFi64, v4 <= 1) || v8 >= v9 )
{
*(_BYTE *)(v7 + 35) ^= (*(_BYTE *)(v7 + 35) ^ v8) & 7;
if( v9 < 5 )
{
v3 = -1;
if( v8 == 5 )
v3 = v10;
}
else if( v8 < 5 )
{
v3 = 7;
}
}
}
}
LOBYTE(v4) = v3;
return v4;
}Referenced by:
MiActOnPte
MiConvertPrivateToProto
MiDeprioritizeVirtualAddresses
MiPfPutPagesInTransition
MiResolveTransitionFault
MiUpdatePrefetchPriority
NtLockVirtualMemory