PfSnBeginBootPhase
NTSTATUS __stdcall PfSnBeginBootPhase(UINT64 Phase){
NTSTATUS v1;
int v2;
int v3;
UINT64 v4;
int v6;
KDPC *EnablePrefetcherTimer;
union _LARGE_INTEGER Timeout;
if( (unsigned int)Phase >= 5 )
return -1073741811;
v1 = 0;
if( !(_DWORD)Phase )
{
EtwRegister(&MS_Kernel_Prefetch_Provider, 0i64, 0i64, &RegHandle);
PfSnDetermineEnablePrefetcher();
PfSnUpdatePrefetcherFlags(3ui64, 1ui64);
Timeout.QuadPart = -3000000000i64;
PfSnQueueEnablePrefetcherTimer(&Timeout);
return v1;
}
v2 = Phase - 1;
if( !v2 )
goto LABEL_12;
v3 = v2 - 1;
if( !v3 )
{
PfSnUpdatePrefetcherFlags(4ui64, 1ui64);
v4 = 17i64;
LABEL_6:
PfSnUpdatePrefetcherFlags(v4, 0i64);
return v1;
}
v6 = v3 - 1;
if( !v6 )
{
if( (PfSnUpdatePrefetcherFlags(8ui64, 1ui64) & 4) == 0 )
return v1;
LABEL_12:
v4 = 1i64;
goto LABEL_6;
}
if( v6 == 1 )
{
EnablePrefetcherTimer = PfSnAllocateEnablePrefetcherTimer(0x10ui64);
if( EnablePrefetcherTimer )
{
PfSnUpdatePrefetcherFlags(0x10ui64, 1ui64);
KiSetTimerEx((_KTIMER *)EnablePrefetcherTimer, (_LARGE_INTEGER)-600000000i64, 0i64, 0, EnablePrefetcherTimer + 1);
}
}
return v1;
}Referenced by:
IoInitSystemPreDrivers
PfPowerActionNotify
PfSnSetPrefetcherInformation