PfSnLogPageFault

VOID __stdcall PfSnLogPageFault(FILE_OBJECT *FileObject, UINT64 FileOffset, UINT64 Flags){
  int v3; 
  _ETHREAD *CurrentThread; 
  struct _EX_RUNDOWN_REF *v7; 
  struct _EX_RUNDOWN_REF *v8; 
  INT64 a5; 
  v3 = Flags;
  if( (Flags & 4) == 0 || !FileObject->FsContext2 )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    v7 = PfSnReferenceProcessTrace(*((_QWORD *)CurrentThread + 23), FileOffset);
    v8 = v7;
    if( v7 )
    {
      if( (unsigned int)PfSnCheckLoggingForThread((INT64)CurrentThread, (INT64)v7, v3) )
      {
        LODWORD(a5) = v3;
        PfSnLogPageFaultCommon((INT64)v8, FileObject, (UINT64)FileObject->FsContext, FileOffset, a5);
      }
      ExReleaseRundownProtection(v8 + 45);
    }
  }
}

Referenced by:

MiLogRelocationRva
MiMakeSystemCachePteValid