PopDirectedDripsDiagTraceMarkDevice
VOID __fastcall PopDirectedDripsDiagTraceMarkDevice(INT64 a1){
EVENT_DESCRIPTOR *v1;
CHAR *DeviceDiagnostic;
UINT64 v3;
INT64 v4;
EVENT_DATA_DESCRIPTOR UserData;
INT64 *v6;
int v7;
int v8;
v4 = a1;
ExAcquirePushLockExclusiveEx((UINT64)&PopDirectedDripsDiagLock, 0i64);
DeviceDiagnostic = *(CHAR **)(v4 + 776);
if( DeviceDiagnostic || (DeviceDiagnostic = PopDirectedDripsDiagCreateDeviceDiagnostic(v4)) != 0i64 )
++*((_DWORD *)DeviceDiagnostic + 36);
if( PopDiagHandleRegistered )
{
v3 = PopDiagHandle;
if( EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_DIRECTED_DRIPS_MARK_DEVICE, v1) )
{
UserData.Reserved = 0;
v8 = 0;
UserData.Ptr = (unsigned __int64)&PopWnfCsEnterScenarioId;
UserData.Size = 1;
v6 = &v4;
v7 = 8;
EtwWrite(v3, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_DIRECTED_DRIPS_MARK_DEVICE, 0i64, 2ui64, &UserData);
}
}
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&PopDirectedDripsDiagLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&PopDirectedDripsDiagLock);
KeAbPostRelease(&PopDirectedDripsDiagLock);
}Referenced by:
PopDirectedDripsMarkCandidateDevice