PerfLogExecutiveResourceSetOwnerPointer
VOID __stdcall PerfLogExecutiveResourceSetOwnerPointer(UINT64 Action, VOID *LockAddress){
struct _KPRCB *CurrentPrcb;
int v3;
signed __int64 TrackingLockSlotForThread;
__int64 v6[3];
int v7;
unsigned int CurrentRunTime;
VOID *v9;
int v10;
int v11;
__int64 v12[2];
CurrentPrcb = KeGetCurrentPrcb();
v3 = Action;
++CurrentPrcb->SynchCounters.ExEtwSynchTrackingNotificationsCount;
v10 = Action;
v9 = LockAddress;
memset(v6, 0, sizeof(v6));
v7 = 0;
v11 = 0;
v12[1] = 48i64;
CurrentRunTime = KeGetCurrentThread()[1].CurrentRunTime;
v12[0] = (__int64)v6;
EtwTraceKernelEvent((__int64)v12, 1u, 0x20020000u, 0x52Bu, 0x1501802u);
if( KeGetCurrentThread()[1].WaitBlock[0].Object )
{
TrackingLockSlotForThread = EtwpGetTrackingLockSlotForThread((__int64)LockAddress, v3 & 0xFFFF0000);
if( TrackingLockSlotForThread )
{
if( *(_DWORD *)(TrackingLockSlotForThread + 32) )
{
++CurrentPrcb->SynchCounters.ExEtwSynchTrackingNotificationsAccountedCount;
*(_QWORD *)(TrackingLockSlotForThread + 16) = 0i64;
*(_QWORD *)(TrackingLockSlotForThread + 28) = 0i64;
*(_DWORD *)(TrackingLockSlotForThread + 36) = 0;
*(_QWORD *)TrackingLockSlotForThread = 0i64;
*(_QWORD *)(TrackingLockSlotForThread + 8) = 0i64;
*(_DWORD *)(TrackingLockSlotForThread + 24) = 0;
*(_DWORD *)(TrackingLockSlotForThread + 44) = 0;
}
else
{
*(_DWORD *)(TrackingLockSlotForThread + 28) = 0;
}
}
}
}Referenced by:
No references.