| 2459 | |
| 2460 | #ifdef _WIN32 |
| 2461 | inline void LogUserPowerPlan() |
| 2462 | { |
| 2463 | wil::unique_any<GUID*, decltype(&::LocalFree), ::LocalFree> pPwrGUID; |
| 2464 | DWORD ret = PowerGetActiveScheme(NULL, pPwrGUID.put()); |
| 2465 | if (ret != ERROR_SUCCESS) |
| 2466 | return; |
| 2467 | |
| 2468 | UCHAR aBuffer[2048]; |
| 2469 | DWORD aBufferSize = sizeof(aBuffer); |
| 2470 | ret = PowerReadFriendlyName(NULL, pPwrGUID.get(), &NO_SUBGROUP_GUID, NULL, aBuffer, &aBufferSize); |
| 2471 | std::string friendlyName(StringUtil::WideStringToUTF8String((wchar_t*)aBuffer)); |
| 2472 | if (ret != ERROR_SUCCESS) |
| 2473 | return; |
| 2474 | |
| 2475 | DWORD acMax = 0, acMin = 0, dcMax = 0, dcMin = 0; |
| 2476 | |
| 2477 | if (PowerReadACValueIndex(NULL, pPwrGUID.get(), &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_THROTTLE_MAXIMUM, &acMax) || |
| 2478 | PowerReadACValueIndex(NULL, pPwrGUID.get(), &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_THROTTLE_MINIMUM, &acMin) || |
| 2479 | PowerReadDCValueIndex(NULL, pPwrGUID.get(), &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_THROTTLE_MAXIMUM, &dcMax) || |
| 2480 | PowerReadDCValueIndex(NULL, pPwrGUID.get(), &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_THROTTLE_MINIMUM, &dcMin)) |
| 2481 | return; |
| 2482 | |
| 2483 | Console.WriteLnFmt( |
| 2484 | " Power Profile = '{}'\n" |
| 2485 | " Power States (min/max)\n" |
| 2486 | " AC = {}% / {}%\n" |
| 2487 | " Battery = {}% / {}%\n", |
| 2488 | friendlyName.c_str(), acMin, acMax, dcMin, dcMax); |
| 2489 | } |
| 2490 | #endif |
| 2491 | |
| 2492 | #if defined(_WIN32) |
no test coverage detected