45 {
NULL,
"ReadingDeviceText", 0,
55 {
NULL,
"SettingU2Timeout", 0,
104 case DsmEvent::TimerFired:
111 case DsmEvent::HubStopping:
114 case DsmEvent::PortDetached:
117 case DsmEvent::ClientUnconfigure:
121 case DsmEvent::ClientResetDevice:
124 case DsmEvent::ClientSelectConfig:
128 case DsmEvent::PdoPreStart:
131 case DsmEvent::PdoCleanup:
134 case DsmEvent::HubSuspending:
137 case DsmEvent::PdoPowerUp:
140 case DsmEvent::DeviceTextQuery:
144 case DsmEvent::HubGetDescriptor:
174 if (
Event != DsmEvent::ControllerIoctlDone)
186 case DsmEvent::PortDetached:
189 case DsmEvent::PortFault:
190 case DsmEvent::PortDisableDone:
204 case DsmEvent::PortDetached:
208 case DsmEvent::PortFault:
209 case DsmEvent::PortDisableDone:
221 if (
Event != DsmEvent::ControllerIoctlDone)
234 case DsmEvent::PortSuspendDone:
237 case DsmEvent::PortFault:
241 case DsmEvent::PortDetached:
255 if ((
Event != DsmEvent::TransferDone) && (
Event != DsmEvent::TransferFailed))
276 if ((
Event != DsmEvent::TransferDone) && (
Event != DsmEvent::TransferFailed))
297 case DsmEvent::TransferFailed:
300 case DsmEvent::TransferDone:
309 return EndWith(DsmEvent::Succeeded);
316 if (
Event != DsmEvent::Succeeded)
328 if (
Event != DsmEvent::PdoInstallMsOsExt)
368 case DsmEvent::TransferDone:
377 case DsmEvent::TransferFailed:
391 case DsmEvent::TransferDone:
397 case DsmEvent::TransferFailed:
427 case DsmEvent::ClientSelectConfig:
428 case DsmEvent::ClientResetPipe:
429 case DsmEvent::ClientClearStall:
430 case DsmEvent::ClientResetDevice:
431 case DsmEvent::ClientUnconfigure:
432 case DsmEvent::ClientSyncResetPipe:
433 case DsmEvent::ClientSetInterface:
437 case DsmEvent::ClientCyclePort:
441 case DsmEvent::DeviceTextQuery:
445 case DsmEvent::HubGetDescriptor:
449 case DsmEvent::ClientStreams:
452 case DsmEvent::PdoPowerUp:
455 case DsmEvent::PdoPreStart:
460 case DsmEvent::PortDetached:
463 case DsmEvent::PdoCleanup:
466 case DsmEvent::LpmSettingChanged:
470 case DsmEvent::HubStopping:
471 case DsmEvent::HubSuspending:
489 if (
Event != DsmEvent::ControllerIoctlDone)
503 case DsmEvent::PortDetached:
506 case DsmEvent::PortFault:
507 case DsmEvent::PortDisableDone:
522 case DsmEvent::ClientResetDevice:
523 case DsmEvent::ClientSyncResetPipe:
524 case DsmEvent::ClientSetInterface:
525 case DsmEvent::ClientClearStall:
526 case DsmEvent::ClientUnconfigure:
527 case DsmEvent::ClientResetPipe:
528 case DsmEvent::ClientSelectConfig:
532 case DsmEvent::DeviceTextQuery:
536 case DsmEvent::HubGetDescriptor:
540 case DsmEvent::ClientCyclePort:
544 case DsmEvent::PdoPowerUp:
547 case DsmEvent::HubStopping:
548 case DsmEvent::HubSuspending:
551 case DsmEvent::ClientStreams:
554 case DsmEvent::PortDetached:
557 case DsmEvent::PdoPreStart:
560 case DsmEvent::PdoCleanup:
583 case DsmEvent::ClientUnconfigure:
584 case DsmEvent::ClientResetPipe:
585 case DsmEvent::ClientSetInterface:
586 case DsmEvent::ClientResetDevice:
587 case DsmEvent::ClientSelectConfig:
588 case DsmEvent::ClientClearStall:
589 case DsmEvent::ClientSyncResetPipe:
593 case DsmEvent::HubGetDescriptor:
597 case DsmEvent::PdoPreStart:
601 case DsmEvent::DeviceTextQuery:
605 case DsmEvent::ClientCyclePort:
609 case DsmEvent::LpmSettingChanged:
612 case DsmEvent::PdoInstallMsOsExt:
616 case DsmEvent::ResumedWithHub:
617 case DsmEvent::NeedsReenumeration:
618 case DsmEvent::SuspendedAfterHubResume:
621 case DsmEvent::HubStoppedHoldingReference:
624 case DsmEvent::ClientStreams:
627 case DsmEvent::PortDetached:
630 case DsmEvent::PdoCleanup:
633 case DsmEvent::HubStoppingAfterSuspend:
636 case DsmEvent::HubStarted:
664 case DsmEvent::PortDisableDone:
665 case DsmEvent::PortFault:
668 case DsmEvent::HubStopping:
669 case DsmEvent::HubSuspending:
672 case DsmEvent::PortDetached:
693 case DsmEvent::HubGetDescriptor:
697 case DsmEvent::PdoPreStart:
701 case DsmEvent::PdoInstallMsOsExt:
705 case DsmEvent::HubStoppedHoldingReference:
706 case DsmEvent::HubStopping:
709 case DsmEvent::ResumedWithHub:
712 case DsmEvent::SuspendedAfterHubResume:
715 case DsmEvent::NeedsReenumeration:
718 case DsmEvent::PortDetached:
721 case DsmEvent::PdoCleanup:
733 if (
Event != DsmEvent::ControllerIoctlDone)
745 case DsmEvent::PortResumeDone:
746 case DsmEvent::PortNowDisabled:
747 case DsmEvent::PortNowEnabledOnReconnect:
750 case DsmEvent::PortResumeTimeout:
753 case DsmEvent::HubStopping:
756 case DsmEvent::PortDetached:
759 case DsmEvent::PortFault:
762 case DsmEvent::HubSuspending:
776 case DsmEvent::PortResumeDone:
777 case DsmEvent::PortNowDisabled:
778 case DsmEvent::PortNowEnabledOnReconnect:
781 case DsmEvent::PortFault:
782 case DsmEvent::PortResumeTimeout:
785 case DsmEvent::PortDetached:
799 case DsmEvent::PortFault:
800 case DsmEvent::PortResumeTimeout:
803 case DsmEvent::PortResumeDone:
806 case DsmEvent::PortDetached:
831 case DsmEvent::Succeeded:
832 case DsmEvent::Failed:
835 case DsmEvent::PortDetached:
847 return EndWith(DsmEvent::Succeeded);
859 case DsmEvent::PortTimeoutSet:
860 return EndWith(DsmEvent::Succeeded);
862 case DsmEvent::PortFault:
863 return EndWith(DsmEvent::Failed);
BOOLEAN m_EndpointsConfigured
SM_RESULT SelectConfigValidate()
static const State AwaitingMsOsInstall
SM_RESULT StoppedDropPower()
SM_RESULT GoStoppedEnabled()
VOID FailHubDescriptorRequest()
static const State StoppedAddressed
static const State StoppedEnumeratedHubSuspended
SM_RESULT StoppedDisabledForHub(_In_ DsmEvent Event)
SM_RESULT MsOsInstallDone()
SM_RESULT MsOsFreeAndDone()
SM_RESULT StoppedPortOffAfterDisable(_In_ DsmEvent Event)
SM_RESULT U2TimeoutSet(_In_ DsmEvent Event)
VOID ConfirmStopWhileSuspended()
static const State AwaitingPort
static const State Starting
SM_RESULT MsOsWriteProperties()
static const State ResumingPort
SM_RESULT OnStoppedHubSuspended(_In_ DsmEvent Event)
SM_RESULT MsOsInstallStart()
SM_RESULT EnterStoppedAddressed()
BOOLEAN ProductNameValid()
SM_RESULT OnStoppedEnumeratedHubSuspended(_In_ DsmEvent Event)
VOID RequestPortDisable()
SM_RESULT OnStoppedAddressed(_In_ DsmEvent Event)
SM_RESULT EnterSettingU2Timeout()
BOOLEAN ExtPropertiesWanted()
SM_RESULT Then(_In_ DSM_THEN Next)
VOID CyclePortForClient()
SM_RESULT StoppedPortOffAfterHubResume(_In_ DsmEvent Event)
BOOLEAN ExtPropertiesValid()
SM_RESULT StoppedResumeEndedForSuspend(_In_ DsmEvent Event)
static const State SuspendingPort
VOID StartDriverWaitTimer()
SM_RESULT UnconfiguredByClient(_In_ DsmEvent Event)
BOOLEAN KindWithin(_In_ ULONG Allowed)
A device with no version or speed known yet passes for any version or speed.
SM_RESULT StoppedAckHubStop()
SM_RESULT EnterWithMsOsInstall()
static const State SettingU2Timeout
SM_RESULT ReenumForPreStart()
static const State StoppedReady
VOID SetNullConfiguration()
SM_RESULT DeviceTextRead(_In_ DsmEvent Event)
SM_RESULT StoppedPortResumed(_In_ DsmEvent Event)
SM_RESULT OnReadingDeviceText(_In_ DsmEvent Event)
VOID MarkMsOsInstallHandled()
SM_RESULT EndWith(_In_ DsmEvent Result)
SM_RESULT EnterReadingDeviceText()
BOOLEAN MsOs20ValuesWanted()
SM_RESULT ToAwaitingDetachOrRemove(_In_ BOOLEAN Configured)
static const State DisablingDevice
BOOLEAN SetExtPropertiesSemaphore()
SM_RESULT CallStep(_In_ DSM_THEN Then)
static const State AwaitingDetachOrRemove
VOID GetDescriptorForHub()
BOOLEAN WriteCustomProperties()
SM_RESULT StoppedDisabledForCleanup(_In_ DsmEvent Event)
VOID ReferenceDevicePower()
BOOLEAN InstallMsOs20Values()
static const State DisablingPort
static const State StoppedHubSuspended
VOID ReadExtPropertiesHeader()
SM_RESULT OnStopped(_In_ DsmEvent Event)
VOID DereferenceDevicePower()
SM_RESULT U2TimeoutStart()
SM_RESULT StoppedPoweredUp()
VOID CompleteClientRequest()
SM_RESULT EnterHubSuspendedReleasingPower()
SM_RESULT MsOsExtRead(_In_ DsmEvent Event)
SM_RESULT StoppedAckPreStart()
SM_RESULT CleanupPortDisabled(_In_ DsmEvent Event)
SM_RESULT DetachUnconfigured()
SM_RESULT HubDescriptorDone(_In_ DsmEvent Event)
SM_RESULT StoppedPortSuspendedForHub(_In_ DsmEvent Event)
SM_RESULT StoppedResumeEndedForStop(_In_ DsmEvent Event)
SM_RESULT StoppedEnabledDisabledForHub(_In_ DsmEvent Event)
SM_RESULT ReportMissingAndLeave()
static const State Configured
BOOLEAN ExtPropertiesHeaderValid()
SM_RESULT GoStoppedEnumerated()
SM_RESULT ReenumForStart(_In_ DSM_REENUM Kind)
static const State HubSuspended
SM_RESULT ReenumForClientUnconfigured()
SM_RESULT BackToUnconfigured()
SM_RESULT EnterParkedForHub()
SM_RESULT ForwardStreams(_In_ const State *ReturnTo)
SM_RESULT StoppedPortOffForNoDriver(_In_ DsmEvent Event)
SM_RESULT StoppedPortOffForHubStop(_In_ DsmEvent Event)
static const State AwaitingPortYielding
SM_RESULT RemovalDeleteForgetPortOn()
static const State ReadingDeviceText
SM_RESULT AtPassive(_In_ DSM_THEN Then)
BOOLEAN DisableWhenUnused()
SM_RESULT CallRequest(_In_ const State *Target, _In_ DSM_ACTION Start, _In_ DSM_NEXT Next)
static const State RequestingCritical
VOID ForceResetOnNextStart()
SM_RESULT MsOsExtHeaderRead(_In_ DsmEvent Event)
SM_RESULT StoppedDisabledForNoDriver(_In_ DsmEvent Event)
BOOLEAN U2NeededForEnumerated()
static const State Stopped
SM_RESULT OnStoppedReady(_In_ DsmEvent Event)
SM_RESULT StoppedHubStarted()
SM_RESULT OnAwaitingMsOsInstall(_In_ DsmEvent Event)
VOID FreeExtPropertiesBuffer()
SM_RESULT ReenumForHubStart()
BOOLEAN AllocateExtPropertiesBuffer()
SM_RESULT OnSettingU2Timeout(_In_ DsmEvent Event)
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()
#define DSM_KIND_ANY_SPEED
#define DSM_KIND_ANY_PORT
static const DsmEvent StoppedLpmDiscards[]
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
PACPI_METHOD_ARGUMENT Next
#define SM_STATE_TAKES_REQUESTS
#define SM_STATE_STOP_TIMER_ON_EXIT
#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