PopDirectedDripsDiagTraceMarkDevice
VOID __stdcall PopDirectedDripsDiagTraceMarkDevice(INT64 a1){
CHAR *DeviceDiagnostic;
REGHANDLE v2;
INT64 v3;
_EVENT_DATA_DESCRIPTOR UserData;
INT64 *v5;
int v6;
int v7;
v3 = a1;
ExAcquirePushLockExclusiveEx(&PopDirectedDripsDiagLock, 0i64);
DeviceDiagnostic = *(CHAR **)(v3 + 776);
if( DeviceDiagnostic || (DeviceDiagnostic = PopDirectedDripsDiagCreateDeviceDiagnostic(v3)) != 0i64 )
++*((_DWORD *)DeviceDiagnostic + 36);
if( PopDiagHandleRegistered )
{
v2 = PopDiagHandle;
if( EtwEventEnabled(PopDiagHandle, &POP_ETW_EVENT_DIRECTED_DRIPS_MARK_DEVICE) )
{
UserData.Reserved = 0;
v7 = 0;
UserData.Ptr = (unsigned __int64)&PopWnfCsEnterScenarioId;
UserData.Size = 1;
v5 = &v3;
v6 = 8;
EtwWrite(v2, &POP_ETW_EVENT_DIRECTED_DRIPS_MARK_DEVICE, 0, 2u, &UserData);
}
}
if( (_InterlockedExchangeAdd64(&PopDirectedDripsDiagLock._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock(&PopDirectedDripsDiagLock);
KeAbPostRelease(&PopDirectedDripsDiagLock);
}Referenced by:
PopDirectedDripsMarkCandidateDevice