PopGetPowerSettingValue
NTSTATUS __stdcall PopGetPowerSettingValue(
_GUID *SettingGuid,
_SYSTEM_POWER_CONDITION PowerState,
VOID *Buffer,
VOID *ReturnedLength,
UINT64 BufferLength,
UINT64 *ReturnedLengtha){
signed int v8;
_POP_POWER_SETTING_CONFIGURATION *PowerSettingConfiguration;
NTSTATUS v10;
__int64 v11;
size_t v12;
v8 = (int)Buffer;
ExAcquireFastMutex((PFAST_MUTEX)((char *)&stru_140C23628 + 3000));
if( (unsigned int)v8 > 1 )
v8 = *(&stru_140C23628 + 441);
PowerSettingConfiguration = PopFindPowerSettingConfiguration(SettingGuid, 0xFFFFFFFFui64);
v10 = 0;
if( PowerSettingConfiguration && (v11 = *(_QWORD *)&PowerSettingConfiguration[2 * v8 + 16]) != 0 )
{
v12 = *(_DWORD *)(v11 + 4);
*(_DWORD *)ReturnedLengtha = v12;
if( v12 > 4 )
v10 = -1073741306;
else
memmove(ReturnedLength, (const VOID *)(*(_QWORD *)&PowerSettingConfiguration[2 * v8 + 16] + 12i64), v12);
}
else
{
v10 = -1073741811;
}
KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&stru_140C23628 + 3000));
return v10;
}Referenced by:
PopBatteryUpdateAlarms
PopCaptureSleepStudyStatistics
PopEsInStandbyEvaluate
PopScanIdleList