typedef struct _PPM_PERF_STATES
{
    unsigned long Count;
    unsigned long MaxFrequency;
    unsigned long PStateCap;
    unsigned long TStateCap;
    unsigned long MaxPerfState;
    unsigned long MinPerfState;
    unsigned long LowestPState;
    unsigned long IncreaseTime;
    unsigned long DecreaseTime;
    unsigned char BusyAdjThreshold;
    unsigned char Reserved;
    unsigned char ThrottleStatesOnly;
    unsigned char PolicyType;
    unsigned long TimerInterval;
    union
    {
        unsigned long AsULONG;
        struct
        {
            unsigned long IncreasePolicy : 2;
            unsigned long DecreasePolicy : 2;
            unsigned long Reserved : 28;
        };
    } Flags;
    KAFFINITY_EX TargetProcessors;
    long (*PStateHandler)(unsigned __int64, unsigned __int64, unsigned __int64);
    unsigned __int64 PStateContext;
    long (*TStateHandler)(unsigned __int64, unsigned __int64, unsigned __int64);
    unsigned __int64 TStateContext;
    unsigned char (*FeedbackHandler)(unsigned long *, unsigned __int64, unsigned char);
    void (*GetFFHThrottleState)(unsigned __int64 *);
    PPM_PERF_STATE State[1];
} PPM_PERF_STATES, *PPPM_PERF_STATES;