23 {
NULL,
"SuspendingUnconfigured", 0,
33 {
NULL,
"UnconfiguredHubSuspended", 0,
76 case DsmEvent::ClientResetPipe:
77 case DsmEvent::ClientClearStall:
78 case DsmEvent::ClientSetInterface:
79 case DsmEvent::ClientSyncResetPipe:
83 case DsmEvent::DeviceTextQuery:
87 case DsmEvent::ClientCyclePort:
91 case DsmEvent::NoPingResponse:
94 case DsmEvent::HubSuspending:
97 case DsmEvent::HubGetDescriptor:
102 case DsmEvent::ClientUnconfigure:
106 case DsmEvent::ClientResetDevice:
109 case DsmEvent::ClientSelectConfig:
113 case DsmEvent::PdoPowerDown:
116 case DsmEvent::PortDetached:
119 case DsmEvent::LpmSettingChanged:
123 case DsmEvent::PdoPowerDownFinal:
131 case DsmEvent::ClientStreams:
145 case DsmEvent::PortFault:
149 case DsmEvent::PortSuspendDone:
152 case DsmEvent::PortDetached:
165 if (
Event != DsmEvent::ControllerIoctlDone)
177 case DsmEvent::PortDetached:
181 case DsmEvent::PortDisableDone:
182 case DsmEvent::PortFault:
204 case DsmEvent::Succeeded:
205 case DsmEvent::Failed:
208 case DsmEvent::HubSuspending:
212 case DsmEvent::PortDetached:
234 case DsmEvent::ClientSetInterface:
235 case DsmEvent::ClientResetPipe:
236 case DsmEvent::ClientSyncResetPipe:
237 case DsmEvent::ClientUnconfigure:
238 case DsmEvent::ClientSelectConfig:
239 case DsmEvent::ClientResetDevice:
240 case DsmEvent::ClientClearStall:
244 case DsmEvent::NoPingResponse:
247 case DsmEvent::DeviceTextQuery:
251 case DsmEvent::ClientCyclePort:
255 case DsmEvent::HubGetDescriptor:
259 case DsmEvent::NeedsReenumeration:
262 case DsmEvent::ResumeDone:
266 case DsmEvent::PdoCleanup:
270 case DsmEvent::PortDetached:
273 case DsmEvent::HubStopping:
277 case DsmEvent::ClientStreams:
280 case DsmEvent::HubStoppingAfterSuspend:
284 case DsmEvent::PortFault:
287 case DsmEvent::PdoPreStart:
299 if (
Event != DsmEvent::ControllerIoctlDone)
311 case DsmEvent::NeedsReenumeration:
314 case DsmEvent::ResumedWithHub:
317 case DsmEvent::SuspendedAfterHubResume:
320 case DsmEvent::PortDetached:
334 case DsmEvent::PortResumeDone:
337 case DsmEvent::PortFault:
338 case DsmEvent::PortResumeTimeout:
339 case DsmEvent::PortNowDisabled:
340 case DsmEvent::PortNowEnabledOnReconnect:
343 case DsmEvent::PortDetached:
372 if ((
Event != DsmEvent::ControllerIoctlDone) && (
Event != DsmEvent::ControllerIoctlFailed))
385 case DsmEvent::TransferDone:
389 case DsmEvent::TransferFailed:
405 if (
Event != DsmEvent::ControllerIoctlDone)
417 case DsmEvent::PortSuspendDone:
418 return EndWith(DsmEvent::Succeeded);
420 case DsmEvent::HubSuspending:
423 case DsmEvent::PortFault:
424 return EndWith(DsmEvent::Failed);
426 case DsmEvent::PortDetached:
427 return EndWith(DsmEvent::PortDetached);
440 case DsmEvent::PortFault:
442 return EndWith(DsmEvent::Failed);
444 case DsmEvent::HubSuspending:
447 case DsmEvent::PortSuspendDone:
448 return EndWith(DsmEvent::Succeeded);
450 case DsmEvent::PortDetached:
452 return EndWith(DsmEvent::PortDetached);
466 case DsmEvent::PortFault:
467 case DsmEvent::PortSuspendDone:
469 return EndWith(DsmEvent::Failed);
471 case DsmEvent::HubSuspending:
474 case DsmEvent::PortDetached:
476 return EndWith(DsmEvent::PortDetached);
489 case DsmEvent::PortSuspendDone:
490 case DsmEvent::PortFault:
491 case DsmEvent::PortDisableDone:
492 return EndWith(DsmEvent::HubSuspending);
494 case DsmEvent::PortDetached:
495 return EndWith(DsmEvent::PortDetached);
510 case DsmEvent::PortNowEnabledOnReconnect:
515 case DsmEvent::HubSuspending:
519 case DsmEvent::PdoPowerUp:
522 case DsmEvent::PortResumeDone:
526 case DsmEvent::PortNowDisabled:
554 if ((
Event != DsmEvent::ControllerIoctlDone) && (
Event != DsmEvent::ControllerIoctlFailed))
567 case DsmEvent::PortSuspendDone:
570 case DsmEvent::HubSuspending:
573 case DsmEvent::PortDetached:
574 return EndWith(DsmEvent::PortDetached);
576 case DsmEvent::PortFault:
577 return EndWith(DsmEvent::PortFault);
590 case DsmEvent::PortSuspendDone:
594 case DsmEvent::PortDetached:
596 return EndWith(DsmEvent::PortDetached);
598 case DsmEvent::PortFault:
600 return EndWith(DsmEvent::PortFault);
614 case DsmEvent::PortFault:
615 case DsmEvent::PortResumeTimeout:
616 case DsmEvent::PortResumeAbortedForSuspend:
618 return EndWith(DsmEvent::PortFault);
620 case DsmEvent::PortResumeDone:
624 case DsmEvent::PortDetached:
626 return EndWith(DsmEvent::PortDetached);
628 case DsmEvent::PortNowDisabled:
629 case DsmEvent::PortNowEnabledOnReconnect:
631 return EndWith(DsmEvent::NeedsReenumeration);
642 if ((
Event != DsmEvent::ControllerIoctlDone) && (
Event != DsmEvent::ControllerIoctlFailed))
659 if ((
Event != DsmEvent::TransferDone) && (
Event != DsmEvent::TransferFailed))
673 return EndWith(DsmEvent::NeedsReenumeration);
675 return EndWith(DsmEvent::ResumeDone);
683 return EndWith(DsmEvent::NeedsReenumeration);
700 case DsmEvent::PdoPowerUp:
704 case DsmEvent::HubSuspending:
708 case DsmEvent::HubStopping:
720 if (
Event != DsmEvent::ControllerIoctlDone)
733 case DsmEvent::PortDetached:
734 return EndWith(DsmEvent::PortDetached);
736 case DsmEvent::PortFault:
737 case DsmEvent::PortDisableDone:
738 return EndWith(DsmEvent::HubStopping);
751 case DsmEvent::NeedsReenumeration:
757 case DsmEvent::ResumedWithHub:
763 case DsmEvent::SuspendedAfterHubResume:
783 case DsmEvent::PdoPowerUp:
786 case DsmEvent::HubSuspending:
799 if (
Event != DsmEvent::ControllerIoctlDone)
820 case DsmEvent::PortDetached:
822 return EndWith(DsmEvent::PortDetached);
824 case DsmEvent::PortFault:
825 return EndWith(DsmEvent::PortFault);
827 case DsmEvent::PortDisableDone:
842 case DsmEvent::PdoPowerUp:
843 return EndWith(DsmEvent::NeedsReenumeration);
845 case DsmEvent::HubSuspending:
SM_RESULT RemovalDropPowerAndPark()
BOOLEAN ArmForWakeWanted()
BOOLEAN m_EndpointsConfigured
SM_RESULT SelectConfigValidate()
SM_RESULT SuspendedPortDownForHub(_In_ DsmEvent Event)
VOID FailHubDescriptorRequest()
SM_RESULT UnconfiguredDisabledForRestart(_In_ DsmEvent Event)
static const State Requesting
SM_RESULT SuspendedPortResumed(_In_ DsmEvent Event)
static const State SuspendedUnconfigured
static const State AwaitingPort
SM_RESULT ReenumForHubResume(_In_ BOOLEAN Configured)
static const State SuspendingUnconfigured
SM_RESULT RemovalDeleteForgetAndPark()
SM_RESULT UnconfiguredDisabledForStop(_In_ DsmEvent Event)
SM_RESULT SuspendedResumedByPort()
BOOLEAN DeviceArmedForWake()
SM_RESULT SuspendEndedForHub(_In_ DsmEvent Event)
static const State ResumingPort
static const State OffAfterD3Cold
SM_RESULT OnSuspendingUnconfigured(_In_ DsmEvent Event)
SM_RESULT SuspendedPurgedAfterWake(_In_ DsmEvent Event)
SM_RESULT SuspendedIoStartedOnWake(_In_ DsmEvent Event)
SM_RESULT OnSuspendedUnconfigured(_In_ DsmEvent Event)
SM_RESULT ReenumForResume(_In_ BOOLEAN Configured)
VOID RequestPortDisable()
SM_RESULT SuspendedPurgedForReset(_In_ DsmEvent Event)
VOID MarkSystemWakeSource()
BOOLEAN ResetOnResumeFromS0()
VOID CyclePortForClient()
SM_RESULT SuspendedPortOffForStop(_In_ DsmEvent Event)
VOID ClearResetAtResume()
SM_RESULT UnconfiguredSuspendedForHub(_In_ DsmEvent Event)
SM_RESULT SuspendIoAborted(_In_ DsmEvent Event)
SM_RESULT DisableForRemoval(_In_ DSM_THEN After)
VOID RequestPortSuspend()
SM_RESULT SuspendPortArmed(_In_ DsmEvent Event)
SM_RESULT SuspendedIoStarted(_In_ DsmEvent Event)
static const State SuspendingPort
SM_RESULT UnconfiguredByClient(_In_ DsmEvent Event)
SM_RESULT OnOffAfterD3Cold(_In_ DsmEvent Event)
static const State SettingU2Timeout
SM_RESULT ReenumForPreStart()
static const State StoppedReady
VOID SetNullConfiguration()
SM_RESULT RemovalAckAndPark()
SM_RESULT SuspendedPortOffForReset(_In_ DsmEvent Event)
SM_RESULT EndWith(_In_ DsmEvent Result)
SM_RESULT OnAwaitingPowerUpAfterWake(_In_ DsmEvent Event)
SM_RESULT ToAwaitingDetachOrRemove(_In_ BOOLEAN Configured)
static const State SuspendedHubSuspended
static const State DisablingDevice
SM_RESULT SuspendedNeedsReset()
SM_RESULT CallStep(_In_ DSM_THEN Then)
VOID GetDescriptorForHub()
static const State DisablingPort
SM_RESULT SuspendPortPlain(_In_ DsmEvent Event)
SM_RESULT SuspendPortArmFailed(_In_ DsmEvent Event)
VOID DereferenceDevicePower()
VOID DisablePortMarkingReset()
SM_RESULT EnterHubSuspendedReleasingPower()
static const State AwaitingPowerUpForReset
SM_RESULT SuspendedResumeDone()
BOOLEAN ResetAtResumeMarked()
SM_RESULT DetachUnconfigured()
SM_RESULT EnterAwaitingPowerUpAfterWake()
SM_RESULT HubDescriptorDone(_In_ DsmEvent Event)
SM_RESULT ReportMissingAndLeave()
static const State DeviceSuspended
SM_RESULT SuspendedBackDown(_In_ DsmEvent Event)
SM_RESULT ReenumForClientUnconfigured()
SM_RESULT ForwardStreams(_In_ const State *ReturnTo)
SM_RESULT EnterSuspended()
SM_RESULT AtPassive(_In_ DSM_THEN Then)
BOOLEAN DisableWhenUnused()
SM_RESULT OnAwaitingPowerUpForReset(_In_ DsmEvent Event)
SM_RESULT UnconfiguredResumedWithHub(_In_ DsmEvent Event)
static const State RequestingCritical
VOID ForceResetOnNextStart()
SM_RESULT OnSuspendedHubSuspended(_In_ DsmEvent Event)
static const State AwaitingPowerUpAfterWake
SM_RESULT OnUnconfiguredOn(_In_ DsmEvent Event)
SM_RESULT SuspendIoPurged(_In_ DsmEvent Event)
SM_RESULT UnconfiguredPortOffForStop(_In_ DsmEvent Event)
static const State Stopped
SM_RESULT OnUnconfiguredHubSuspended(_In_ DsmEvent Event)
SM_RESULT OnDeviceSuspended(_In_ DsmEvent Event)
SM_RESULT EnterSuspendingUnconfigured()
SM_RESULT SuspendedDisarmed(_In_ DsmEvent Event)
SM_RESULT GoUnconfiguredOn()
SM_RESULT SuspendArmed(_In_ DsmEvent Event)
static const State UnconfiguredHubSuspended
static const State UnconfiguredOn
static SM_RESULT SmTransition(_In_ const State *Target)
static SM_RESULT SmCall(_In_ const State *Start)
static SM_RESULT SmHandled()
static SM_RESULT SmUnhandled()
static const DsmEvent PowerLpmDiscards[]
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
#define SM_STATE_TAKES_REQUESTS
#define SM_STATE_YIELDS_TO_CALLER
One state. Handler gets every event the state sees.
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
_In_ WDFDPC _In_ BOOLEAN Wait