PopDiagTraceFxDeviceAccounting
void PopDiagTraceFxDeviceAccounting(__int64 a1, __int64 a2, unsigned __int16 *a3, ...){
WCHAR v5;
EVENT_DESCRIPTOR *v6;
UINT64 v7;
_DEVICE_OBJECT *v8;
bool v9;
int DevicePropertyString;
wchar_t *Buffer;
bool v12;
wchar_t *v13;
int v14;
__int64 v15;
UINT64 UserDataCount;
char v17;
__int64 v18;
struct _UNICODE_STRING DestinationString;
struct _UNICODE_STRING v20;
UINT64 v21;
__int64 v22;
__int64 v23;
EVENT_DATA_DESCRIPTOR UserData;
__int64 *v25;
__int64 v26;
va_list v27;
__int64 v28;
UINT64 *v29;
__int64 v30;
struct _EVENT_DATA_DESCRIPTOR v31;
UINT64 *v32;
__int64 v33;
int *v34;
__int64 v35;
__int64 v36;
int v37[2];
__int64 *v38;
__int64 v39;
__int64 v40;
__int64 v41;
__int64 v42;
__int64 v43;
__int64 *v44;
__int64 v45;
int *v46;
__int64 v47;
wchar_t *v48;
int v49[2];
int *v50;
__int64 v51;
wchar_t *v52;
int v53[2];
int *v54;
__int64 v55;
__int64 v56;
int v57[2];
va_list va;
va_start(va, a3);
v18 = a1;
DestinationString = 0i64;
v20 = 0i64;
RtlInitUnicodeString(&DestinationString, &ppszDestEnd, (WCHAR)a3);
RtlInitUnicodeString(&v20, &ppszDestEnd, v5);
if( PopDiagHandleRegistered )
{
v7 = PopDiagHandle;
if( EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_DEVICE_ACCOUNTING, v6) )
{
v17 = PopWnfCsEnterScenarioId;
*(_QWORD *)&UserData.Size = 1i64;
UserData.Ptr = (unsigned __int64)&v17;
v26 = 8i64;
v25 = &v18;
v28 = 8i64;
va_copy(v27, va);
v30 = 8i64;
v29 = &PopWnfCsEnterScenarioId;
LODWORD(UserDataCount) = 4;
EtwWriteEx(
v7,
(EVENT_DESCRIPTOR *)&POP_ETW_EVENT_DEVICE_ACCOUNTING,
0i64,
0i64,
0i64,
0i64,
UserDataCount,
&UserData);
if( *(_DWORD *)(a2 + 12) < 5u && !PopDiagFxAccountingTelemetryDisabled )
{
v8 = *(_DEVICE_OBJECT **)(v18 + 32);
v9 = (int)PopDiagQueryDevicePropertyString(v8, DevicePropertyClassName, (__int64)&DestinationString) >= 0;
DevicePropertyString = PopDiagQueryDevicePropertyString(v8, DevicePropertyClassGuid, (__int64)&v20);
Buffer = DestinationString.Buffer;
v12 = DevicePropertyString >= 0;
v13 = v20.Buffer;
if( (unsigned int)dword_140C021E8 > 5 && tlgKeywordOn((__int64)&dword_140C021E8, 0x400000000000i64) )
{
v21 = PopWnfCsEnterScenarioId;
v33 = 8i64;
v32 = &v21;
v14 = *(unsigned __int16 *)(v18 + 40);
v15 = *(_QWORD *)(v18 + 48);
v34 = v37;
v22 = *(_QWORD *)(a2 + 32);
v38 = &v22;
v40 = a2 + 48;
v42 = a2 + 88;
v23 = *(_QWORD *)(a2 + 40);
v44 = &v23;
v46 = v49;
v49[0] = DestinationString.Length;
v50 = v53;
v53[0] = v20.Length;
v54 = v57;
v56 = *((_QWORD *)a3 + 1);
v57[0] = *a3;
v36 = v15;
v37[0] = v14;
v35 = 2i64;
v37[1] = 0;
v39 = 8i64;
v41 = 40i64;
v43 = 40i64;
v45 = 8i64;
v47 = 2i64;
v48 = Buffer;
v49[1] = 0;
v51 = 2i64;
v52 = v13;
v53[1] = 0;
v55 = 2i64;
v57[1] = 0;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C021E8,
(unsigned __int8 *)byte_140027560,
0i64,
0i64,
0xFu,
&v31);
}
if( v9 )
ExFreePoolWithTag(Buffer, 0x67696450u);
if( v12 )
ExFreePoolWithTag(v13, 0x67696450u);
}
}
}
}Referenced by:
PopFxStopDeviceAccounting