PopThermalWriteShutdownToRegistry
INT64 __stdcall PopThermalWriteShutdownToRegistry(){
void *v0;
__int64 v1;
WCHAR v2;
void *v3;
__int64 v4;
INT64 result;
WCHAR v6;
WCHAR v7;
WCHAR v8;
UINT64 DataSize;
UINT64 DataSizea;
struct _UNICODE_STRING DestinationString;
struct _UNICODE_STRING ValueName;
UNICODE_STRING v13;
int Data;
HANDLE KeyHandle;
KeyHandle = 0i64;
v3 = v0;
v4 = v1;
DestinationString = 0i64;
ValueName = 0i64;
v13 = 0i64;
result = PopOpenThermalLoggingKey(0, &KeyHandle, v2);
if( (int)result >= 0 )
{
RtlInitUnicodeString(&DestinationString, L"ShutdownOccurred", v6);
RtlInitUnicodeString(&ValueName, L"ShutdownSource", v7);
RtlInitUnicodeString(&v13, L"ShutdownTemperature", v8);
LODWORD(DataSize) = 4;
Data = 1;
LODWORD(result) = ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 4ui64, &Data, DataSize);
if( !PopThermalCriticalShutdownReported )
{
if( v4 )
{
LODWORD(DataSizea) = *(unsigned __int16 *)(v4 + 2);
LODWORD(result) = ZwSetValueKey(KeyHandle, &ValueName, 0i64, 1ui64, *(PVOID *)(v4 + 8), DataSizea);
}
if( v3 )
{
LODWORD(DataSizea) = 4;
LODWORD(result) = ZwSetValueKey(KeyHandle, &v13, 0i64, 4ui64, v3, DataSizea);
}
}
PopThermalCriticalShutdownReported = 1;
if( KeyHandle )
LODWORD(result) = ZwClose(KeyHandle);
}
return result;
}Referenced by:
PopCheckAndHandleThermalConditions
PopThermalProcessUsermodeEvent