136 case DsmEvent::PdoReportedMissing:
139 case DsmEvent::PdoCleanup:
144 case DsmEvent::PdoPowerDownFinal:
147 case DsmEvent::HubStoppingAfterSuspend:
150 case DsmEvent::HubStopping:
173 case DsmEvent::HubStopping:
174 case DsmEvent::HubStoppingAfterSuspend:
177 case DsmEvent::PdoCleanup:
180 case DsmEvent::PdoPowerDownFinal:
204 if (
Event != DsmEvent::ControllerIoctlDone)
214 if (
Event != DsmEvent::ControllerIoctlDone)
287 case DsmEvent::PdoReportedMissing:
303 case DsmEvent::PdoCleanup:
346 case DsmEvent::PdoCleanup:
349 case DsmEvent::PortDetached:
355 case DsmEvent::HubStopping:
358 case DsmEvent::PdoPowerDownFinal:
362 case DsmEvent::HubStoppingAfterSuspend:
419 case DsmEvent::PortDetached:
422 case DsmEvent::PdoCleanup:
425 case DsmEvent::PortResumeDone:
426 case DsmEvent::PortNowEnabledOnReconnect:
443 case DsmEvent::PortOffForHubSuspend:
447 case DsmEvent::PdoCleanup:
450 case DsmEvent::PortDetached:
475 case DsmEvent::PortDetached:
478 case DsmEvent::PortNowEnabledOnReconnect:
479 case DsmEvent::PortResumeDone:
493 case DsmEvent::PortOffForHubSuspend:
496 case DsmEvent::PortDetached:
511 case DsmEvent::PortDetached:
515 case DsmEvent::PortDisableDone:
516 case DsmEvent::PortFault:
529 if (
Event != DsmEvent::ControllerIoctlDone)
560 case DsmEvent::ClientCyclePort:
561 case DsmEvent::NoPingResponse:
562 case DsmEvent::PortNowSuspended:
563 case DsmEvent::PortNowEnabled:
564 case DsmEvent::PortResetTimeout:
565 case DsmEvent::LpmSettingChanged:
566 case DsmEvent::PortFault:
567 case DsmEvent::PortNowDisabled:
570 case DsmEvent::ClientSelectConfig:
571 case DsmEvent::ClientResetDevice:
572 case DsmEvent::ClientClearStall:
573 case DsmEvent::ClientSyncResetPipe:
574 case DsmEvent::ClientResetPipe:
575 case DsmEvent::ClientSetInterface:
576 case DsmEvent::ClientUnconfigure:
580 case DsmEvent::HubGetDescriptor:
584 case DsmEvent::PdoPreStart:
588 case DsmEvent::HubResumed:
589 case DsmEvent::HubResumedWithReset:
590 case DsmEvent::HubStarted:
591 case DsmEvent::HubResumedInS0:
595 case DsmEvent::PdoPowerDown:
596 case DsmEvent::PdoInstallMsOsExt:
597 case DsmEvent::PdoPowerUp:
601 case DsmEvent::HubSuspending:
605 case DsmEvent::ClientStreams:
619 case DsmEvent::PortNowDisabled:
620 case DsmEvent::PortNowEnabled:
621 case DsmEvent::PortResetTimeout:
622 case DsmEvent::LpmSettingChanged:
623 case DsmEvent::ClientCyclePort:
624 case DsmEvent::PortDisableDone:
625 case DsmEvent::PortFault:
626 case DsmEvent::NoPingResponse:
627 case DsmEvent::PortSuspendDone:
628 case DsmEvent::PortResetAbortedForSuspend:
629 case DsmEvent::PortNowEnabledOnReconnect:
630 case DsmEvent::PortNowSuspended:
631 case DsmEvent::PortResumeDone:
634 case DsmEvent::ClientUnconfigure:
635 case DsmEvent::ClientSyncResetPipe:
636 case DsmEvent::ClientSetInterface:
637 case DsmEvent::ClientResetDevice:
638 case DsmEvent::ClientResetPipe:
639 case DsmEvent::ClientClearStall:
640 case DsmEvent::ClientSelectConfig:
644 case DsmEvent::HubGetDescriptor:
648 case DsmEvent::PdoPreStart:
652 case DsmEvent::HubResumed:
653 case DsmEvent::HubStarted:
654 case DsmEvent::HubResumedWithReset:
655 case DsmEvent::HubResumedInS0:
659 case DsmEvent::HubStoppingAfterSuspend:
663 case DsmEvent::PdoPowerDownFinal:
664 case DsmEvent::PdoPowerUp:
665 case DsmEvent::PdoInstallMsOsExt:
666 case DsmEvent::PdoPowerDown:
670 case DsmEvent::HubSuspending:
673 case DsmEvent::ClientStreams:
676 case DsmEvent::HubStopping:
691 case DsmEvent::PortDetached:
692 return EndWith(DsmEvent::PortDetached);
694 case DsmEvent::PortFault:
695 case DsmEvent::PortDisableDone:
697 return EndWith(DsmEvent::PortOffForHubSuspend);
SM_RESULT RemovalDropPowerAndPark()
static const State AwaitingRemove
BOOLEAN m_EndpointsConfigured
SM_RESULT RemovalLeaveHub()
VOID DeleteDefaultEndpoint()
VOID FailHubDescriptorRequest()
SM_RESULT RemovalDeleteAndFinish()
static const State RemovedPortOn
VOID ConfirmStopWhileSuspended()
SM_RESULT RemovalAckHubStop()
static const State RemovedPortOff
SM_RESULT OnAwaitingRemove(_In_ DsmEvent Event)
SM_RESULT RemovalDeleteForgetAndPark()
SM_RESULT OnRemovedPortOff(_In_ DsmEvent Event)
SM_RESULT OnParkedPortOff(_In_ DsmEvent Event)
SM_RESULT EndAfterDetach()
static const State DisablingEndpoints
static const State PortOffEvents
VOID DeleteDeviceInController()
SM_RESULT RemovalPowerDownDone()
static const State ParkedPortOff
SM_RESULT RemovalDeleteForget()
SM_RESULT DisableForRemoval(_In_ DSM_THEN After)
SM_RESULT EnterDetachedMissing()
SM_RESULT RemovalAckAndPark()
VOID ReportDeviceMissing()
VOID NotifyDisconnected()
SM_RESULT EndWith(_In_ DsmEvent Result)
static const State DetachedReported
SM_RESULT OnPortOnEvents(_In_ DsmEvent Event)
static const State DisablingDevice
SM_RESULT EnterWithPortOff()
SM_RESULT RemovalDropPowerForHubStop()
SM_RESULT RemovalHubStopped()
static const State AwaitingDetachOrRemove
SM_RESULT RemovalEndpointsDisabled(_In_ DsmEvent Event)
SM_RESULT RemovalDeviceDisabled(_In_ DsmEvent Event)
static const State PortOnEvents
VOID ReferenceDevicePower()
SM_RESULT OnAwaitingDetachOrRemove(_In_ DsmEvent Event)
static const State DisablingPort
VOID DereferenceDevicePower()
SM_RESULT EnterDetachedReported()
SM_RESULT CleanupDeleteAll()
static const State ParkedPortOn
SM_RESULT EnterDetachedReportedConfigured()
SM_RESULT OnDetachedReported(_In_ DsmEvent Event)
static const State DetachedMissing
SM_RESULT CleanupPortDisabled(_In_ DsmEvent Event)
SM_RESULT DetachUnconfigured()
static const State DetachedReportedConfigured
VOID NotifyPortDetached()
SM_RESULT ReportMissingAndLeave()
SM_RESULT OnRemovedPortOn(_In_ DsmEvent Event)
SM_RESULT ForwardStreams(_In_ const State *ReturnTo)
SM_RESULT CleanupDeviceDisabled(_In_ DsmEvent Event)
SM_RESULT PortOnOffForHubSuspend(_In_ DsmEvent Event)
static const State DetachedEvents
SM_RESULT RemovalNotifyThenReport()
SM_RESULT RemovalDeleteForgetPortOn()
SM_RESULT AtPassive(_In_ DSM_THEN Then)
SM_RESULT DetachConfigured()
SM_RESULT OnParkedPortOn(_In_ DsmEvent Event)
VOID SignalPnpPowerFailure()
VOID DeleteConfigEndpoints()
SM_RESULT EnterWithPortOn()
SM_RESULT OnDetachedEvents(_In_ DsmEvent Event)
SM_RESULT OnDetachedMissing(_In_ DsmEvent Event)
SM_RESULT EnterDetachedEvents()
SM_RESULT RemovalDeleteAfterLeaving()
static const State AwaitingDelete
static SM_RESULT SmTransition(_In_ const State *Target)
static SM_RESULT SmCall(_In_ const State *Start)
static SM_RESULT SmHandled()
static SM_RESULT SmUnhandled()
@ PortResetAbortedForSuspend
static const DsmEvent DetachedEventDiscards[]
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
#define SM_STATE_TAKES_REQUESTS
#define SM_STATE_YIELDS_TO_CALLER
#define SM_STATE_NEEDS_PASSIVE
One state. Handler gets every event the state sees.
_In_ WDFDPC _In_ BOOLEAN Wait