PfpDeprioritizeOldPagesInWs
NTSTATUS __stdcall PfpDeprioritizeOldPagesInWs(_SUPERFETCH_INFORMATION *Info, INT8 PreviousMode){
size_t v3;
int v4;
unsigned __int64 v5;
unsigned int v6;
unsigned int v7;
UINT64 v8;
int v9;
UINT64 Tag;
_HANDLE Handle[4];
__int64 v13;
PVOID Object;
*(_OWORD *)Handle = 0i64;
v13 = 0i64;
Object = 0i64;
v3 = 24;
if( Info[6] == 24 )
{
if( PreviousMode )
{
v5 = *((_QWORD *)Info + 2);
if( (v5 & 7) != 0 )
ExRaiseDatatypeMisalignment();
if( v5 + 24 > 0x7FFFFFFF0000i64 || v5 + 24 < v5 )
{
MEMORY[0x7FFFFFFF0000] = 0;
v3 = Info[6];
}
}
memmove(Handle, *((const VOID **)Info + 2), v3);
if( Handle[0] != 3
|| (v13 & 0xFFFFFFC0) != 0
|| (v6 = v13 & 0xF, v6 > 8)
|| (v7 = ((unsigned int)v13 >> 4) & 3, v7 == 3)
|| v6 == 8 && !v7 )
{
v4 = -1073741811;
}
else
{
LODWORD(Tag) = 1935107664;
v4 = ObReferenceObjectByHandleWithTag(
*(VOID **)&Handle[2],
0x2000ui64,
(_OBJECT_TYPE *)PsProcessType,
PreviousMode,
Tag,
&Object,
0i64);
if( v4 >= 0 )
{
v8 = 0i64;
if( v7 )
{
v8 = 1i64;
if( v7 == 1 )
v8 = 3i64;
}
MmUpdateOldWorkingSetPages((_EPROCESS *)Object, v6, v8);
v4 = v9;
}
}
}
else
{
v4 = -1073741306;
}
if( Object )
ObfDereferenceObjectWithTag(Object, 0x73576650ui64);
return v4;
}Referenced by:
PfSetSuperfetchInformation