_PPM_IDLE_STATES

//0x578 bytes (sizeof) struct _PPM_IDLE_STATES { UCHAR EnforceStateConstraints; //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 LONG PreviousStatus; //0x3c UCHAR PreviouslyCancelled; //0x40 UCHAR PreviouslyDeniedCount; //0x41 struct _KAFFINITY_EX PrimaryProcessorMask; //0x48 struct _KAFFINITY_EX SecondaryProcessorMask; //0x150 LONG (*IdlePreExecute)(VOID* arg1, ULONG arg2, ULONG arg3, ULONG arg4, ULONG* arg5); //0x258 LONG (*IdleExecute)(VOID* arg1, ULONGLONG arg2, ULONG arg3, ULONG arg4, ULONG arg5, ULONG arg6, ULONG* arg7); //0x260 ULONG (*IdlePreselect)(VOID* arg1, struct _PROCESSOR_IDLE_CONSTRAINTS* arg2); //0x268 ULONG (*IdleTest)(VOID* arg1, ULONG arg2, ULONG arg3); //0x270 ULONG (*IdleAvailabilityCheck)(VOID* arg1, ULONG arg2); //0x278 VOID (*IdleComplete)(VOID* arg1, ULONG arg2, ULONG arg3, ULONG arg4, ULONG* arg5); //0x280 UCHAR (*IdleIsHalted)(VOID* arg1); //0x288 UCHAR (*IdleInitiateWake)(VOID* arg1); //0x290 VOID* Context; //0x298 struct _PROCESSOR_IDLE_CONSTRAINTS Constraints; //0x2a0 struct _KAFFINITY_EX DeepIdleSnapshot; //0x2d0 struct _PERFINFO_PPM_STATE_SELECTION* Tracing; //0x3d8 struct _PERFINFO_PPM_STATE_SELECTION* CoordinatedTracing; //0x3e0 struct _PPM_SELECTION_MENU ProcessorMenu; //0x3e8 struct _PPM_SELECTION_MENU CoordinatedMenu; //0x3f8 struct _PPM_COORDINATED_SELECTION CoordinatedSelection; //0x408 struct _PPM_IDLE_STATE State[1]; //0x420 };