MiFaultInProbeAddress

INT64 __fastcall MiFaultInProbeAddress(INT64 a1){
  void *v2; 
  __int64 v3; 
  LOCK_OPERATION v4; 
  unsigned __int64 v5; 
  UINT64 v6; 
  INT64 *v7; 
  NTSTATUS v8; 
  __int64 v9; 
  __int64 v11[2]; 
  INT64 result[5]; 
  int v13; 
  memset((INT64)result, 0i64);
  v2 = *(void **)a1;
  v3 = *(_QWORD *)(a1 + 8);
  v4 = *(_DWORD *)(a1 + 88);
  v5 = *(_QWORD *)a1 & 0xFFFFFFFFFFFFF000ui64;
  LOWORD(result[0]) = 2;
  v11[0] = v5;
  v11[1] = v3 - v5;
  result[2] = 1i64;
  result[1] = (INT64)v11;
  v6 = 0i64;
  result[3] = 0i64;
  result[4] = 0i64;
  v13 = 0;
  if( v4 )
  {
    v6 = 2i64;
    if( v4 == (IoModifyAccess|IoWriteAccess) )
    {
      v6 = 0i64;
    }
    else if( (*(_BYTE *)(a1 + 64) & 0xF) == 6 && (unsigned int)MiGetSystemRegionType((UINT64)v2) == 12 )
    {
      v6 = 0i64;
    }
  }
  MiUnlockProbePacketWorkingSet(a1);
  v8 = MmAccessFault(v6, v2, 0, (char *)result + 1);
  if( v8 < 0 )
  {
    v9 = *(unsigned int *)(a1 + 64);
    LOBYTE(v9) = v9 & 0xF;
    if( (_BYTE)v9 == 1 )
    {
      v9 = *(_QWORD *)(a1 + 80);
      if( *(_QWORD *)(v9 + 2240) )
        v8 = MiDeliverPicoExceptionForProbedPage(v2, v4);
    }
  }
  MiLockProbePacketWorkingSet(a1, v7, (INT64 **)v9);
  return(unsigned int)v8;
}

Referenced by:

MiLockPageLeafPageTable
MiProbeAndLockPages
MiProbeLeafFrame