PopTraceThermalRequestPassiveHistogram
VOID __fastcall PopTraceThermalRequestPassiveHistogram(INT64 a1){
UINT64 *v2;
DEVICE_OBJECT *DeviceAttachmentBaseRefWithTag;
DEVICE_OBJECT *v4;
__int64 v5;
UINT64 *PoolWithTag;
const WCHAR *v7;
SIZE_T NumberOfBytes[2];
struct _EVENT_DATA_DESCRIPTOR v9;
int *v10;
__int64 v11;
__int64 v12;
int v13[2];
char v14[16];
int *v15;
int v16;
int v17;
__int64 *v18;
int v19;
int v20;
int v21[24];
NumberOfBytes[0] = 0i64;
v2 = 0i64;
DeviceAttachmentBaseRefWithTag = IoGetDeviceAttachmentBaseRefWithTag(
*(DEVICE_OBJECT **)(*(_QWORD *)(a1 + 32) + 48i64),
0x67446F50ui64);
v4 = DeviceAttachmentBaseRefWithTag;
if( DeviceAttachmentBaseRefWithTag )
v5 = *(_QWORD *)(*((_QWORD *)DeviceAttachmentBaseRefWithTag + 39) + 40i64);
else
v5 = 0i64;
if( v5 )
{
PoStoreDiagnosticContext(*(_QWORD *)(a1 + 24), 0i64, NumberOfBytes);
PoolWithTag = (UINT64 *)ExAllocatePoolWithTag(PagedPool, NumberOfBytes[0], 0x50455654ui64);
v2 = PoolWithTag;
if( PoolWithTag )
{
if( (int)PoStoreDiagnosticContext(*(_QWORD *)(a1 + 24), PoolWithTag, NumberOfBytes) >= 0 )
{
v7 = (const WCHAR *)((char *)v2 + v2[2]);
if( (PopDiagSnapPassiveHistogram(a1 + 40, v21) || PopThermalTelemetryVerbosity)
&& (unsigned int)dword_140C021E8 > 5
&& tlgKeywordOn((__int64)&dword_140C021E8, 0x400000000000i64) )
{
v13[1] = 0;
v10 = v13;
v12 = *(_QWORD *)(v5 + 136);
v13[0] = *(unsigned __int16 *)(v5 + 128);
v11 = 2i64;
tlgCreate1Sz_wchar_t((__int64)v14, v7);
v17 = 0;
v20 = 0;
v18 = PopThermalTrackingThresholds;
v15 = v21;
v16 = 84;
v19 = 21;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C021E8,
(unsigned __int8 *)byte_140026FF8,
0i64,
0i64,
7u,
&v9);
}
}
}
}
if( v4 )
ObfDereferenceObjectWithTag(v4, 0x67446F50ui64);
if( v2 )
ExFreePoolWithTag(v2, 0x50455654u);
}Referenced by:
PopCoolingSxTransition
PopCoolingTelemetryWorker
PopDeactiveThermalRequest
PopOrphanCoolingExtension