PopHardDiskPowerSettingCallback

NTSTATUS __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; 
  __int128 v15; 
  __int128 v16; 
  __int128 v17; 
  __int128 v18; 
  __int128 v19; 
  __int64 v20; 
  int v21; 
  int v22; 
  _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 )
    {
      *(&stru_140C23628 + 447) = *(_DWORD *)NewValue;
      return 0;
    }
    return -1073741811;
  }
  if( (_DWORD)ValueLength != 4 || !NewValue )
    return -1073741811;
  PopAcquirePolicyLock();
  v9 = *(_OWORD *)(*(&stru_140C23628 + 232) + 16i64);
  *(_OWORD *)&NewPolicy.Revision = **(&stru_140C23628 + 232);
  v10 = *(_OWORD *)(*(&stru_140C23628 + 232) + 32i64);
  *(_OWORD *)&NewPolicy.SleepButton.Action = v9;
  v11 = *(_OWORD *)(*(&stru_140C23628 + 232) + 48i64);
  *(_OWORD *)&NewPolicy.LidClose.Flags = v10;
  v12 = *(_OWORD *)(*(&stru_140C23628 + 232) + 64i64);
  *(_OWORD *)&NewPolicy.Idle.Action = v11;
  v13 = *(_OWORD *)(*(&stru_140C23628 + 232) + 80i64);
  *(_OWORD *)&NewPolicy.IdleSensitivity = v12;
  v14 = *(_OWORD *)(*(&stru_140C23628 + 232) + 96i64);
  *(_OWORD *)&NewPolicy.WinLogonFlags = v13;
  *(_OWORD *)&NewPolicy.DischargePolicy[0].Enable = v14;
  *(_OWORD *)&NewPolicy.DischargePolicy[0].PowerPolicy.EventCode = *(_OWORD *)(*(&stru_140C23628 + 232) + 112i64);
  v15 = *(_OWORD *)(*(&stru_140C23628 + 232) + 144i64);
  *(_OWORD *)&NewPolicy.DischargePolicy[1].PowerPolicy.Action = *(_OWORD *)(*(&stru_140C23628 + 232) + 128i64);
  v16 = *(_OWORD *)(*(&stru_140C23628 + 232) + 160i64);
  *(_OWORD *)&NewPolicy.DischargePolicy[2].Enable = v15;
  v17 = *(_OWORD *)(*(&stru_140C23628 + 232) + 176i64);
  *(_OWORD *)&NewPolicy.DischargePolicy[2].PowerPolicy.EventCode = v16;
  v18 = *(_OWORD *)(*(&stru_140C23628 + 232) + 192i64);
  *(_OWORD *)&NewPolicy.DischargePolicy[3].PowerPolicy.Action = v17;
  v19 = *(_OWORD *)(*(&stru_140C23628 + 232) + 208i64);
  v20 = *(_QWORD *)(*(&stru_140C23628 + 232) + 224i64);
  *(_OWORD *)&NewPolicy.VideoTimeout = v18;
  *(_OWORD *)&NewPolicy.VideoReserved[2] = v19;
  *(_QWORD *)&NewPolicy.OverThrottled.Flags = v20;
  NewPolicy.SpindownTimeout = *(_DWORD *)NewValue;
  v21 = PopApplyPolicy(1u, 0, &NewPolicy, 0xE8ui64);
  v22 = 1000 * *(_DWORD *)NewValue;
  if( !v22 )
    v22 = -1;
  if( v22 != PopDiskIdleTimeout )
  {
    PopDiskIdleTimeout = v22;
    PopUpdateDiskIdleTimeoutSetting();
  }
  PopReleasePolicyLock();
  if( v21 >= 0 )
    return 0;
  return v21;
}

Referenced by:

No references.