PfSnInitializePrefetcher
INT64 __fastcall PfSnInitializePrefetcher(INT64 a1, INT64 a2, WCHAR a3){
_KDPC *PoolWithTag;
struct _UNICODE_STRING DestinationString;
stru_140C501A8.Count = 1;
SpinLock = 0i64;
qword_140C50188 = (__int64)&PfSnGlobals;
PfSnGlobals = (__int64)&PfSnGlobals;
stru_140C501A8.Owner = 0i64;
qword_140C501A0 = &qword_140C50198;
qword_140C50198 = &qword_140C50198;
stru_140C501A8.Event.Header.WaitListHead.Blink = &stru_140C501A8.Event.Header.WaitListHead;
stru_140C501A8.Event.Header.WaitListHead.Flink = &stru_140C501A8.Event.Header.WaitListHead;
DestinationString = 0i64;
stru_140C501A8.Contention = 0;
LOWORD(stru_140C501A8.Event.Header.Lock) = 1;
stru_140C501A8.Event.Header.Size = 6;
stru_140C501A8.Event.Header.SignalState = 0;
dword_140C501E4 = 0;
RtlInitUnicodeString(&DestinationString, L"\\KernelObjects\\PrefetchTracesReady", a3);
PfpCreateEvent(&DestinationString, SynchronizationEvent, &EventOut);
PfSnPrefetchCacheCtxInitialize((INT64)&qword_140C501F8);
RegHandle = 0i64;
PoolWithTag = (_KDPC *)ExAllocatePoolWithTag(NonPagedPoolNx, 0xA0ui64, 0x66506343ui64);
if( PoolWithTag )
{
*(_QWORD *)&PoolWithTag->TargetInfoAsUlong = 0i64;
PoolWithTag->ProcessorHistory = (unsigned __int64)&PoolWithTag->DpcListEntry;
PoolWithTag->DpcListEntry.Next = &PoolWithTag->DpcListEntry;
PoolWithTag->Type = 8;
PoolWithTag->DeferredRoutine = 0i64;
HIDWORD(PoolWithTag->DpcData) = 0;
LOWORD(PoolWithTag->DpcData) = 0;
PoolWithTag[1].DeferredRoutine = PfSnTracingStateDpcRoutine;
PoolWithTag[1].TargetInfoAsUlong = 275;
PoolWithTag[1].DeferredContext = PoolWithTag;
PoolWithTag[1].DpcData = 0i64;
PoolWithTag[1].ProcessorHistory = 0i64;
PoolWithTag[2].ProcessorHistory = (unsigned __int64)PfSnTracingStateExWorkerRoutine;
PoolWithTag[2].DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))PoolWithTag;
*(_QWORD *)&PoolWithTag[2].TargetInfoAsUlong = 0i64;
KiSetTimerEx((_KTIMER *)PoolWithTag, (_LARGE_INTEGER)-6000000000i64, 0i64, 0, PoolWithTag + 1);
}
return 0i64;
}Referenced by:
No references.