PopHardDiskPowerSettingCallback
INT64 __stdcall PopHardDiskPowerSettingCallback(
const _GUID *SettingGuid,
UINT64 *NewValue,
UINT64 ValueLength,
PVOID Context){
__int64 v5;
__int64 v7;
__int64 v8;
__int128 v9;
__int128 v10;
__int128 v11;
__int128 v12;
__int128 v13;
__int128 v14;
POWER_ACTION_POLICY *p_PowerPolicy;
__int128 v16;
__int128 v17;
__int128 v18;
__int128 v19;
__int128 v20;
__int64 v21;
int v22;
int v23;
_SYSTEM_POWER_POLICY NewPolicy;
v5 = *(_QWORD *)&SettingGuid->Data1;
v7 = *(_QWORD *)&GUID_DISK_POWERDOWN_TIMEOUT.Data1 - *(_QWORD *)&SettingGuid->Data1;
if( *(_QWORD *)&GUID_DISK_POWERDOWN_TIMEOUT.Data1 == *(_QWORD *)&SettingGuid->Data1 )
v7 = *(_QWORD *)GUID_DISK_POWERDOWN_TIMEOUT.Data4 - *(_QWORD *)SettingGuid->Data4;
if( v7 )
{
v8 = *(_QWORD *)&GUID_DISK_BURST_IGNORE_THRESHOLD.Data1 - v5;
if( *(_QWORD *)&GUID_DISK_BURST_IGNORE_THRESHOLD.Data1 == v5 )
v8 = *(_QWORD *)GUID_DISK_BURST_IGNORE_THRESHOLD.Data4 - *(_QWORD *)SettingGuid->Data4;
if( !v8 && (_DWORD)ValueLength == 4 && NewValue )
{
LODWORD(StackSizesNumElements) = *(_DWORD *)NewValue;
return 0;
}
return(unsigned int)-1073741811;
}
if( (_DWORD)ValueLength != 4 || !NewValue )
return(unsigned int)-1073741811;
PopAcquirePolicyLock();
v9 = *((_OWORD *)PopPolicy + 1);
*(_OWORD *)&NewPolicy.Revision = *(_OWORD *)PopPolicy;
v10 = *((_OWORD *)PopPolicy + 2);
*(_OWORD *)&NewPolicy.SleepButton.Action = v9;
v11 = *((_OWORD *)PopPolicy + 3);
*(_OWORD *)&NewPolicy.LidClose.Flags = v10;
v12 = *((_OWORD *)PopPolicy + 4);
*(_OWORD *)&NewPolicy.Idle.Action = v11;
v13 = *((_OWORD *)PopPolicy + 5);
*(_OWORD *)&NewPolicy.IdleSensitivity = v12;
v14 = *((_OWORD *)PopPolicy + 6);
*(_OWORD *)&NewPolicy.WinLogonFlags = v13;
*(_OWORD *)&NewPolicy.DischargePolicy[0].Enable = v14;
p_PowerPolicy = &NewPolicy.DischargePolicy[1].PowerPolicy;
*(_OWORD *)&NewPolicy.DischargePolicy[0].PowerPolicy.EventCode = *((_OWORD *)PopPolicy + 7);
v16 = *((_OWORD *)PopPolicy + 9);
*(_OWORD *)&NewPolicy.DischargePolicy[1].PowerPolicy.Action = *((_OWORD *)PopPolicy + 8);
v17 = *((_OWORD *)PopPolicy + 10);
*(_OWORD *)&NewPolicy.DischargePolicy[2].Enable = v16;
v18 = *((_OWORD *)PopPolicy + 11);
*(_OWORD *)&NewPolicy.DischargePolicy[2].PowerPolicy.EventCode = v17;
v19 = *((_OWORD *)PopPolicy + 12);
*(_OWORD *)&NewPolicy.DischargePolicy[3].PowerPolicy.Action = v18;
v20 = *((_OWORD *)PopPolicy + 13);
v21 = *((_QWORD *)PopPolicy + 28);
*(_OWORD *)&NewPolicy.VideoTimeout = v19;
*(_OWORD *)&NewPolicy.VideoReserved[2] = v20;
*(_QWORD *)&NewPolicy.OverThrottled.Flags = v21;
LOBYTE(p_PowerPolicy) = 1;
NewPolicy.SpindownTimeout = *(_DWORD *)NewValue;
v22 = PopApplyPolicy((INT64)p_PowerPolicy, 0i64, &NewPolicy, 0xE8ui64);
v23 = 1000 * *(_DWORD *)NewValue;
if( !v23 )
v23 = -1;
if( v23 != PopDiskIdleTimeout )
{
PopDiskIdleTimeout = v23;
PopUpdateDiskIdleTimeoutSetting();
}
PopReleasePolicyLock();
if( v22 >= 0 )
return 0;
return(unsigned int)v22;
}Referenced by:
No references.