PfSnAsyncContextInitialize

INT64 __fastcall PfSnAsyncContextInitialize(_QWORD *a1, __int64 a2, __int64 a3, int a4){
  _EPROCESS *Process; 
  _PFSN_TRACE_HEADER *v9; 
  unsigned __int64 *v10; 

  memset(a1, 0i64, 0xF8u);
  a1[26] = a2;
  a1[4] = a3;
  Process = KeGetCurrentThread()->ApcState.Process;
  a1[27] = Process;
  ObfReferenceObject(Process);
  v9 = PfSnReferenceProcessTrace((_EPROCESS *)a1[27]);
  v10 = (unsigned __int64 *)a1[4];
  a1[28] = v9;
  ExInitializePushLock(v10);
  *((_DWORD *)a1 + 59) = PsGetPagePriorityThread((_ETHREAD *)KeGetCurrentThread());
  *a1 = 0i64;
  a1[2] = PfSnAsyncPrefetchWorker;
  a1[3] = a1;
  if( a4 )
    *((_DWORD *)a1 + 60) |= 1u;
  ExInitializePushLock(a1 + 5);
  a1[22] = 0i64;
  a1[24] = PfSnPowerBoostWorker;
  a1[25] = a1 + 5;
  KeInitializeTimerEx((INT64)(a1 + 6), 0);
  return(INT64)KeInitializeDpc((PRKDPC)(a1 + 14), PfSnPowerBoostDpc, a1 + 5);
}

Referenced by:

PfSnPrefetchScenario