4#ifndef _FXPOWERIDLESTATEMACHINE_H_
5#define _FXPOWERIDLESTATEMACHINE_H_
244 m_Flags &= ~FxPowerIdleTimerStarted;
static const FxIdleStateTable m_StateTable[]
static FxPowerIdleStates InDxDisabled(__inout FxPowerIdleMachine *This)
static MdDeferredRoutineType _PowerTimeoutDpcRoutine
static FxPowerIdleStates PowerUp(__inout FxPowerIdleMachine *This)
MxTimer m_PowerTimeoutTimer
static const FxPowerIdleTargetState m_StoppedStates[]
static FxPowerIdleStates CheckIoCount(__inout FxPowerIdleMachine *This)
BOOLEAN QueryReturnToIdle(VOID)
static FxPowerIdleStates TimedOutEnabled(__inout FxPowerIdleMachine *This)
static const FxPowerIdleTargetState m_TimedOutStates[]
static FxPowerIdleStates DecrementIo(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates TimingOut(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates InDxPowerUpFailure(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates InDxIoIncrement(__inout FxPowerIdleMachine *This)
VOID ProcessEventLocked(__in FxPowerIdleEvents Event)
static FxPowerIdleStates PowerUpComplete(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates PowerFailed(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates StartedPowerFailed(__inout FxPowerIdleMachine *This)
BOOLEAN CancelIdleTimer(VOID)
static const FxPowerIdleTargetState m_WaitForTimeoutStates[]
_Must_inspect_result_ NTSTATUS PowerReference(__in BOOLEAN WaitForD0, __in_opt PVOID Tag=NULL, __in_opt LONG Line=0, __in_opt PSTR File=NULL)
static const ULONG m_IdleTimerTolerableDelayMS
static const FxPowerIdleTargetState m_DisabledStates[]
static FxPowerIdleStates TimedOutPowerDown(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates TimedOutPowerDownFailed(__inout FxPowerIdleMachine *This)
struct FxPowerIdleMachine::@4774::@4776 m_FlagsByName
FxTagTracker * m_TagTracker
_Must_inspect_result_ NTSTATUS PowerReferenceWithFlags(__in FxPowerReferenceFlags Flags)
static FxPowerIdleStates Disabling(__inout FxPowerIdleMachine *This)
FxPowerIdleStates m_StateHistory[FxPowerIdleEventQueueDepth]
~FxPowerIdleMachine(VOID)
_Must_inspect_result_ NTSTATUS PowerReferenceWorker(__in BOOLEAN WaitForD0, __in FxPowerReferenceFlags Flags, __in_opt PVOID Tag=NULL, __in_opt LONG Line=0, __in_opt PSTR File=NULL)
static const FxPowerIdleTargetState m_StartedStates[]
FxPowerIdleEvents m_EventHistory[FxPowerIdleEventQueueDepth]
static FxPowerIdleStates InDx(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates StartTimer(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates CancelTimer(__inout FxPowerIdleMachine *This)
FxCREvent m_D0NotificationEvent
_Must_inspect_result_ NTSTATUS IoIncrement(VOID)
static FxPowerIdleStates InDxEnabled(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates TimedOutDisabled(__inout FxPowerIdleMachine *This)
BOOLEAN IsTransitioning(VOID)
static const FxPowerIdleTargetState m_BusyStates[]
_Must_inspect_result_ NTSTATUS IoIncrementWithFlags(__in FxPowerReferenceFlags Flags, __out_opt PULONG Count=NULL)
static FxPowerIdleStates GoingToDx(__inout FxPowerIdleMachine *This)
VOID SendD0Notification(VOID)
static FxPowerIdleStates TimedOutIoIncrement(__inout FxPowerIdleMachine *This)
static FxPowerIdleStates TimerExpired(__inout FxPowerIdleMachine *This)
static const FxPowerIdleTargetState m_DisablingWaitForTimeoutStates[]
static const FxPowerIdleTargetState m_TimerRunningStates[]
static FxPowerIdleStates StartedPowerUp(__inout FxPowerIdleMachine *This)
VOID CheckAssumptions(VOID)
LARGE_INTEGER m_PowerTimeout
BOOLEAN DisableTimer(VOID)
FxPowerIdleStates m_CurrentIdleState
VOID ProcessPowerEvent(__in FxPowerIdleEvents Event)
static FxPowerIdleStates InDxStopped(__inout FxPowerIdleMachine *This)
static const FxPowerIdleTargetState m_InDxStates[]
UCHAR SendPnpPowerUpEvent
VOID IoDecrement(__in_opt PVOID Tag=NULL, __in_opt LONG Line=0, __in_opt PSTR File=NULL)
static FxPowerIdleStates DisablingTimerExpired(__inout FxPowerIdleMachine *This)
UCHAR m_EventHistoryIndex
static const FxPowerIdleTargetState m_PowerFailedWaitForTimeoutStates[]
UCHAR m_StateHistoryIndex
_Must_inspect_result_ __inline BOOLEAN Stop(VOID)
@ FxPowerIdleTimerCanceled
@ FxPowerIdleSendPnpPowerUpEvent
@ FxPowerIdleTimerEnabled
@ FxPowerIdleTimerStarted
@ FxPowerIdleIoPresentSent
@ FxIdleDisablingWaitForTimeout
@ FxIdleTimedOutIoIncrement
@ FxIdleTimedOutPowerDown
@ FxIdleDisablingTimerExpired
@ FxIdlePowerFailedWaitForTimeout
@ FxIdleInDxPowerUpFailure
@ FxIdleTimedOutPowerDownFailed
@ FxIdleStartedPowerFailed
const UCHAR FxPowerIdleEventQueueDepth
FxPowerIdleStates(* PFN_POWER_IDLE_STATE_ENTRY_FUNCTION)(FxPowerIdleMachine *)
@ FxPowerReferenceDefault
@ FxPowerReferenceSendPnpPowerUpEvent
@ PowerIdleEventIoIncrement
@ PowerIdleEventPowerUpComplete
@ PowerIdleEventPowerDown
@ PowerIdleEventPowerDownFailed
@ PowerIdleEventTimerExpired
@ PowerIdleEventPowerUpFailed
@ PowerIdleEventIoDecrement
_In_opt_ PVOID _Out_ BOOLEAN * Stop
#define _Must_inspect_result_
KDEFERRED_ROUTINE MdDeferredRoutineType
NTSTATUS EnterCRAndWaitAndLeave(VOID)
const FxPowerIdleTargetState * TargetStates
PFN_POWER_IDLE_STATE_ENTRY_FUNCTION StateFunc
FxPowerIdleEvents PowerIdleEvent
FxPowerIdleStates PowerIdleState
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN WaitForD0
_Must_inspect_result_ _In_ ULONG Flags