//0x5b0 bytes (sizeof)
struct _PPM_IDLE_STATES
{
UCHAR InterfaceVersion; //0x0
UCHAR IdleOverride; //0x1
UCHAR EstimateIdleDuration; //0x2
UCHAR ExitLatencyTraceEnabled; //0x3
UCHAR NonInterruptibleTransition; //0x4
UCHAR UnaccountedTransition; //0x5
UCHAR IdleDurationLimited; //0x6
UCHAR IdleCheckLimited; //0x7
ULONGLONG IdleReevaluationDuration; //0x8
UCHAR StrictVetoBias; //0x10
ULONG ExitLatencyCountdown; //0x14
ULONG TargetState; //0x18
ULONG ActualState; //0x1c
ULONG OldState; //0x20
ULONG OverrideIndex; //0x24
ULONG ProcessorIdleCount; //0x28
ULONG Type; //0x2c
ULONGLONG LevelId; //0x30
USHORT ReasonFlags; //0x38
volatile ULONGLONG InitiateWakeStamp; //0x40
LONG PreviousStatus; //0x48
ULONG PreviousCancelReason; //0x4c
struct
_KAFFINITY_EX PrimaryProcessorMask; //0x50
struct
_KAFFINITY_EX SecondaryProcessorMask; //0x158
VOID (*IdlePrepare)(struct
_PROCESSOR_IDLE_PREPARE_INFO* arg1); //0x260
LONG (*IdlePreExecute)(VOID* arg1, ULONG arg2, ULONG arg3, ULONG arg4, ULONG* arg5); //0x268
LONG (*IdleExecute)(VOID* arg1, ULONGLONG arg2, ULONG arg3, ULONG arg4, ULONG arg5, ULONG arg6, ULONG* arg7); //0x270
ULONG (*IdlePreselect)(VOID* arg1, struct
_PROCESSOR_IDLE_CONSTRAINTS* arg2); //0x278
ULONG (*IdleTest)(VOID* arg1, ULONG arg2, ULONG arg3); //0x280
ULONG (*IdleAvailabilityCheck)(VOID* arg1, ULONG arg2); //0x288
VOID (*IdleComplete)(VOID* arg1, ULONG arg2, ULONG arg3, ULONG arg4, ULONG* arg5); //0x290
VOID (*IdleCancel)(VOID* arg1, ULONG arg2); //0x298
UCHAR (*IdleIsHalted)(VOID* arg1); //0x2a0
UCHAR (*IdleInitiateWake)(VOID* arg1); //0x2a8
struct
_PROCESSOR_IDLE_PREPARE_INFO PrepareInfo; //0x2b0
struct
_KAFFINITY_EX DeepIdleSnapshot; //0x308
struct
_PERFINFO_PPM_STATE_SELECTION* Tracing; //0x410
struct
_PERFINFO_PPM_STATE_SELECTION* CoordinatedTracing; //0x418
struct
_PPM_SELECTION_MENU ProcessorMenu; //0x420
struct
_PPM_SELECTION_MENU CoordinatedMenu; //0x430
struct
_PPM_COORDINATED_SELECTION CoordinatedSelection; //0x440
struct
_PPM_IDLE_STATE State[1]; //0x458
};