PopTraceThermalRequestPassiveHistogram
void __fastcall PopTraceThermalRequestPassiveHistogram(__int64 a1){
VOID **v2;
_DEVICE_OBJECT *DeviceAttachmentBaseRefWithTag;
UINT8 v4;
_DEVICE_OBJECT *v5;
_QWORD *DeviceNode;
VOID **PoolWithTag;
UINT8 v8;
const WCHAR *v9;
char v10;
UINT64 BufferSizePointer[2];
_EVENT_DATA_DESCRIPTOR v12;
int *v13;
__int64 v14;
__int64 v15;
int v16[2];
char v17[16];
UINT64 *v18;
int v19;
int v20;
_BYTE *v21;
int v22;
int v23;
UINT64 TimeBuckets[12];
BufferSizePointer[0] = 0i64;
v2 = 0i64;
DeviceAttachmentBaseRefWithTag = IoGetDeviceAttachmentBaseRefWithTag(
*(_DEVICE_OBJECT **)(*(_QWORD *)(a1 + 32) + 48i64),
0x67446F50ui64);
v5 = DeviceAttachmentBaseRefWithTag;
if( DeviceAttachmentBaseRefWithTag )
DeviceNode = DeviceAttachmentBaseRefWithTag->DeviceObjectExtension->DeviceNode;
else
DeviceNode = 0i64;
if( DeviceNode )
{
PoStoreDiagnosticContext(*(_DIAGNOSTIC_CONTEXT **)(a1 + 24), 0i64, BufferSizePointer, v4);
PoolWithTag = ExAllocatePoolWithTag(1ui64, BufferSizePointer[0], 1346721364i64);
v2 = PoolWithTag;
if( PoolWithTag )
{
if( PoStoreDiagnosticContext(
*(_DIAGNOSTIC_CONTEXT **)(a1 + 24),
(_DIAGNOSTIC_BUFFER *)PoolWithTag,
BufferSizePointer,
v8) >= 0 )
{
v9 = (const WCHAR *)((char *)v2[2] + (_QWORD)v2);
PopDiagSnapPassiveHistogram((_POP_THERMAL_TELEMETRY_TRACKER *)(a1 + 40), TimeBuckets);
if( (v10 || PopThermalTelemetryVerbosity)
&& *(&stru_140C00F40 + 1194) > 5u
&& tlgKeywordOn((__int64)&stru_140C00F40 + 4776, 0x400000000000i64) )
{
v16[1] = 0;
v13 = v16;
v15 = DeviceNode[17];
v16[0] = *((unsigned __int16 *)DeviceNode + 64);
v14 = 2i64;
tlgCreate1Sz_wchar_t((__int64)v17, v9);
v20 = 0;
v23 = 0;
v21 = PopThermalTrackingThresholds;
v18 = TimeBuckets;
v19 = 84;
v22 = 21;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&stru_140C00F40 + 4776,
(unsigned __int8 *)byte_140026FF8,
0i64,
0i64,
7u,
&v12);
}
}
}
}
if( v5 )
ObfDereferenceObjectWithTag(v5, 0x67446F50ui64);
if( v2 )
ExFreePoolWithTag(v2, 0x50455654u);
}Referenced by:
PopCoolingSxTransition
PopCoolingTelemetryWorker
PopDeactiveThermalRequest
PopOrphanCoolingExtension