51 { &
Empty,
"StartingEmpty", 0,
64 {
NULL,
"OldDeviceWait", 0,
68 {
NULL,
"OverCurrentWait", 0,
76 {
NULL,
"UserResetWait", 0,
81 {
NULL,
"TimerFlush", 0,
143 {
NULL,
"ErrorRestarting", 0,
158 { &Timed,
"ResetEnabledWait", 0,
162 { &Timed,
"ResetFlush", 0,
169 { &Timed,
"ResumeRecovery", 0,
173 { &Timed,
"ResumeFlush", 0,
198 {
NULL,
"AttachFailedWait", 0,
202 {
NULL,
"SuperSpeedOffWait", 0,
214 { &Transfer,
"PoweringPort", 0,
218 { &Transfer,
"QueryingOverCurrent", 0,
222 { &Transfer,
"SendingReset", 0,
226 { &Transfer,
"SendingWarmReset", 0,
230 { &Transfer,
"SendingResume", 0,
234 { &Transfer,
"SendingSuspend", 0,
238 { &Transfer,
"DisablingOnRequest", 0,
242 { &Transfer,
"DisablingForCycle", 0,
246 { &Transfer,
"DisablingBeforeConnect", 0,
250 { &Transfer,
"QuiescingForHubSuspend", 0,
255 { &Transfer,
"DisablingForCycleTimed", 0,
259 { &Transfer,
"DisablingOnSuspendTimed", 0,
263 { &Transfer,
"DisablingOnResetTimeout", 0,
267 { &Transfer,
"ReadingForResume", 0,
271 { &Transfer,
"ReadingAfterResumeTimeout", 0,
275 { &Transfer,
"SettingLpmTimeout", 0,
279 { &Transfer,
"DisablingSuperSpeed", 0,
283 { &Transfer,
"DisablingSuperSpeedOnRequest", 0,
288 { &Transfer,
"EnablingSuperSpeedOnStop", 0,
292 { &Transfer,
"EnablingSuperSpeedOnTimer", 0,
296 { &Transfer,
"ResetTimeoutStatus", 0,
318 case PortEvent::ChangeConnect:
321 case PortEvent::ChangeOverCurrent:
324 case PortEvent::ChangeOverCurrentCleared:
327 case PortEvent::ChangeResetDone:
328 case PortEvent::ChangeDisabled:
329 case PortEvent::ChangeResumed:
330 case PortEvent::ChangeError:
335 case PortEvent::ChangeNeedsHubReset:
340 case PortEvent::HubStopping:
343 case PortEvent::HubSuspending:
373 if (
Event == PortEvent::SubDone)
379 if (
Event == PortEvent::ChangeNone)
382 if (
Event == PortEvent::ChangeResetBusy)
403 case PortEvent::ChangeOverCurrentCleared:
406 case PortEvent::ChangeOverCurrent:
409 case PortEvent::ChangeConnect:
412 case PortEvent::ChangeNeedsHubReset:
418 case PortEvent::ChangeDisabled:
419 case PortEvent::ChangeResumed:
420 case PortEvent::ChangeResetDone:
421 case PortEvent::ChangeError:
428 case PortEvent::ChangeNeedsHubReset:
432 case PortEvent::ErrorIgnore:
433 case PortEvent::ChangeConnect:
436 case PortEvent::ErrorCycle:
439 case PortEvent::ErrorDisableAndCycle:
442 case PortEvent::ChangeOverCurrentCleared:
445 case PortEvent::ChangeOverCurrent:
449 SM_BREAK(
"Port error response not valid here");
453 case PortEvent::TimerExpired:
458 case PortEvent::HubSuspending:
463 case PortEvent::HubStopping:
483 case PortEvent::ChangeOverCurrentCleared:
486 case PortEvent::ChangeConnect:
489 case PortEvent::ChangeOverCurrent:
492 case PortEvent::ChangeNeedsHubReset:
497 case PortEvent::ChangeDisabled:
498 case PortEvent::ChangeResumed:
499 case PortEvent::ChangeResetDone:
500 case PortEvent::ChangeError:
507 case PortEvent::ChangeNeedsHubReset:
510 case PortEvent::ErrorIgnore:
513 case PortEvent::ErrorCycle:
516 case PortEvent::ChangeOverCurrent:
519 case PortEvent::ErrorDisableAndCycle:
523 SM_BREAK(
"Port error response not valid here");
527 case PortEvent::HubStopping:
530 case PortEvent::HubSuspending:
535 case PortEvent::DeviceGone:
549 case PortEvent::ChangeError:
550 case PortEvent::ChangeResetDone:
551 case PortEvent::ChangeDisabled:
552 case PortEvent::ChangeResumed:
557 case PortEvent::ChangeConnect:
560 case PortEvent::ChangeNeedsHubReset:
566 case PortEvent::ChangeOverCurrentCleared:
569 case PortEvent::ChangeOverCurrent:
572 case PortEvent::TimerExpired:
577 case PortEvent::HubStopping:
578 case PortEvent::HubSuspending:
599 case PortEvent::ChangeError:
600 case PortEvent::ChangeResetDone:
601 case PortEvent::ChangeDisabled:
602 case PortEvent::ChangeResumed:
607 case PortEvent::ChangeConnect:
610 case PortEvent::ChangeNeedsHubReset:
618 case PortEvent::ChangeOverCurrent:
621 case PortEvent::ChangeOverCurrentCleared:
626 case PortEvent::UserOverCurrentReset:
629 case PortEvent::HubStopping:
630 case PortEvent::HubSuspending:
646 case PortEvent::TimerExpired:
649 case PortEvent::ChangeOverCurrent:
653 case PortEvent::ChangeOverCurrentCleared:
657 case PortEvent::ChangeConnect:
663 case PortEvent::ChangeError:
664 case PortEvent::ChangeResetDone:
665 case PortEvent::ChangeDisabled:
666 case PortEvent::ChangeResumed:
671 case PortEvent::ChangeNeedsHubReset:
676 case PortEvent::HubStopping:
679 case PortEvent::HubSuspending:
693 if (
Event != PortEvent::TimerExpired)
710 case PortEvent::ChangeConnect:
711 case PortEvent::ChangeOverCurrent:
712 case PortEvent::ChangeOverCurrentCleared:
715 case PortEvent::ChangeNeedsHubReset:
720 case PortEvent::HubStopping:
734 case PortEvent::ChangeError:
735 case PortEvent::ChangeDisabled:
736 case PortEvent::ChangeResetDone:
737 case PortEvent::ChangeResumed:
742 case PortEvent::DisableRequest:
745 case PortEvent::SuspendRequest:
748 case PortEvent::HibernateRequest:
754 case PortEvent::ResetRequest:
757 case PortEvent::CycleRequest:
763 case PortEvent::WarmResetRequest:
768 case PortEvent::SetU1Timeout:
769 case PortEvent::SetU2Timeout:
775 case PortEvent::DisableSuperSpeedRequest:
791 case PortEvent::ChangeError:
792 case PortEvent::ChangeDisabled:
793 case PortEvent::ChangeResetDone:
794 case PortEvent::ChangeResumed:
799 case PortEvent::DisableRequest:
806 case PortEvent::CycleRequest:
809 case PortEvent::HubSuspending:
812 case PortEvent::ResetRequest:
817 case PortEvent::WarmResetRequest:
822 case PortEvent::DisableSuperSpeedRequest:
846 case PortEvent::ChangeConnect:
851 case PortEvent::DisableRequest:
856 case PortEvent::ResumeRequest:
870 case PortEvent::ChangeResumed:
873 case PortEvent::ChangeResetDone:
874 case PortEvent::ChangeError:
877 case PortEvent::ChangeDisabled:
880 case PortEvent::HubSuspending:
883 case PortEvent::ResumeRequest:
889 case PortEvent::ResetRequest:
892 case PortEvent::CycleRequest:
908 case PortEvent::ChangeResumed:
913 case PortEvent::DisableRequest:
918 case PortEvent::HubSuspending:
922 case PortEvent::ResetRequest:
923 case PortEvent::WarmResetRequest:
926 case PortEvent::CycleRequest:
946 case PortEvent::ChangeError:
947 case PortEvent::ChangeDisabled:
948 case PortEvent::ChangeResetDone:
949 case PortEvent::ChangeResumed:
952 case PortEvent::ResumeRequest:
955 case PortEvent::HubStopping:
958 case PortEvent::CycleRequest:
971 if (
Event == PortEvent::ResumeRequest)
974 if (
Event == PortEvent::CycleRequest)
989 case PortEvent::ChangeResetDone:
992 case PortEvent::CycleRequest:
995 case PortEvent::ResetRequest:
996 case PortEvent::WarmResetRequest:
999 case PortEvent::DisableRequest:
1019 case PortEvent::SubDone:
1022 case PortEvent::ChangeResetDone:
1023 case PortEvent::ChangeResumed:
1024 case PortEvent::ChangeError:
1025 case PortEvent::ChangeDisabled:
1028 case PortEvent::HubSuspending:
1051 case PortEvent::ChangeError:
1052 case PortEvent::ChangeResetDone:
1053 case PortEvent::SubDone:
1057 case PortEvent::ChangeResumed:
1061 case PortEvent::ChangeDisabled:
1076 case PortEvent::ChangeError:
1077 case PortEvent::ChangeDisabled:
1078 case PortEvent::ChangeResetDone:
1079 case PortEvent::ChangeResumed:
1080 case PortEvent::SubDone:
1084 case PortEvent::HubSuspending:
1104 case PortEvent::ChangeResumed:
1107 case PortEvent::SubDone:
1110 case PortEvent::ChangeResetBusy:
1113 case PortEvent::ChangeNeedsReset:
1133 case PortEvent::ChangeResetBusy:
1136 case PortEvent::ChangeResumed:
1137 case PortEvent::ChangeLinkError:
1138 case PortEvent::ChangeError:
1139 case PortEvent::ChangeNone:
1140 case PortEvent::ChangeResetDone:
1143 case PortEvent::HubStopping:
1159 case PortEvent::ChangeConnect:
1160 case PortEvent::ChangeOverCurrent:
1161 case PortEvent::ChangeOverCurrentCleared:
1164 case PortEvent::ChangeNeedsHubReset:
1192 case PortEvent::ChangeResetDone:
1197 case PortEvent::HubRemoved:
1200 case PortEvent::ChangeError:
1201 case PortEvent::ChangeDisabled:
1202 case PortEvent::ChangeResumed:
1203 case PortEvent::ChangeConnect:
1208 case PortEvent::TimerExpired:
1226 case PortEvent::ChangeResetDone:
1231 case PortEvent::HubRemoved:
1234 case PortEvent::ChangeResumed:
1235 case PortEvent::ChangeError:
1236 case PortEvent::ChangeDisabled:
1239 case PortEvent::TimerExpired:
1253 case PortEvent::ChangeError:
1254 case PortEvent::ChangeDisabled:
1255 case PortEvent::ChangeResumed:
1256 case PortEvent::ChangeResetDone:
1261 case PortEvent::TimerExpired:
1281 case PortEvent::ChangeResumed:
1289 case PortEvent::ChangeDisabled:
1290 case PortEvent::ChangeError:
1291 case PortEvent::ChangeResetDone:
1296 case PortEvent::HubRemoved:
1299 case PortEvent::TimerExpired:
1317 case PortEvent::ChangeResumed:
1318 case PortEvent::ChangeResetDone:
1319 case PortEvent::ChangeError:
1320 case PortEvent::ChangeDisabled:
1323 case PortEvent::TimerExpired:
1337 case PortEvent::ChangeDisabled:
1338 case PortEvent::ChangeError:
1339 case PortEvent::ChangeResetDone:
1340 case PortEvent::ChangeResumed:
1345 case PortEvent::TimerExpired:
1383 if (
Event == PortEvent::HubStopping)
1386 if (
Event == PortEvent::HubSuspending)
1396 if ((
Event == PortEvent::HubStopping) || (
Event == PortEvent::HubSuspending))
1406 if (
Event == PortEvent::TimerExpired)
1409 if ((
Event == PortEvent::HubStopping) || (
Event == PortEvent::HubSuspending))
1419 if ((
Event == PortEvent::HubStopping) || (
Event == PortEvent::HubSuspending))
1429 if (
Event == PortEvent::TimerExpired)
1432 if ((
Event == PortEvent::HubStopping) || (
Event == PortEvent::HubSuspending))
1442 if ((
Event != PortEvent::HubStopping) && (
Event != PortEvent::HubSuspending))
1458 if (
Event == PortEvent::TimerExpired)
1461 if ((
Event == PortEvent::HubStopping) || (
Event == PortEvent::HubSuspending))
1471 if ((
Event == PortEvent::HubStopping) || (
Event == PortEvent::HubSuspending))
1603 if (
Event == PortEvent::TransferDone)
1606 if (
Event == PortEvent::TransferFailed)
1616 if (
Event == PortEvent::TransferFailed)
1619 if (
Event != PortEvent::TransferDone)
1635 if ((
Event != PortEvent::TransferDone) && (
Event != PortEvent::TransferFailed))
1644 if (
Event == PortEvent::TransferDone)
1654 if ((
Event != PortEvent::TransferDone) && (
Event != PortEvent::TransferFailed))
1657 if (
m_Usb3 && (
Event == PortEvent::TransferFailed))
1671 if (
Event == PortEvent::TransferFailed)
1674 if (
Event != PortEvent::TransferDone)
1688 if (
Event == PortEvent::TransferFailed)
1694 if (
Event != PortEvent::TransferDone)
1709 if (
Event == PortEvent::TransferFailed)
1712 if (
Event == PortEvent::TransferDone)
1722 if (
Event == PortEvent::TransferFailed)
1725 if (
Event == PortEvent::TransferDone)
1737 if (
Event == PortEvent::TransferFailed)
1743 if (
Event == PortEvent::TransferDone)
1753 if (
Event == PortEvent::TransferFailed)
1759 if (
Event == PortEvent::TransferDone)
1769 if (
Event == PortEvent::TransferFailed)
1772 if (
Event == PortEvent::TransferDone)
1782 if (
Event == PortEvent::TransferFailed)
1785 if (
Event != PortEvent::TransferDone)
1797 if (
Event == PortEvent::TransferFailed)
1803 if (
Event != PortEvent::TransferDone)
1817 if (
Event == PortEvent::TransferFailed)
1820 if (
Event != PortEvent::TransferDone)
1835 if (
Event == PortEvent::TransferFailed)
1841 if (
Event == PortEvent::TransferDone)
1854 if ((
Event == PortEvent::TransferDone) || (
Event == PortEvent::TransferFailed))
1864 if (
Event == PortEvent::TransferFailed)
1867 if (
Event == PortEvent::TransferDone)
1880 if ((
Event != PortEvent::TransferDone) && (
Event != PortEvent::TransferFailed))
1893 if (
Event == PortEvent::TransferFailed)
1896 if (
Event == PortEvent::TransferDone)
1909 case PortEvent::ChangeNone:
1914 case PortEvent::ChangeResetDone:
1917 case PortEvent::ChangeResetBusy:
1918 case PortEvent::ChangeNeedsHubReset:
1919 case PortEvent::ChangeResumed:
1920 case PortEvent::ChangeError:
1926 case PortEvent::ChangeOverCurrent:
1931 case PortEvent::ChangeOverCurrentCleared:
1936 case PortEvent::ChangeConnect:
1941 case PortEvent::ChangeLinkError:
1956 if (
Event != PortEvent::SubDone)
SM_RESULT OnOverCurrentWait(_In_ PortEvent Event)
SM_RESULT EnterErrorRestarting()
static const State EmptyHubResetWait
SM_RESULT EnterStartingEmpty()
SM_RESULT EnterDisablingOnRequest()
SM_RESULT OnHubResetTimerWait(_In_ PortEvent Event)
static const State Attached
static const State ChangeIdle30
SM_RESULT EnterEnablingSuperSpeed()
SM_RESULT EnterQuiescingForHubSuspend()
SM_RESULT OnHubResetWait(_In_ PortEvent Event)
static const State StartReadingFirst
VOID DropInterruptReference()
static const State ResetRequestWait
static const State EmptyHubResetTimerWait
static const State TimerFlush
SM_RESULT CallStatusRead(_In_ READ_KIND Kind)
static const State DrainIdle
SM_RESULT EnterDisablingSuperSpeed()
static const State OffEmpty
SM_RESULT OnResumeFlush(_In_ PortEvent Event)
SM_RESULT OnArmingWake(_In_ PortEvent Event)
SM_RESULT OnQuiescingForHubSuspend(_In_ PortEvent Event)
SM_RESULT OnPoweringPort(_In_ PortEvent Event)
static const State DisablingForCycleTimed
static const State DisablingForCycle
SM_RESULT OnSuperSpeedOffWait(_In_ PortEvent Event)
static const State ResumeAckWaitStopped
SM_RESULT OnAttachFailedWait(_In_ PortEvent Event)
SM_RESULT EnterDisablingPort()
SM_RESULT EnterSuspendedD3Cold()
@ FollowOverCurrentCleared
SM_RESULT OnHubResetIssued(_In_ PortEvent Event)
SM_RESULT DetachThen(_In_ PortEvent Change)
SM_RESULT OnResetEnabledWait(_In_ PortEvent Event)
SM_RESULT DetachTimed(_In_ PortEvent Change)
SM_RESULT OnOldDeviceWait(_In_ PortEvent Event)
SM_RESULT EnterPoweringPort()
SM_RESULT EnterResetWait()
SM_RESULT EnterSettingLpmTimeout()
SM_RESULT EnterResetTimeoutStatus()
static const State DrainEmptyIdleUsb2
SM_RESULT EnterReadingStatus()
SM_RESULT EnterSendingSuspend()
static const State DebouncingUsb2
static const State HubResetTimerWait
static const State AttachFailedWait
SM_RESULT OnAttached(_In_ PortEvent Event)
SM_RESULT OnResetTimeoutStatus(_In_ PortEvent Event)
SM_RESULT FailToHubReset()
static const State ResumingAttached
VOID RecordPortSuspended()
BOOLEAN OverCurrentActive()
static const State D3Idle
static const State ResumeChangeIdle
SM_RESULT OnDisablingSuperSpeedOnRequest(_In_ PortEvent Event)
static const State ErrorRestarting
VOID RecordPortDisabled()
SM_RESULT OnResetRequestWait(_In_ PortEvent Event)
static const State DrainEmptyIdleUsb3
SM_RESULT OnErrorRestarting(_In_ PortEvent Event)
SM_RESULT OnReadingForResume(_In_ PortEvent Event)
static const State QueryingOverCurrent
SM_RESULT OnResumingAttached(_In_ PortEvent Event)
SM_RESULT OnSuspended(_In_ PortEvent Event)
SM_RESULT EnterNotifyingOverCurrent()
static const State EnablingSuperSpeedOnStop
SM_RESULT EnterWithPortChange()
SM_RESULT EnterArmingWake()
BOOLEAN OverCurrentPersists()
SM_RESULT OnAttachedDisabled(_In_ PortEvent Event)
SM_RESULT EnterDraining()
SM_RESULT OnDisabledInSuspend(_In_ PortEvent Event)
static const State ArmingWake
static const State HubResetWait
static const State EnablingSuperSpeedOnTimer
static const State ResumeAckWait
VOID NotifyUserOfOverCurrent()
SM_RESULT ResumeSucceeded()
SM_RESULT OnSendingReset(_In_ PortEvent Event)
SM_RESULT TimedHubReset()
SM_RESULT TakeInterruptForReset(_In_ const State *Start, _In_ const State *Refused)
static const State OffResetNeeded
VOID ForceResetOnEnumeration()
static const State OffSuperSpeedDisabled
static const State QuiescingForHubSuspend
static const State SuspendIdle
SM_RESULT ReleaseAndStopTimer()
SM_RESULT ResetSucceeded()
static const State SendingSuspend
SM_RESULT OnSettingLpmTimeout(_In_ PortEvent Event)
static const State UserResetWait
SM_RESULT OnTimerFlush(_In_ PortEvent Event)
static const State OffAttached
static const State DisablingSuperSpeed
OLD_DEVICE_KIND m_OldDevice
BOOLEAN TakeInterruptReference()
static const State Enabled
static const State DisabledInSuspend
SM_RESULT OnEmptyHubResetTimerWait(_In_ PortEvent Event)
SM_RESULT EnterDrainingEmpty()
SM_RESULT OnResumeWait(_In_ PortEvent Event)
SM_RESULT EnterDisablingSuperSpeedOnRequest()
static const State SystemResuming
SM_RESULT CheckConnection()
SM_RESULT OnDisablingSuperSpeed(_In_ PortEvent Event)
SM_RESULT OnDisablingOnResetTimeout(_In_ PortEvent Event)
static const State Transfer
static const State DisablingOnResetTimeout
static const State OverCurrentWait
static const State ResetEnabledWait
static const State SuperSpeedOffWait
static const State SendingResume
static const State ReadingAfterResumeTimeout
SM_RESULT StartOverCurrentWait()
SM_RESULT OnSendingResume(_In_ PortEvent Event)
SM_RESULT EnterSuspended()
SM_RESULT EnterSendingReset()
BOOLEAN m_AttachForcedReset
VOID TellDevice(_In_ PSM_DEVICE_NOTICE Notice)
SM_RESULT OnEnabled(_In_ PortEvent Event)
static const State Suspended
SM_RESULT OnDisablingForCycleTimed(_In_ PortEvent Event)
static const State ResumePowering
SM_RESULT OnDisablingOnRequest(_In_ PortEvent Event)
SM_RESULT OnDisablingOnSuspendTimed(_In_ PortEvent Event)
static const State ResumeWait
VOID CancelUserOverCurrentReset()
SM_RESULT ResetHubThen(_In_ const State *Target)
SM_RESULT EnterResumingAttached()
static const State FlushBeforeSuperSpeedOff
static const State PowerOnSending
SM_RESULT OnResumeAckWaitStopped(_In_ PortEvent Event)
SM_RESULT OnDisablingBeforeConnect(_In_ PortEvent Event)
SM_RESULT EnterHubResetIssued()
@ OldDeviceResetInProgress
SM_RESULT OnStartingAttached(_In_ PortEvent Event)
static const State AttachedDisabled
static const State FlushBeforeOffEmpty
SM_RESULT HandleConnectedFault(_In_ const State *Stay)
Handles a 2.0 port status that makes no sense for an attached port.
static const State WakeArming
static const State ResetFlush
SM_RESULT OnEmptyHubResetWait(_In_ PortEvent Event)
static const State NotifyingOverCurrent
SM_RESULT OnEmpty(_In_ PortEvent Event)
SM_RESULT CheckOldDevice(_In_ OLD_DEVICE_KIND Kind)
static const State OffSuspendedUsb3
SM_RESULT OnStartingEmpty(_In_ PortEvent Event)
VOID NotifyBootDeviceRemoval()
SM_RESULT OnResetFlush(_In_ PortEvent Event)
static const State PoweringPort
SM_RESULT OnDebouncing(_In_ PortEvent Event)
static const State SystemResumeReading
static const State SuspendedD3Cold
SM_RESULT ReattachOrCreate(_In_ OLD_DEVICE_KIND Kind)
static const State ResumeFlush
static const State SendingReset
static const State Debouncing
SM_RESULT OnFlushBeforeOff(_In_ PortEvent Event)
static const State StartingAttached
static const State ResetWait
static const State DisablingOnSuspendTimed
VOID StartTimer(_In_ PSM_TIMER Timer)
static const State OldDeviceWait
SM_RESULT OnDisablingForCycle(_In_ PortEvent Event)
static const State ResumeReading
SM_RESULT DeviceArrived(_In_ OLD_DEVICE_KIND Kind)
Drops requests the previous device left behind, then reattaches or creates a device.
SM_RESULT OnEnablingSuperSpeedOnStop(_In_ PortEvent Event)
SM_RESULT OnReadingAfterResumeTimeout(_In_ PortEvent Event)
SM_RESULT OnResumeAckWait(_In_ PortEvent Event)
SM_RESULT EnterResumeWait()
TIMER_FOLLOW_UP m_AfterTimer
static const State SsLinkDisabled
static const State DisablingBeforeConnect
SM_RESULT EnterDebouncing()
SM_RESULT EnterDisconnected()
SM_RESULT OnSsLinkDisabled(_In_ PortEvent Event)
SM_RESULT OnTimed(_In_ PortEvent Event)
PortEvent ErrorResponse()
static const State DebouncingUsb3
SM_RESULT OnEnablingSuperSpeedOnTimer(_In_ PortEvent Event)
SM_RESULT EnterStartingAttached()
SM_RESULT OnResumeRecovery(_In_ PortEvent Event)
SM_RESULT TimedError(_In_ const State *Stay, _In_ BOOLEAN DuringReset)
SM_RESULT ResetTransferFailed()
static const State DisablingSuperSpeedOnRequest
SM_RESULT OnSendingSuspend(_In_ PortEvent Event)
SM_RESULT StopTimerThen(_In_ TIMER_FOLLOW_UP FollowUp)
SM_RESULT OnUserResetWait(_In_ PortEvent Event)
SM_RESULT OnResetWait(_In_ PortEvent Event)
SM_RESULT FollowTimer(_In_ TIMER_FOLLOW_UP FollowUp)
static const State ResetTimeoutStatus
SM_RESULT EnterSendingResume()
static const State HubResetIssued
static const State SendingWarmReset
SM_RESULT EnterSendingWarmReset()
static const State ResumeRecovery
SM_RESULT OnQueryingOverCurrent(_In_ PortEvent Event)
static const State ReadingForResume
static const State ChangeIdle20
SM_RESULT OnResumingDisabled(_In_ PortEvent Event)
SM_RESULT EnterSystemResuming()
static const State ResetChangeIdle
static const State Disconnected
static const State OffSuspendedUsb2
SM_RESULT OnSystemResuming(_In_ PortEvent Event)
static const State SettingLpmTimeout
BOOLEAN m_DrainReturnsEmpty
static const State FlushBeforeOffAttached
static const State StartingEmpty
static const State ResumingDisabled
static const State DisablingOnRequest
VOID SmDiscardQueued(_In_ PortEvent Ev)
const State * SmCurrent() const
static SM_RESULT SmTransition(_In_ const State *Target)
static SM_RESULT SmCall(_In_ const State *Start)
static SM_RESULT SmHandled()
static SM_RESULT SmUnhandled()
const State * SmFrame(_In_ ULONG Index) const
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
@ DisableSuperSpeedRequest
@ PsmNoticeResumeTimedOut
@ PsmNoticeStateSuspended
@ PsmNoticeTimeoutUpdated
@ PsmTimerResumeCompletion
@ PsmTimerSuperSpeedDisable
@ PsmTimerResetCompletion
static const PortEvent RemovedOnly[]
static const PortEvent RemovedAndGone[]
static const PortEvent PortStatusAndRemoved[]
static const PortEvent RemovedAndLpm[]
static const PortEvent DisconnectedDrops[]
#define SM_STATE_TAKES_REQUESTS
#define SM_BREAK(Message)
#define SM_STATE_NEEDS_PASSIVE
#define SM_STATE_CRITICAL_ONLY
One state. Handler gets every event the state sees.