Share via

GetProcessInformation ProcessPowerThrottling does not seem to work

Mike Sullivan 26 Reputation points
2022-04-01T21:08:02.357+00:00

Hi. trying to examine the ProcessPowerThrottling structure because I want to make sure I am changing it. VS2019, SDK 10.0.22000.0
The Get fails, the Set succeeds (or so it says)

PROCESS_POWER_THROTTLING_STATE PowerThrottling;

// ProcessPowerThrottling - get PROCESS_POWER_THROTTLING_EXECUTION_SPEED
RtlZeroMemory(&PowerThrottling, sizeof(PROCESS_POWER_THROTTLING_STATE));
PowerThrottling.Version = PROCESS_POWER_THROTTLING_CURRENT_VERSION;
passFail = GetProcessInformation(
    GetCurrentProcess(),
    ProcessPowerThrottling,
    &PowerThrottling,
    sizeof(PROCESS_POWER_THROTTLING_STATE));

std::cout << "Get PowerThrottling, passFail:" << passFail << std::endl;
if (!passFail) {
    DWORD dw = GetLastError();
    std::cout << "PowerThrottling, failed:" << dw << std::endl;
}

output is

Get PowerThrottling, passFail:0
PowerThrottling, failed:87
Version:1
ControlMask:0
StateMask:0

Windows development | Windows API - Win32
Windows for business | Windows Client for IT Pros | User experience | Other
Developer technologies | C++
Developer technologies | C++

A high-level, general-purpose programming language, created as an extension of the C programming language, that has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation.

{count} votes

Answer accepted by question author
  1. Alexey Samokhin 81 Reputation points
    2022-09-25T04:19:54.707+00:00

    I just checked on Windows 11 22H2, build 22621.521, GetProcessInformation API with ProcessPowerThrottling parameter works as expected.

    1 person found this answer helpful.
    0 comments No comments

2 additional answers

Sort by: Most helpful
  1. Jeanine Zhang-MSFT 11,356 Reputation points Microsoft External Staff
    2022-04-13T09:07:54.15+00:00

    Hi,

    Welcome to Microsoft Q&A!

    This is document content issue in the statement of GetProcessInformation() API. Actually ProcessPowerThrottling is not a supported parameter in GetProcessInformation() API, but this is only used in SetProcessInformation() API. This is also claimed in the documentation of PROCESS_POWER_THROTTLING_STATE structure.

    According to the code of GetProcessInformation(), it will check ProcessInformationClass parameter for ProcessMemoryPriority / ProcessAppMemoryInfo / ProcessInPrivateInfo / ProcessProtectionLevelInfo / ProcessLeapSecondInfo / ProcessMachineTypeInfo, and other values will be treated as STATUS_INVALID_INFO_CLASS which eventually returns ERROR_INVALID_PARAMETER (0x57) in GetLastError().

    And I'm trying to report document content issue.

    Best Regards,

    Jeanine


    If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


  2. Castorix31 91,746 Reputation points
    2022-04-02T07:54:48.92+00:00

    ProcessPowerThrottling seems to be valid only for SetProcessInformation;
    For GetProcessInformation, it returns first :

    RtlNtStatusToDosError(STATUS_INVALID_INFO_CLASS)

    (then ERROR_INVALID_PARAMETER)


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.