Posts run to completion under m_PostLock; IRP completion and callbacks run after it is dropped.
static const State AwaitingCancelRemoved
static const SM_EVENT_INFO EventInfo[]
NTSTATUS m_FollowUpStatus
SM_RESULT OnCallbackRunning(_In_ IdleEvent Event)
BOOLEAN m_SuspendSupported
IDLE_POWER_CHANGE m_PowerChange
static const State CallbackRemoved
BOOLEAN DisarmCancel(_In_ PIRP Irp)
SM_RESULT OnSuspendUnsupported(_In_ IdleEvent Event)
static const State AwaitingCancel
static const State Holding
SM_RESULT OnAwaitingCancelRemoved(_In_ IdleEvent Event)
NTSTATUS Post(_In_ IdleEvent Event, _In_opt_ PIRP Irp)
Irp is the new idle IRP for RequestSubmitted, else NULL.
static const State Pending
SM_RESULT OnAwaitingWorkItem(_In_ IdleEvent Event)
SM_RESULT OnStarting(_In_ IdleEvent Event)
SM_RESULT OnRemoved(_In_ IdleEvent Event)
SM_RESULT OnCallbackRemoved(_In_ IdleEvent Event)
BOOLEAN SelectiveSuspendSupported()
static const State Parked
static const State CallbackDone
SM_RESULT OnPresent(_In_ IdleEvent Event)
SM_RESULT ReleaseForRemoval()
VOID FinishHeld(_In_ NTSTATUS Status)
IDLE_FOLLOW_UP m_FollowUp
SM_RESULT OnPending(_In_ IdleEvent Event)
VOID CompleteIdleRequest(_In_ PIRP Irp, _In_ NTSTATUS Status)
static const State CallbackRunning
VOID MarkRequestPending(_In_ PIRP Irp)
VOID RejectNew(_In_ NTSTATUS Status)
BOOLEAN ArmCancel(_In_ PIRP Irp)
SM_RESULT OnParked(_In_ IdleEvent Event)
SM_RESULT OnAwaitingCancel(_In_ IdleEvent Event)
SM_RESULT OnReady(_In_ IdleEvent Event)
static const State Present
static const State SuspendUnsupported
static const State Removed
SM_RESULT OnNoRequest(_In_ IdleEvent Event)
VOID InvokeIdleCallback(_In_ PIRP Irp)
static const State Starting
SM_RESULT OnHolding(_In_ IdleEvent Event)
static const State NoRequest
static const State AwaitingWorkItem
Run to completion engine. The first thread to post into an idle machine drains the queue; everyone el...
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
_In_ UCXUSBDEVICE _In_ PDEVICE_OBJECT Pdo
One state. Handler gets every event the state sees.