ReactOS 0.4.17-dev-1281-g065abb3
devsm.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS USB Hub Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Device state machine, one per device attached to a hub port
5 * COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6 */
7
8#pragma once
9
11
12class HubChild;
13
14enum class DsmEvent : UCHAR
15{
16 /* Port machine reports */
34
35 /* Hub machine reports */
43
44 /* Timer the machine started */
46
47 /* Completions of transfers and controller requests the machine started */
55
56 /* PnP and power requests on the device PDO, wait for a state that takes requests */
65
66 /* Client driver and hub FDO requests, wait for a state that takes requests */
80
81 /* Results a sub machine hands back to the state that called it */
83 Failed,
93
94 Count
95};
96
98typedef enum _DSM_RESET_KIND
99{
104
107{
112
114typedef enum _DSM_ADD_CHILD
115{
120
122typedef enum _DSM_DELAY
123{
131
133typedef enum _DSM_REENUM
134{
139
140/* Device kind bits, kept up to date by the device code and used to pick flows */
141#define DSM_KIND_USB10 0x00000001
142#define DSM_KIND_USB1X 0x00000002
143#define DSM_KIND_USB20 0x00000004
144#define DSM_KIND_USB2X 0x00000008
145#define DSM_KIND_USB3X 0x00000010
146#define DSM_KIND_ANY_VERSION 0x000000FF
147#define DSM_KIND_HIGH_SPEED 0x00000100
148#define DSM_KIND_FULL_SPEED 0x00000200
149#define DSM_KIND_LOW_SPEED 0x00000400
150#define DSM_KIND_SUPER_SPEED 0x00000800
151#define DSM_KIND_ANY_SPEED 0x0000FF00
152#define DSM_KIND_PORT20 0x00010000
153#define DSM_KIND_PORT30 0x00020000
154#define DSM_KIND_ANY_PORT 0x00FF0000
155
156class DeviceMachine : public SmMachine<DeviceMachine, DsmEvent>
157{
158 friend class SmMachine<DeviceMachine, DsmEvent>;
159
160public:
161 VOID
164
165 HubChild*
166 Device() const
167 {
168 return m_Device;
169 }
170
171 static const SM_EVENT_INFO EventInfo[];
172
173private:
176
179
182
183 /* Engine hooks */
185 static const USHORT SmTimerEventId = static_cast<USHORT>(DsmEvent::TimerFired);
186
191
192 /* Shared helpers, devsm.cpp */
193 BOOLEAN
195 _In_ ULONG Allowed);
196
198 Wait(
199 _In_ const State* Target,
201
203 AtPassive(
205
207 EndWith(
209
211 OnShared(
215
216 /* Shared states, devsm.cpp */
217 static const State PassiveStep;
218 static const State Ending;
219
220 /* Shared waits and steps, devsm.cpp */
221 static const State DisablingPort;
222 static const State AwaitingPort;
223 static const State Delaying;
224 static const State EnablingDevice;
225 static const State ResettingPort;
226 static const State NotifyingReset;
228 static const State Starting;
229 static const State Requesting;
235 static const State SuspendingPort;
236 static const State ResumingPort;
237 static const State IgnoringHub;
243 static const State DisablingDevice;
245
249 Delay(
250 _In_ DSM_DELAY Kind,
257 CallWait(
258 _In_ const State* Target,
265 _In_ DSM_THEN After);
286 CallStep(
290 Request(
291 _In_ const State* Target,
296 _In_ const State* Target,
304 _In_ const State* ReturnTo);
320 _In_ DSM_THEN After);
325
326 /* Attach and first enumeration, devsm_enum.cpp */
327 static const State AwaitingAttach;
328 static const State AwaitingDelete;
329 static const State Enumerating;
332 static const State AtAddressZero;
335 static const State LinkPowerInEnum;
336 static const State UpdatingDevice;
338
420
421 /* Hub suspended sub machine, devsm_hub.cpp */
422 static const State HubSuspended;
424
468
469 /* Address zero and address assignment, devsm_zero.cpp */
472 static const State SettingAddress;
473
546
547 /* Descriptors after addressing and SuperSpeed link power, devsm_desc.cpp */
553 static const State ReadingBos;
554 static const State ReadingMsOs;
558
589 BosRead(
636 MsOsRead(
645 MsOsError(
646 _In_ DSM_THEN GoOn);
691
692 /* Reporting to PnP and the failed device, devsm_report.cpp */
693 static const State ReportingToPnp;
695 static const State FailedDevice;
699 static const State PortOffEvents;
700
746
747 /* Detach and removal, devsm_remove.cpp */
750 static const State DetachedMissing;
751 static const State AwaitingRemove;
753 static const State ParkedPortOff;
754 static const State ParkedPortOn;
755 static const State RemovedPortOff;
756 static const State RemovedPortOn;
757 static const State DetachedEvents;
758 static const State PortOnEvents;
759
776 _In_ DSM_THEN After);
832
833 /* Enumerated, PDO not started, devsm_stopped.cpp */
835 static const State StoppedReady;
836 static const State Stopped;
842
844 Then(
910 OnStopped(
945
946 /* Unconfigured in D0, suspend and resume, devsm_power.cpp */
947 static const State UnconfiguredOn;
951 static const State DeviceSuspended;
955 static const State OffAfterD3Cold;
956
1000 SM_RESULT
1003 SM_RESULT
1006 SM_RESULT
1009 SM_RESULT
1013 SM_RESULT
1016 SM_RESULT
1019 SM_RESULT
1022 SM_RESULT
1025 SM_RESULT
1028 SM_RESULT
1034 SM_RESULT
1037 SM_RESULT
1040 SM_RESULT
1043 SM_RESULT
1046 SM_RESULT
1049 SM_RESULT
1053 SM_RESULT
1056 SM_RESULT
1059
1060 /* Configured device, client requests and configuration, devsm_config.cpp */
1061 static const State Configured;
1062 static const State ConfiguredOn;
1064 static const State Configuring;
1074
1077 SM_RESULT
1082 SM_RESULT
1085 SM_RESULT
1088 SM_RESULT
1091 SM_RESULT
1096 SM_RESULT
1101 SM_RESULT
1105 SM_RESULT
1108 SM_RESULT
1112 SM_RESULT
1116 SM_RESULT
1119 SM_RESULT
1122 SM_RESULT
1125 SM_RESULT
1128 SM_RESULT
1132 SM_RESULT
1134 _In_ BOOLEAN LastStatus);
1135 SM_RESULT
1140 SM_RESULT
1143 SM_RESULT
1147 SM_RESULT
1152 SM_RESULT
1156 SM_RESULT
1159 SM_RESULT
1163 SM_RESULT
1168 SM_RESULT
1171 SM_RESULT
1175 SM_RESULT
1178 SM_RESULT
1181 SM_RESULT
1188 SM_RESULT
1192 SM_RESULT
1195 SM_RESULT
1198 SM_RESULT
1201 SM_RESULT
1206 SM_RESULT
1209 SM_RESULT
1212 SM_RESULT
1215 SM_RESULT
1218
1219 /* SuperSpeed U1 and U2 sub machine, devsm_lpm.cpp */
1220
1223 SM_RESULT
1226 SM_RESULT
1231 SM_RESULT
1235 SM_RESULT
1238 SM_RESULT LpmU1();
1239 SM_RESULT
1243 SM_RESULT
1246 SM_RESULT
1249 SM_RESULT LpmU2();
1250 SM_RESULT
1254 SM_RESULT
1257 SM_RESULT
1261 SM_RESULT
1265 SM_RESULT
1268
1269 /* Boot, paging or hibernation file device, devsm_boot.cpp */
1275
1279 SM_RESULT
1285 SM_RESULT
1290 SM_RESULT
1293 SM_RESULT
1295 _In_ BOOLEAN ContextGone);
1296 SM_RESULT
1301 SM_RESULT
1305 SM_RESULT
1308 SM_RESULT
1311
1312 /* Re-enumeration, devsm_reenum.cpp */
1313 static const State Reenumerating;
1318 static const State LinkPowerAgain;
1322 static const State BugChecking;
1323
1324 SM_RESULT
1326 _In_ const State* Target,
1327 _In_ DSM_REENUM Kind,
1328 _In_ BOOLEAN ForceReset,
1329 _In_ DSM_NEXT After);
1331 SM_RESULT
1334 SM_RESULT
1337 SM_RESULT
1340 SM_RESULT
1343 SM_RESULT
1347 SM_RESULT
1350 SM_RESULT
1354 SM_RESULT
1357 SM_RESULT
1360 SM_RESULT
1363 SM_RESULT
1367 SM_RESULT
1370 SM_RESULT
1375 SM_RESULT
1378 SM_RESULT
1381 SM_RESULT
1384 SM_RESULT
1387 SM_RESULT
1391 SM_RESULT
1395 SM_RESULT
1399 SM_RESULT
1403 SM_RESULT
1406 SM_RESULT
1409 SM_RESULT
1412 SM_RESULT
1415 SM_RESULT
1418 SM_RESULT
1421 SM_RESULT
1424 SM_RESULT
1427 SM_RESULT
1430 SM_RESULT
1433 SM_RESULT
1436 SM_RESULT
1440 SM_RESULT
1443 SM_RESULT
1447 SM_RESULT
1451 SM_RESULT
1455 SM_RESULT
1459 SM_RESULT
1463 SM_RESULT
1468 SM_RESULT
1471 SM_RESULT
1474 SM_RESULT
1477 SM_RESULT
1480 SM_RESULT
1483 SM_RESULT
1486 SM_RESULT
1489 SM_RESULT
1492 SM_RESULT
1495 SM_RESULT
1498 SM_RESULT
1502 SM_RESULT
1505 SM_RESULT
1508 SM_RESULT
1511 SM_RESULT
1514 SM_RESULT
1517 SM_RESULT
1520 SM_RESULT
1523 SM_RESULT
1526 SM_RESULT
1529 SM_RESULT
1532 SM_RESULT
1536 SM_RESULT
1539 SM_RESULT
1542 SM_RESULT
1547 SM_RESULT
1549 _In_ BOOLEAN AfterReattach);
1551 SM_RESULT
1553 _In_ DSM_REENUM Kind);
1555 SM_RESULT
1558 SM_RESULT
1562
1563 /*
1564 * Actions and queries, implemented by the device object
1565 */
1570 ULONG DeviceKind();
1571
1582
1593
1594 /* In place answers to requests the current state turns down */
1597 VOID AckPreStart();
1601
1607 VOID ForgetChild();
1615
1621
1629
1632
1656
1674 VOID ReadBos();
1675 BOOLEAN BosValid();
1721 VOID SetSel();
1723 VOID EnableLtm();
1724
1730 VOID AllowIo();
1753 VOID ArmForWake();
1759 VOID DisarmWake();
1802 VOID DisableU1();
1803 VOID EnableU1();
1807 VOID DisableU2();
1808 VOID EnableU2();
1819 VOID SetFailIo();
1831
1859};
static _Out_opt_ PULONGLONG Start
#define VOID
Definition: acefi.h:82
unsigned char BOOLEAN
Definition: actypes.h:127
SM_RESULT EnterSettingPdCharging()
Definition: devsm.cpp:307
SM_RESULT InterfaceOldRestored(_In_ DsmEvent Event)
SM_RESULT RemovalDropPowerAndPark()
BOOLEAN ArmForWakeWanted()
Definition: devmisc.cpp:501
static const State BootDeviceResetPending
Definition: devsm.h:1273
SM_RESULT OnSuspendingConfigured(_In_ DsmEvent Event)
static const State AtAddressZero
Definition: devsm.h:332
static const State AwaitingRemove
Definition: devsm.h:751
SM_RESULT LpmProgrammedBeforeRaise(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:42
SM_RESULT MsOsContainerRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:808
SM_RESULT Zero20TimerFlushedOnDetach(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:148
BOOLEAN m_EndpointsConfigured
Definition: devsm.h:1840
SM_RESULT EndWithHubEvent()
Definition: devsm.cpp:421
VOID ReleaseAddressZero()
Definition: devhcd.cpp:478
SM_RESULT ConfiguredResetBootDevice()
SM_RESULT ReconfiguredAfterResume(_In_ DsmEvent Event)
VOID AbortDeviceIo()
Definition: devhcd.cpp:901
static const State AddressingInEnum
Definition: devsm.h:333
SM_RESULT SelectConfigDone(_In_ DsmEvent Event)
SM_RESULT SelectConfigValidate()
SM_RESULT ConfiguredNotStartedHubStop(_In_ DsmEvent Event)
SM_RESULT ReenumPdCharging()
static const State AwaitingMsOsInstall
Definition: devsm.h:840
VOID MarkU1Disabled()
Definition: devlpm.cpp:516
VOID SetConfiguration()
Definition: devreq.cpp:755
BOOLEAN m_ChildForgotten
Definition: devsm.h:1841
BOOLEAN ExitLatencyMayDrop()
Definition: devlpm.cpp:540
BOOLEAN CreateDeviceInController()
Definition: devhcd.cpp:488
VOID UpdateDeviceInController()
Definition: devhcd.cpp:753
SM_RESULT Zero20SecondResetEndedForHub(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:266
SM_RESULT EnumRetryOrFail()
Definition: devsm_enum.cpp:268
DSM_FEATURE_CHANGE U2Change()
Definition: devlpm.cpp:503
SM_RESULT RemovalLeaveHub()
SM_RESULT ConfigureProgrammed(_In_ DsmEvent Event)
SM_RESULT OnReportingUnknown(_In_ DsmEvent Event)
SM_RESULT StoppedDropPower()
SM_RESULT LpmCompute()
Definition: devsm_lpm.cpp:23
ULONG DeviceKind()
Definition: hubchild.cpp:301
SM_RESULT EnterLinkPowerAgain()
SM_RESULT SuspendedPortDownForHub(_In_ DsmEvent Event)
static const State ReenumeratingForPower
Definition: devsm.h:1315
SM_RESULT EnterSuspendingConfigured()
SM_RESULT EndpointsProgrammed(_In_ DsmEvent Event)
SM_RESULT EnterProgrammingEndpoints()
VOID DeleteDefaultEndpoint()
Definition: devhcd.cpp:558
SM_RESULT ReenumDoneForHubResumeConfigured(_In_ DsmEvent Event)
SM_RESULT GoStoppedEnabled()
VOID FailHubDescriptorRequest()
Definition: hubioctl.cpp:383
SM_RESULT AltBosValidate()
Definition: devsm_desc.cpp:595
SM_RESULT HubResumeWithPortSuspended(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:110
VOID ReferenceDevice()
Definition: hubchild.cpp:268
SM_RESULT OnFailedDevice(_In_ DsmEvent Event)
SM_RESULT UnconfiguredDisabledForRestart(_In_ DsmEvent Event)
BOOLEAN QueryRegistryValues()
static const State StoppedAddressed
Definition: devsm.h:834
static const State StoppedEnumeratedHubSuspended
Definition: devsm.h:838
SM_RESULT Zero20ResetNotified(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:216
SM_RESULT InterfaceSet(_In_ DsmEvent Event)
VOID CompletePreStart()
Definition: childpdo.cpp:4045
BOOLEAN DisarmOnResume()
Definition: devmisc.cpp:518
SM_RESULT StoppedDisabledForHub(_In_ DsmEvent Event)
VOID DisablePendingEndpoints()
Definition: devhcd.cpp:1087
SM_RESULT LpmU1()
Definition: devsm_lpm.cpp:135
SM_RESULT MsOsInstallDone()
SM_RESULT MsOsFreeAndDone()
BOOLEAN AltEnumNeededOnReenum()
Definition: hubmsos.cpp:111
VOID QueuePassiveWork()
Definition: hubchild.cpp:280
static const USHORT SmTimerEventId
Definition: devsm.h:185
BOOLEAN CreatePlaceholderPdo()
Definition: childpdo.cpp:3913
VOID MarkPowerLost()
Definition: childpdo.cpp:4096
BOOLEAN BosQuerySkipped()
Definition: devdesc.cpp:285
SM_RESULT DescriptorsAltEnumSent(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:129
SM_RESULT Again20SecondResetNotified(_In_ DsmEvent Event)
VOID PurgeIoForHibernation()
BOOLEAN DeviceProgrammingLost()
Definition: devmisc.cpp:352
static const State Reenumerating
Definition: devsm.h:1313
HubChild * m_Device
Definition: devsm.h:1832
SM_RESULT MsOsMarkUnsupported()
Definition: devsm_desc.cpp:664
SM_RESULT OnFailedDeviceEvents(_In_ DsmEvent Event)
SM_RESULT ReenumTreePurgedUnconfigured(_In_ DsmEvent Event)
VOID ReadFullConfigDescriptor()
Definition: devreq.cpp:450
BOOLEAN MsOsQueryWanted()
Definition: hubmsos.cpp:228
SM_RESULT EnterPassiveStep()
Definition: devsm.cpp:202
SM_RESULT RemovalDeleteAndFinish()
static const State Requesting
Definition: devsm.h:229
SM_RESULT ConfiguredPurgedWhileSuspending(_In_ DsmEvent Event)
static const State RemovedPortOn
Definition: devsm.h:756
BOOLEAN SelSkipped()
Definition: devmisc.cpp:311
SM_RESULT BosBillboard()
Definition: devsm_desc.cpp:335
SM_RESULT ConfiguredIoStarted(_In_ DsmEvent Event)
SM_RESULT StoppedPortOffAfterDisable(_In_ DsmEvent Event)
SM_RESULT ReenumPurgedHoldingAddressZero(_In_ DsmEvent Event)
SM_RESULT ReconfiguredForClient(_In_ DsmEvent Event)
static const State BootDeviceAwaitingReset
Definition: devsm.h:1270
SM_RESULT EnterDisablingSuperSpeed()
Definition: devsm_desc.cpp:146
SM_RESULT SuspendedPortResumed(_In_ DsmEvent Event)
SM_RESULT ReenumRetryDelayEndedHoldingAddressZero(_In_ DsmEvent Event)
SM_RESULT U2TimeoutSet(_In_ DsmEvent Event)
SM_RESULT ReenumPortOffForHubDeviceEnabled(_In_ DsmEvent Event)
SM_RESULT ReenumAltEnumSent(_In_ DsmEvent Event)
SM_RESULT HubPortResumedForReset(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:322
VOID ConfirmStopWhileSuspended()
Definition: fanout.cpp:1050
static const State SuspendedUnconfigured
Definition: devsm.h:949
static const State AwaitingPort
Definition: devsm.h:222
SM_RESULT RemovalAckHubStop()
BOOLEAN MsOsDescriptorValid()
Definition: devdesc.cpp:826
SM_RESULT ReenumForHubResume(_In_ BOOLEAN Configured)
SM_RESULT OnFailedDeviceGone(_In_ DsmEvent Event)
SM_RESULT LpmLower()
Definition: devsm_lpm.cpp:271
static const State RemovedPortOff
Definition: devsm.h:755
SM_RESULT ConfiguredFreeForClient()
static const State SuspendingUnconfigured
Definition: devsm.h:948
VOID ResetEndpointAndTransfers()
Definition: devhcd.cpp:971
SM_RESULT OnProgrammingEndpoints(_In_ DsmEvent Event)
SM_RESULT ReenumDisabledThenPark(_In_ DsmEvent Event)
SM_RESULT OnUpdatingLinkPower(_In_ DsmEvent Event)
SM_RESULT OnAwaitingRemove(_In_ DsmEvent Event)
SM_RESULT RemovalDeleteForgetAndPark()
SM_RESULT HubResumeEndedForSuspend(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:372
SM_RESULT InterfaceProgrammed(_In_ DsmEvent Event)
SM_RESULT StartSuperSpeedReset()
Definition: devsm_zero.cpp:406
VOID ReadBillboardString()
Definition: devreq.cpp:521
BOOLEAN m_ReenumForceReset
Definition: devsm.h:1847
SM_RESULT UnconfiguredDisabledForStop(_In_ DsmEvent Event)
SM_RESULT MsOsNoContainerId()
Definition: devsm_desc.cpp:828
SM_RESULT EndDetachedOnTimer(_In_ DsmEvent Event)
Definition: devsm.cpp:485
static const State Starting
Definition: devsm.h:228
SM_RESULT SuspendedResumedByPort()
VOID FailIoAndPurge()
BOOLEAN DeviceArmedForWake()
Definition: devmisc.cpp:509
SM_RESULT CallWait(_In_ const State *Target, _In_ DSM_NEXT Next)
Definition: devsm.cpp:389
SM_RESULT ConfiguredResumedWithHub(_In_ DsmEvent Event)
SM_RESULT Link20Updated(_In_ DsmEvent Event)
SM_RESULT ConfigureDeleteOld()
BOOLEAN FindClientPipe()
Definition: childpdo.cpp:3857
SM_RESULT MsOsRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:644
SM_RESULT EnterUpdatingDevice()
Definition: devsm_enum.cpp:575
SM_RESULT OnSuspendedConfigured(_In_ DsmEvent Event)
BOOLEAN CreatePdo()
Definition: childpdo.cpp:3893
VOID DisableDeviceInController()
Definition: devhcd.cpp:587
SM_RESULT MsOsWriteProperties()
SM_RESULT Zero30CreateDevice()
Definition: devsm_zero.cpp:337
BOOLEAN SetSpeedFor30()
Definition: devlpm.cpp:641
BOOLEAN m_DetachEndsReset
Definition: devsm.h:1848
VOID SendAltEnumCommand()
Definition: devreq.cpp:735
SM_RESULT SuspendEndedForHub(_In_ DsmEvent Event)
static const State ResumingPort
Definition: devsm.h:236
static const State OffAfterD3Cold
Definition: devsm.h:955
SM_RESULT OnStoppedHubSuspended(_In_ DsmEvent Event)
SM_RESULT LinkLatencyTolerance()
SM_RESULT ConfiguredCyclePort()
BOOLEAN IgnoreDescriptorError()
Definition: devdesc.cpp:292
SM_RESULT ReenumCycleAfterResumeFailure()
SM_RESULT OnSuspendingUnconfigured(_In_ DsmEvent Event)
SM_RESULT BosRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:286
SM_RESULT MsOsInstallStart()
SM_RESULT SuspendedPurgedAfterWake(_In_ DsmEvent Event)
SM_RESULT SuspendedIoStartedOnWake(_In_ DsmEvent Event)
SM_RESULT AltConfigRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:524
SM_RESULT EnterSuspendingPort()
Definition: devsm.cpp:622
SM_RESULT OnSuspendedUnconfigured(_In_ DsmEvent Event)
SM_RESULT EnterStoppedAddressed()
VOID DisableEndpointsAndNotify()
Definition: devsm_boot.cpp:123
DSM_THEN m_Resume
Definition: devsm.h:1845
VOID StartSuperSpeedPostResetTimer()
Definition: hubchild.cpp:352
SM_RESULT HubPortSyncedForReset(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:202
SM_RESULT AltBosRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:578
SM_RESULT HubPortSyncedForStop(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:281
static const State ReportingUnknown
Definition: devsm.h:694
SM_RESULT Zero20EndpointUpdated(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:196
SM_RESULT OnReadingBos(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:225
SM_RESULT Zero20FirstResetDone(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:34
BOOLEAN ProductNameValid()
Definition: devdesc.cpp:803
SM_RESULT OnConfiguredHubSuspended(_In_ DsmEvent Event)
SM_RESULT LpmLatencyRaised(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:63
SM_RESULT ReenumPdChargingSet(_In_ DsmEvent Event)
SM_RESULT EndDetached()
Definition: devsm.cpp:415
SM_RESULT(DeviceMachine::* DSM_THEN)()
Definition: devsm.h:178
static const State LinkPowerInEnum
Definition: devsm.h:335
SM_RESULT OnAwaitingAttach(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:70
BOOLEAN U1TimeoutChanged()
Definition: devlpm.cpp:463
VOID ClaimAddressZero()
Definition: devhcd.cpp:471
SM_RESULT EndFailed()
Definition: devsm.cpp:409
SM_RESULT ConfigureCreateEndpoints()
SM_RESULT ReenumForResume(_In_ BOOLEAN Configured)
SM_RESULT OnStoppedEnumeratedHubSuspended(_In_ DsmEvent Event)
SM_RESULT EnterReadingDescriptors()
Definition: devsm_desc.cpp:76
VOID RequestPortDisable()
Definition: hubport.cpp:638
SM_RESULT OnRemovedPortOff(_In_ DsmEvent Event)
static const State FailedDevice
Definition: devsm.h:695
VOID MarkAttachFailed()
Definition: hubchild.cpp:307
SM_RESULT ReenumFailedForHubResume(_In_ DsmEvent Event)
SM_RESULT ConfiguredNotStartedCleanup(_In_ DsmEvent Event)
VOID FinishWaitWake()
Definition: childpdo.cpp:4136
BOOLEAN SupportsPdCharging()
Definition: devmisc.cpp:293
VOID ReadQualifier()
Definition: devreq.cpp:607
SM_RESULT MsOsStoreVendorCode()
Definition: devsm_desc.cpp:671
DSM_THEN m_AfterDisable
Definition: devsm.h:1844
SM_RESULT OnParkedPortOff(_In_ DsmEvent Event)
static const State ReadingDeviceDescriptor
Definition: devsm.h:549
SM_RESULT OnStoppedAddressed(_In_ DsmEvent Event)
BOOLEAN ResetOnResumeFromSx()
Definition: devmisc.cpp:345
SM_RESULT EndAfterDetach()
Definition: devsm_enum.cpp:120
SM_RESULT OnConfigured(_In_ DsmEvent Event)
SM_RESULT ReenumTimerFlushedForHub(_In_ DsmEvent Event)
SM_RESULT EnterSettingU2Timeout()
SM_RESULT OnReadingLanguages(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:850
VOID RequestU2Timeout()
Definition: hubport.cpp:686
static const State DisablingEndpoints
Definition: devsm.h:239
VOID StoreMsOsVendorCode()
Definition: hubmsos.cpp:344
VOID ReadMsOs20Set()
Definition: devreq.cpp:711
SM_RESULT AddressDelayEnded(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:517
VOID CancelTransfer()
Definition: devreq.cpp:426
static const State SettingPdCharging
Definition: devsm.h:244
SM_RESULT BosError()
Definition: devsm_desc.cpp:277
VOID ReadContainerId()
Definition: devreq.cpp:641
SM_RESULT ReenumDoneForStart(_In_ DsmEvent Event)
SM_RESULT BootDeviceDisabledOnDetach(_In_ DsmEvent Event)
Definition: devsm_boot.cpp:104
VOID MarkU2Disabled()
Definition: devlpm.cpp:528
SM_RESULT EnumTimerFlushedOnDetach(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:307
SM_RESULT EnterRemainingDescriptors()
Definition: devsm_desc.cpp:190
SM_RESULT EnterUpdatingDefaultEndpoint()
Definition: devsm_zero.cpp:188
SM_RESULT OnBootDeviceDetached(_In_ DsmEvent Event)
Definition: devsm_boot.cpp:217
SM_RESULT InterfaceStart()
static const State HubSuspendedPortOff
Definition: devsm.h:423
BOOLEAN ExtPropertiesWanted()
Definition: hubmsos.cpp:303
SM_RESULT Then(_In_ DSM_THEN Next)
SM_RESULT BootDeviceNotifyDetached()
Definition: devsm_boot.cpp:83
static const State PortOffEvents
Definition: devsm.h:699
BOOLEAN SetSpeedFor20()
Definition: devmisc.cpp:115
SM_RESULT SuspendedPurgedForReset(_In_ DsmEvent Event)
VOID MarkSystemWakeSource()
Definition: childpdo.cpp:4143
BOOLEAN ResetOnResumeFromS0()
Definition: devmisc.cpp:339
SM_RESULT ConfiguredPurgedForHub(_In_ DsmEvent Event)
VOID AckPreStart()
Definition: childpdo.cpp:4051
VOID CyclePortForClient()
Definition: childpdo.cpp:4070
BOOLEAN QualifierValid()
Definition: devdesc.cpp:810
SM_RESULT SuspendedPortOffForStop(_In_ DsmEvent Event)
VOID ClearResetAtResume()
Definition: childpdo.cpp:4109
static const State WaitingForController
Definition: devsm.h:232
VOID StartPostResetTimer()
Definition: hubchild.cpp:340
SM_RESULT ClientDoneWithLastStatus()
SM_RESULT ReenumClaimEndedOnDetach(_In_ DsmEvent Event)
SM_RESULT InterfaceDeleteOld()
SM_RESULT ReenumCleanUpOldConfig()
SM_RESULT EnumPortOffAfterFailureHoldingAddressZero(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:436
SM_RESULT ConfiguredNotStartedHubSuspend(_In_ DsmEvent Event)
BOOLEAN EndpointsNeedDisableOnFailure()
Definition: devhcd.cpp:1117
SM_RESULT ReenumDisableForHub()
SM_RESULT EnterReenumerating()
SM_RESULT InterfaceDeleteOldAndFail()
SM_RESULT Again20FirstResetDone(_In_ DsmEvent Event)
VOID DeleteDeviceInController()
Definition: devhcd.cpp:568
static const State ConfiguredOn
Definition: devsm.h:1062
SM_RESULT EnterBootDeviceEvents()
Definition: devsm_boot.cpp:49
SM_RESULT EnterSettingAddress()
Definition: devsm_zero.cpp:490
SM_RESULT OnReadingProductName(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:889
BOOLEAN AltEnumNeededAfterBos()
Definition: hubmsos.cpp:104
BOOLEAN AltModeStringWanted()
Definition: devdesc.cpp:701
SM_RESULT StoppedPortOffAfterHubResume(_In_ DsmEvent Event)
SM_RESULT Zero20SecondDelayEnded(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:325
VOID UpdateDefaultEndpoint()
Definition: devhcd.cpp:596
VOID MarkPendingEndpointsDisabled()
Definition: devhcd.cpp:1105
VOID MarkDisconnected()
Definition: devmisc.cpp:474
SM_RESULT ReenumRetryOrFail()
BOOLEAN SelectInterfaceValid()
Definition: childpdo.cpp:3819
SM_RESULT ConfigureOldDisabled(_In_ DsmEvent Event)
SM_RESULT ReenumConfigRead(_In_ DsmEvent Event)
VOID FailClientRequest()
Definition: childpdo.cpp:3558
SM_RESULT EnterNotifyingReset()
Definition: devsm.cpp:374
static const State AtAddressZeroAgain
Definition: devsm.h:1316
BOOLEAN SerialNumberValid()
Definition: hubid.cpp:1144
BOOLEAN StopTimer()
Definition: hubchild.cpp:295
SM_RESULT AltQueryRegistry()
Definition: devsm_desc.cpp:492
SM_RESULT OnAddressingAgain(_In_ DsmEvent Event)
SM_RESULT EnterReportingUnknown()
SM_RESULT BosAltModes()
Definition: devsm_desc.cpp:370
SM_RESULT ConfiguredRestartWhileSuspended()
BOOLEAN BillboardStringWanted()
Definition: devdesc.cpp:647
SM_RESULT ConfiguredSuspendedForHub(_In_ DsmEvent Event)
SM_RESULT RemovalPowerDownDone()
SM_RESULT Again20FirstDescriptorRead(_In_ DsmEvent Event)
static const State IoctlAfterDetach
Definition: devsm.h:241
static const State Enumerating
Definition: devsm.h:329
VOID MarkU2Enabled()
Definition: devlpm.cpp:522
SM_RESULT EnterReportingToPnp()
SM_RESULT BootDeviceDisabledOnFailure(_In_ DsmEvent Event)
Definition: devsm_boot.cpp:130
SM_RESULT InterfaceCreateEndpoints()
static const State ReadingConfigDescriptor
Definition: devsm.h:550
BOOLEAN ExitLatencyMustRise()
Definition: devlpm.cpp:534
SM_RESULT UnconfiguredSuspendedForHub(_In_ DsmEvent Event)
VOID SmQueuePassive()
Definition: devsm.cpp:143
SM_RESULT LeaveHub()
BOOLEAN ContainerIdKnown()
Definition: devdesc.cpp:865
static const State ParkedPortOff
Definition: devsm.h:753
SM_RESULT LinkStart()
Definition: devsm_desc.cpp:965
VOID RequestPortReset()
Definition: hubport.cpp:662
SM_RESULT OnReadingDeviceDescriptor(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:89
VOID ReadMsOsDescriptor()
Definition: devreq.cpp:620
SM_RESULT Zero20TimerFlushedForHub(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:158
SM_RESULT DeleteDeviceThen()
Definition: devsm.cpp:333
SM_RESULT ReenumPurgedAfterFailure(_In_ DsmEvent Event)
SM_RESULT ReenumDisabledForHub(_In_ DsmEvent Event)
SM_RESULT LpmU1Enabled(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:192
BOOLEAN ConfigLongerThanRead()
Definition: devdesc.cpp:131
VOID ReadExtendedConfig()
Definition: devreq.cpp:664
SM_RESULT EnterReadingConfigDescriptor()
Definition: devsm_desc.cpp:153
SM_RESULT EnterReadingQualifier()
Definition: devsm_desc.cpp:909
SM_RESULT SuspendIoAborted(_In_ DsmEvent Event)
static const State SuspendingConfigured
Definition: devsm.h:1068
SM_RESULT OnReportingToPnp(_In_ DsmEvent Event)
SM_RESULT Link20Start()
SM_RESULT RemovalDeleteForget()
VOID RequestHibernationPrep()
Definition: hubport.cpp:692
SM_RESULT DisableForRemoval(_In_ DSM_THEN After)
static const State BootDeviceSuspended
Definition: devsm.h:1071
VOID ArmPostAddressTimer()
Definition: hubchild.cpp:358
static const State ReadingBos
Definition: devsm.h:553
VOID ClearEndpointHalt()
Definition: devreq.cpp:832
static const State TimerAfterDetach
Definition: devsm.h:242
static const State RequestingYielding
Definition: devsm.h:231
static const State FailedDeviceEvents
Definition: devsm.h:697
VOID DisableU1()
Definition: devreq.cpp:945
VOID RequestPortSuspend()
Definition: hubport.cpp:644
SM_RESULT Zero20SecondResetDone(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:233
SM_RESULT OnConfiguring(_In_ DsmEvent Event)
SM_RESULT SuspendPortArmed(_In_ DsmEvent Event)
VOID SetDeviceAddress()
Definition: devhcd.cpp:607
BOOLEAN NeedsSecondReset()
Definition: devmisc.cpp:262
BOOLEAN ExtPropertiesValid()
Definition: hubmsos.cpp:470
SM_RESULT OnBootDeviceEvents(_In_ DsmEvent Event)
Definition: devsm_boot.cpp:276
SM_RESULT EnumRetryDelayEnded(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:277
SM_RESULT EnterEnablingDevice()
Definition: devsm.cpp:360
SM_RESULT EnterDetachedMissing()
SM_RESULT EndOnDetach(_In_ DsmEvent Event)
DSM_NEXT m_AfterReenum
Definition: devsm.h:1849
VOID StartLongPostResetTimer()
Definition: hubchild.cpp:346
SM_RESULT DisableAndDelete(_In_ DSM_THEN After)
Definition: devsm.cpp:315
DSM_ADD_CHILD AddChildToHub()
Definition: devmisc.cpp:419
SM_RESULT StoppedResumeEndedForSuspend(_In_ DsmEvent Event)
SM_RESULT SuspendedIoStarted(_In_ DsmEvent Event)
VOID ReadFirstDescriptor()
Definition: devreq.cpp:409
static const State SuspendingPort
Definition: devsm.h:235
VOID StartDriverWaitTimer()
Definition: childpdo.cpp:4015
DsmEvent m_Result
Definition: devsm.h:1837
VOID RequestSuperSpeedDisable()
Definition: hubport.cpp:674
SM_RESULT OnFailedHubSuspended(_In_ DsmEvent Event)
SM_RESULT EnterRequesting()
Definition: devsm.cpp:560
BOOLEAN ContainerIdHeaderValid()
Definition: devdesc.cpp:847
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.
Definition: devsm.cpp:159
VOID EnableU1()
Definition: devreq.cpp:939
SM_RESULT OnOffAfterD3Cold(_In_ DsmEvent Event)
SM_RESULT StoppedAckHubStop()
VOID ArmForWake()
Definition: devreq.cpp:887
SM_RESULT HubResumeEndedForStop(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:349
SM_RESULT EnterWithMsOsInstall()
SM_RESULT MsOsContainerHeaderRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:787
VOID ComputeExitLatency()
Definition: devlpm.cpp:430
SM_RESULT LinkSelSet(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:994
SM_RESULT EnumPortOffAfterDelete()
Definition: devsm_enum.cpp:491
VOID StartRetryTimer()
Definition: hubchild.cpp:333
SM_RESULT Again20SecondDelayEnded(_In_ DsmEvent Event)
static const State SettingU2Timeout
Definition: devsm.h:841
static const State CancelingClaimForHub
Definition: devsm.h:331
static const State AwaitingAttach
Definition: devsm.h:327
SM_RESULT ReenumForPreStart()
VOID DisarmWake()
Definition: devreq.cpp:912
VOID ClearReprogramNeeded()
Definition: devmisc.cpp:385
VOID DereferencePort()
Definition: hubchild.cpp:325
static const State StoppedReady
Definition: devsm.h:835
VOID SetNullConfiguration()
Definition: devreq.cpp:777
VOID AskPortCycle()
Definition: hubport.cpp:656
static const State ProgrammingEndpoints
Definition: devsm.h:1066
SM_RESULT EnumClaimEndedOnDetach(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:175
SM_RESULT DeviceTextRead(_In_ DsmEvent Event)
SM_RESULT StoppedPortResumed(_In_ DsmEvent Event)
DSM_FEATURE_CHANGE U1Change()
Definition: devlpm.cpp:496
SM_RESULT EnterAtAddressZeroAgain()
SM_RESULT BosFeaturesSent(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:318
SM_RESULT RemovalAckAndPark()
VOID DisableNewInterfaceEndpoints()
Definition: devhcd.cpp:1061
static const State UpdatingDefaultEndpoint
Definition: devsm.h:471
SM_RESULT EnterBootDeviceDetachedContextGone()
Definition: devsm_boot.cpp:208
SM_RESULT AltConfigHeaderRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:503
static const BOOLEAN SmCompletionsFirst
Definition: devsm.h:184
static const State ConfiguredNotStarted
Definition: devsm.h:1063
SM_RESULT ReenumPortOffAfterFailure(_In_ DsmEvent Event)
SM_RESULT LpmFinalProgram()
Definition: devsm_lpm.cpp:301
VOID DeleteOldInterfaceEndpoints()
Definition: devhcd.cpp:1295
SM_RESULT OnReadingDeviceText(_In_ DsmEvent Event)
BOOLEAN EnumRetriesUsedUp()
Definition: devmisc.cpp:74
BOOLEAN PipeIsIsochronous()
Definition: childpdo.cpp:3885
static const State ClaimingAddressZeroAgain
Definition: devsm.h:1320
VOID ReportDeviceMissing()
Definition: childpdo.cpp:3932
SM_RESULT Again20FirstDelayEnded(_In_ DsmEvent Event)
VOID PurgeDeviceIo()
Definition: devhcd.cpp:908
VOID MarkMsOsInstallHandled()
Definition: hubmsos.cpp:368
SM_RESULT ReenumStopRetryForHub()
BOOLEAN DisableLinkStatesForLatency()
Definition: devlpm.cpp:547
SM_RESULT SuspendedPortOffForReset(_In_ DsmEvent Event)
SM_RESULT OnParkedForHubAgain(_In_ DsmEvent Event)
VOID NotifyDisconnected()
Definition: childpdo.cpp:3952
VOID ProgramEndpoints()
Definition: devhcd.cpp:979
VOID ReadConfigDescriptorHeader()
Definition: devreq.cpp:433
static const State UpdatingLinkPower
Definition: devsm.h:1067
VOID DisableU2()
Definition: devreq.cpp:957
SM_RESULT BosValidate()
Definition: devsm_desc.cpp:303
SM_RESULT Zero20FirstDelayEnded(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:112
SM_RESULT EndWith(_In_ DsmEvent Result)
Definition: devsm.cpp:186
SM_RESULT EnterReadingDeviceText()
static const State SettingInterface
Definition: devsm.h:1065
SM_RESULT ReenumDoneForClientUnconfigured(_In_ DsmEvent Event)
VOID SetPdChargingPolicy()
Definition: devreq.cpp:969
SM_RESULT EndAfterTimer(_In_ DsmEvent Event)
Definition: devsm.cpp:466
static const State ParkedForHubInEnum
Definition: devsm.h:337
SM_RESULT ReenumForBootResume()
SM_RESULT FailedPortOffForHub(_In_ DsmEvent Event)
SM_RESULT EnterReadingFirstDescriptor()
Definition: devsm.cpp:381
SM_RESULT CancelTransferAndEnd(_In_ DsmEvent Event)
Definition: devsm.cpp:596
SM_RESULT HubResumeWithPortEnabled(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:139
SM_RESULT Zero30Enabled(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:386
SM_RESULT EnterAddressing()
Definition: devsm_enum.cpp:460
static const State DetachedReported
Definition: devsm.h:748
SM_RESULT ReenumDoneForBootDevice(_In_ DsmEvent Event)
SM_RESULT Zero20CreateDevice()
Definition: devsm_zero.cpp:79
SM_RESULT OnAwaitingPowerUpAfterWake(_In_ DsmEvent Event)
SM_RESULT ReconfiguredBootDevice(_In_ DsmEvent Event)
SM_RESULT Zero20FirstResetEndedForHub(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:69
BOOLEAN MsOs20ValuesWanted()
Definition: hubmsos.cpp:127
SM_RESULT SuperSpeedDelayEnded(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:469
static const State SuspendedConfigured
Definition: devsm.h:1070
SM_RESULT EnumPortOffForHub(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:243
SM_RESULT ReenumPortOffForHubDeviceDisabled(_In_ DsmEvent Event)
SM_RESULT HubPortSuspendedAgain(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:258
VOID SetIsochDelay()
Definition: devreq.cpp:1068
SM_RESULT OnPortOnEvents(_In_ DsmEvent Event)
SM_RESULT ToAwaitingDetachOrRemove(_In_ BOOLEAN Configured)
BOOLEAN SerialNumberIndexZero()
Definition: hubid.cpp:1137
static const State SuspendedHubSuspended
Definition: devsm.h:952
SM_RESULT MsOsSerialRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:691
SM_RESULT ReenumDisabledThenReport(_In_ DsmEvent Event)
VOID RequestPortResume()
Definition: hubport.cpp:650
DSM_NEXT m_AfterPurge
Definition: devsm.h:1855
BOOLEAN m_ContextGone
Definition: devsm.h:1851
SM_RESULT ReconfiguredAfterHubResume(_In_ DsmEvent Event)
BOOLEAN CreateDefaultEndpoint()
Definition: devhcd.cpp:535
static const State DisablingDevice
Definition: devsm.h:243
BOOLEAN SetExtPropertiesSemaphore()
Definition: hubmsos.cpp:374
SM_RESULT SuspendedNeedsReset()
SM_RESULT ReenumDisabledThenSignalAndCycle(_In_ DsmEvent Event)
VOID SendUsbFeatures()
Definition: devreq.cpp:500
static const State BootDeviceSuspending
Definition: devsm.h:1069
SM_RESULT Zero20Enabled(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:94
SM_RESULT BosAltModeRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:382
SM_RESULT MsOsContainerId()
Definition: devsm_desc.cpp:775
SM_RESULT EnterWithPortOff()
static const State BootDeviceEvents
Definition: devsm.h:1274
SM_RESULT RemovalDropPowerForHubStop()
VOID LogReenumeration()
Definition: devmisc.cpp:392
BOOLEAN MsOsExtendedConfigSupported()
Definition: hubmsos.cpp:260
SM_RESULT ReportDuplicateWaitEnded(_In_ DsmEvent Event)
SM_RESULT ReenumTreePurgedConfigured(_In_ DsmEvent Event)
DSM_THEN m_Then
Definition: devsm.h:1834
VOID UpdateExitLatency()
Definition: devhcd.cpp:812
SM_RESULT PurgedOnDetach(_In_ DsmEvent Event)
Definition: devsm_boot.cpp:70
SM_RESULT OnBootDeviceAwaitingReset(_In_ DsmEvent Event)
Definition: devsm_boot.cpp:151
SM_RESULT EnumStopRetryOnDetach()
Definition: devsm_enum.cpp:298
SM_RESULT OnReenumerating(_In_ DsmEvent Event)
SM_RESULT RemovalHubStopped()
SM_RESULT CallStep(_In_ DSM_THEN Then)
Definition: devsm.cpp:552
SM_RESULT EnterClaimingAddressZero()
Definition: devsm_enum.cpp:143
SM_RESULT OnCancelingClaimForHub(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:200
SM_RESULT QualifierRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:940
BOOLEAN ProductStringIndexZero()
Definition: devmisc.cpp:305
static const State ReadingMsOs
Definition: devsm.h:554
static const State AwaitingDetachOrRemove
Definition: devsm.h:752
BOOLEAN ReferenceHubPower()
Definition: childpdo.cpp:3982
SM_RESULT BosAltEnum()
Definition: devsm_desc.cpp:402
SM_RESULT OnReadingQualifier(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:921
SM_RESULT PurgeOnDetach()
Definition: devsm_boot.cpp:56
SM_RESULT ReenumTimerFlushedOnDetach(_In_ DsmEvent Event)
SM_RESULT EnterPreparingHibernation()
SM_RESULT SuspendStart()
SM_RESULT CallAtPassive(_In_ DSM_THEN Then)
Definition: devsm.cpp:513
static const State IgnoringHub
Definition: devsm.h:237
SM_RESULT EnterFailedDeviceGone()
VOID GetDescriptorForHub()
Definition: devreq.cpp:1108
DSM_DELAY m_DelayKind
Definition: devsm.h:1856
static const State Delaying
Definition: devsm.h:223
SM_RESULT RemovalEndpointsDisabled(_In_ DsmEvent Event)
BOOLEAN IsFirstEnumTry()
Definition: devmisc.cpp:30
BOOLEAN PipeIsZeroBandwidth()
Definition: childpdo.cpp:3879
SM_RESULT OnPreparingHibernation(_In_ DsmEvent Event)
SM_RESULT RemovalDeviceDisabled(_In_ DsmEvent Event)
static const State PortOnEvents
Definition: devsm.h:758
BOOLEAN WriteCustomProperties()
Definition: hubmsos.cpp:522
SM_RESULT StoppedDisabledForCleanup(_In_ DsmEvent Event)
VOID CancelControllerIoctl()
Definition: devhcd.cpp:462
HubChild * Device() const
Definition: devsm.h:166
SM_RESULT ReportCycledWithTimer(_In_ DsmEvent Event)
VOID ReferenceDevicePower()
Definition: fanout.cpp:1038
SM_RESULT OnAwaitingDetachOrRemove(_In_ DsmEvent Event)
BOOLEAN m_FailedPoweredUp
Definition: devsm.h:1839
BOOLEAN DeviceSpeedChanged()
Definition: devmisc.cpp:218
SM_RESULT EnterBootDeviceDetached()
Definition: devsm_boot.cpp:200
SM_RESULT EnumParkForHub()
Definition: devsm_enum.cpp:261
SM_RESULT MsOsExtendedConfig()
Definition: devsm_desc.cpp:722
static const State CancelingTransfer
Definition: devsm.h:234
BOOLEAN InstallMsOs20Values()
Definition: hubmsos.cpp:170
BOOLEAN EndpointsNeedProgramming()
Definition: devhcd.cpp:1111
SM_RESULT HubEndResumedOrReenumerate()
Definition: devsm_hub.cpp:161
VOID SetSel()
Definition: devreq.cpp:1011
static const State DisablingPort
Definition: devsm.h:221
static const State StoppedHubSuspended
Definition: devsm.h:837
SM_RESULT OnSettingAddress(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:497
VOID DisableEndpointsPowerLost()
Definition: devsm_boot.cpp:97
SM_RESULT SuspendPortPlain(_In_ DsmEvent Event)
VOID ReadExtPropertiesHeader()
Definition: devreq.cpp:681
static const State ForwardingStreams
Definition: devsm.h:238
BOOLEAN IsochDelaySkipped()
Definition: devmisc.cpp:317
VOID RequestPortWarmReset()
Definition: hubport.cpp:668
static const State EnablingDevice
Definition: devsm.h:224
SM_RESULT SuspendPortArmFailed(_In_ DsmEvent Event)
SM_RESULT HubPortSyncedForSuspend(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:231
SM_RESULT EnterCancelingTransfer()
Definition: devsm.cpp:588
SM_RESULT OnAtAddressZeroAgain(_In_ DsmEvent Event)
VOID SetConfigInfoInRequest()
Definition: devconfig.cpp:939
static const State BootDeviceDetached
Definition: devsm.h:1271
SM_RESULT AltDeviceDescriptorRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:471
SM_RESULT CycleAndPark()
BOOLEAN BosComplete()
Definition: devdesc.cpp:322
SM_RESULT OnForwardingStreams(_In_ DsmEvent Event)
Definition: devsm.cpp:660
SM_RESULT ConfiguredEndpointsDisabledForStop(_In_ DsmEvent Event)
SM_RESULT MsOsExtendedRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:755
SM_RESULT LpmU2Disabled(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:249
SM_RESULT EnterReadingMsOs()
Definition: devsm_desc.cpp:606
SM_RESULT LpmFinalProgrammed(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:313
SM_RESULT LpmU1Disabled(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:181
SM_RESULT LpmLatencyLowered(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:283
SM_RESULT OnStopped(_In_ DsmEvent Event)
BOOLEAN SmCancelTimer()
Definition: devsm.cpp:149
static const State ReadingLanguages
Definition: devsm.h:555
VOID DereferenceDevicePower()
Definition: fanout.cpp:1044
BOOLEAN BosHeaderValid()
Definition: devdesc.cpp:298
SM_RESULT LpmCleanedUpAfterDetach(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:125
SM_RESULT Zero20PortOffForHub(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:307
BOOLEAN RegisterWithHub()
Definition: fanout.cpp:1026
SM_RESULT EnterSettingInterface()
SM_RESULT BosMsOs20Validate()
Definition: devsm_desc.cpp:443
VOID DisablePortMarkingReset()
SM_RESULT BootDeviceFailed()
Definition: devsm_boot.cpp:116
SM_RESULT ReenumPortOffHoldingAddressZero(_In_ DsmEvent Event)
SM_RESULT BackToConfigured()
BOOLEAN AdjustLatencyForNoPing()
Definition: devlpm.cpp:567
BOOLEAN m_ConfigFullLength
Definition: devsm.h:1858
SM_RESULT EnterDetachedReported()
SM_RESULT HubPortOffForStop(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:303
SM_RESULT CleanupDeleteAll()
SM_RESULT InterfaceNewDisabled(_In_ DsmEvent Event)
VOID ReadAltModeString()
Definition: devreq.cpp:536
SM_RESULT U2TimeoutStart()
SM_RESULT Zero20StopDelay(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:123
DSM_THEN m_AfterDelete
Definition: devsm.h:1835
VOID ReadSerialNumber()
Definition: devreq.cpp:592
SM_RESULT BosBillboardRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:350
SM_RESULT ConfiguredNullSet(_In_ DsmEvent Event)
SM_RESULT LpmLatencyTooLarge()
Definition: devsm_lpm.cpp:82
SM_RESULT BosMsOs20()
Definition: devsm_desc.cpp:414
VOID CompleteClientRequestFailed()
Definition: childpdo.cpp:3507
BOOLEAN ExtendedConfigHeaderValid()
Definition: devdesc.cpp:881
VOID ForgetChild()
Definition: devmisc.cpp:467
VOID CalcU2Timeout()
Definition: devlpm.cpp:341
VOID RecordResetTimeout()
Definition: devmisc.cpp:398
static const State ParkedPortOn
Definition: devsm.h:754
SM_RESULT StoppedPoweredUp()
SM_RESULT EnumRetryOrFailHoldingAddressZero()
Definition: devsm_enum.cpp:404
static const State CancelingClaimAgain
Definition: devsm.h:1321
VOID ReadDeviceDescriptor()
Definition: devreq.cpp:415
VOID MarkU1Enabled()
Definition: devlpm.cpp:510
VOID FailIoAndDisablePort()
VOID AllowIo()
Definition: childpdo.cpp:4078
static const State ReadingProductName
Definition: devsm.h:556
SM_RESULT ReenumDisabledThenAckAndCycle(_In_ DsmEvent Event)
SM_RESULT ReenumPortOffDeviceDisabled(_In_ DsmEvent Event)
DsmEvent m_HubEvent
Definition: devsm.h:1838
SM_RESULT FailedPortDisabledAgain(_In_ DsmEvent Event)
BOOLEAN PrepareConfigLists()
Definition: devconfig.cpp:557
SM_RESULT EnterDetachedReportedConfigured()
VOID CompleteClientRequest()
Definition: childpdo.cpp:3462
SM_RESULT ReenumDoneForBootResume(_In_ DsmEvent Event)
BOOLEAN DualRoleSupported()
Definition: devmisc.cpp:299
BOOLEAN ProductNameWanted()
Definition: devmisc.cpp:492
DSM_NEXT m_Next
Definition: devsm.h:1833
SM_RESULT EnterHubSuspendedReleasingPower()
static const State ReadingDescriptors
Definition: devsm.h:334
SM_RESULT OnDetachedReported(_In_ DsmEvent Event)
SM_RESULT Zero20FirstDescriptorRead(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:175
SM_RESULT EnterBugChecking()
VOID InitLinkStates()
Definition: devlpm.cpp:110
static const State DetachedMissing
Definition: devsm.h:750
SM_RESULT OnEnumerating(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:96
static const State PreparingHibernation
Definition: devsm.h:1073
static const State NotifyingReset
Definition: devsm.h:226
BOOLEAN PdoStarted()
Definition: childpdo.cpp:4122
VOID DereferenceHubPower()
Definition: childpdo.cpp:4000
static const State AwaitingPowerUpForReset
Definition: devsm.h:953
SM_RESULT ReenumEndpointsDisabled(_In_ DsmEvent Event)
static const State ReadingFirstDescriptor
Definition: devsm.h:227
SM_RESULT MsOsExtRead(_In_ DsmEvent Event)
SM_RESULT ReenumDoneForPreStart(_In_ DsmEvent Event)
SM_RESULT LpmU2()
Definition: devsm_lpm.cpp:203
SM_RESULT HubResumeForReenumeration(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:91
static const State ReportingToPnp
Definition: devsm.h:693
SM_RESULT SuspendedResumeDone()
SM_RESULT EnumPortOffHoldingAddressZero(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:222
BOOLEAN MsOs20SetValid()
Definition: devdesc.cpp:928
VOID ReadExtendedConfigHeader()
Definition: devreq.cpp:651
SM_RESULT OnAddressingInEnum(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:466
static const State ParkedForHubAgain
Definition: devsm.h:1319
BOOLEAN ResetAtResumeMarked()
Definition: childpdo.cpp:4116
VOID DropSerialNumber()
Definition: hubid.cpp:1198
SM_RESULT StoppedAckPreStart()
SM_RESULT OnReadingMsOs(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:612
SM_RESULT ReportUnknownPdo()
SM_RESULT EnterCancelingClaim()
Definition: devsm_enum.cpp:193
VOID SignalPnpWaiter()
Definition: childpdo.cpp:4023
SM_RESULT EnumTimerFlushedForHub(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:326
SM_RESULT EndOnHubOrDetach(_In_ DsmEvent Event)
Definition: devsm.cpp:428
VOID MarkContainerIdUnsupported()
Definition: hubmsos.cpp:357
SM_RESULT ReconfiguredBootAfterResume(_In_ DsmEvent Event)
VOID(DeviceMachine::* DSM_ACTION)()
Definition: devsm.h:181
SM_RESULT CleanupPortDisabled(_In_ DsmEvent Event)
SM_RESULT EnterReadingLanguages()
Definition: devsm_desc.cpp:843
SM_RESULT DetachUnconfigured()
SM_RESULT LpmEnableU1()
Definition: devsm_lpm.cpp:163
SM_RESULT InterfaceDeleteNewAndFail()
SM_RESULT EnterAwaitingPowerUpAfterWake()
SM_RESULT OnHubSuspended(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:27
SM_RESULT EnterStarting()
Definition: devsm.cpp:546
SM_RESULT MsOsStart()
Definition: devsm_desc.cpp:632
SM_RESULT InterfaceRestoreOld()
static const State DetachedReportedConfigured
Definition: devsm.h:749
SM_RESULT EnterDisablingEndpoints()
Definition: devsm.cpp:678
SM_RESULT HubDescriptorDone(_In_ DsmEvent Event)
SM_RESULT ReenumSerialNumber()
BOOLEAN AltEnumNeededInEnum()
Definition: hubmsos.cpp:86
SM_RESULT StoppedPortSuspendedForHub(_In_ DsmEvent Event)
SM_RESULT OnClaimingAddressZero(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:150
SM_RESULT LinkExitLatency()
Definition: devsm_desc.cpp:985
SM_RESULT DescriptorsQueryRegistry()
Definition: devsm_desc.cpp:110
SM_RESULT StoppedResumeEndedForStop(_In_ DsmEvent Event)
VOID NotifyPortDetached()
Definition: hubport.cpp:632
static const State ResettingPort
Definition: devsm.h:225
SM_RESULT StoppedEnabledDisabledForHub(_In_ DsmEvent Event)
SM_RESULT ReportMissingAndLeave()
SM_RESULT LinkIsochDelaySet(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:975
VOID NotifyDeviceReset()
Definition: devhcd.cpp:837
static const State DeviceSuspended
Definition: devsm.h:951
SM_RESULT OnRemovedPortOn(_In_ DsmEvent Event)
static const State Configured
Definition: devsm.h:1061
SM_RESULT StringError()
Definition: devsm_desc.cpp:873
SM_RESULT SuperSpeedResetDone(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:434
SM_RESULT ReenumStopRetryOnDetach()
SM_RESULT BootDeviceDisableOnDetach()
Definition: devsm_boot.cpp:90
SM_RESULT SuspendedBackDown(_In_ DsmEvent Event)
BOOLEAN ExtPropertiesHeaderValid()
Definition: hubmsos.cpp:386
BOOLEAN DuplicateRetriesUsedUp()
Definition: devmisc.cpp:98
VOID CompleteQueryText()
Definition: childpdo.cpp:4057
BOOLEAN UpdateLpm20()
Definition: devhcd.cpp:798
BOOLEAN ConfigReadOnReset()
Definition: devmisc.cpp:255
SM_RESULT ReportAddChild()
static const State Ending
Definition: devsm.h:218
SM_RESULT GoStoppedEnumerated()
SM_RESULT ReenumForStart(_In_ DSM_REENUM Kind)
SM_RESULT StopDecision()
DSM_ACTION m_Start
Definition: devsm.h:1857
BOOLEAN m_FromConfigured
Definition: devsm.h:1850
SM_RESULT SelectConfigFailed(_In_ BOOLEAN LastStatus)
SM_RESULT ReenumDoneForHubResumeUnconfigured(_In_ DsmEvent Event)
static const State SettingAddress
Definition: devsm.h:472
SM_RESULT ReenumDoneForResumeUnconfigured(_In_ DsmEvent Event)
static const State BugChecking
Definition: devsm.h:1322
SM_RESULT OnAtAddressZero(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:378
static const State HubSuspended
Definition: devsm.h:422
static const State UpdatingDevice
Definition: devsm.h:336
SM_RESULT EnumReleaseAndEndDetached()
Definition: devsm_enum.cpp:498
SM_RESULT ReenumWrongDeviceLeft(_In_ DsmEvent Event)
SM_RESULT ReenumDisabledThenCycle(_In_ DsmEvent Event)
static const State RequestingCriticalPassive
Definition: devsm.h:233
SM_RESULT ReenumForClientUnconfigured()
SM_RESULT BackToUnconfigured()
SM_RESULT OnLinkPowerAgain(_In_ DsmEvent Event)
VOID CalcU1Timeout()
Definition: devlpm.cpp:220
SM_RESULT EnterParkedForHub()
Definition: devsm_enum.cpp:620
SM_RESULT OnUpdatingDevice(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:582
VOID SetInterface()
Definition: devreq.cpp:806
SM_RESULT ForwardStreams(_In_ const State *ReturnTo)
Definition: devsm.cpp:645
BOOLEAN WaitNeededAfterAddress()
Definition: devmisc.cpp:281
SM_RESULT CleanupDeviceDisabled(_In_ DsmEvent Event)
SM_RESULT OnConfiguredNotStarted(_In_ DsmEvent Event)
SM_RESULT EnterResumingPort()
Definition: devsm.cpp:629
SM_RESULT StoppedPortOffForNoDriver(_In_ DsmEvent Event)
BOOLEAN SerialNumberCompared()
Definition: hubid.cpp:1208
SM_RESULT EnterForwardingStreams()
Definition: devsm.cpp:653
SM_RESULT OnCancelingClaimAgain(_In_ DsmEvent Event)
SM_RESULT PortOnOffForHubSuspend(_In_ DsmEvent Event)
SM_RESULT ConfiguredPurgedForHibernation(_In_ DsmEvent Event)
SM_RESULT Again20SecondResetDone(_In_ DsmEvent Event)
SM_RESULT BosStart()
Definition: devsm_desc.cpp:242
static const State DetachedEvents
Definition: devsm.h:757
SM_RESULT StoppedPortOffForHubStop(_In_ DsmEvent Event)
BOOLEAN m_PortMayResume
Definition: devsm.h:1843
SM_RESULT EnterSuspended()
SM_RESULT EndOnResetForHub(_In_ DsmEvent Event)
Definition: devsm.cpp:445
SM_RESULT OnLinkPowerInEnum(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:558
static const State DisablingSuperSpeed
Definition: devsm.h:551
SM_RESULT InterfaceNewEndpointsDisabled(_In_ DsmEvent Event)
SM_RESULT(DeviceMachine::* DSM_NEXT)(_In_ DsmEvent Event)
Definition: devsm.h:175
BOOLEAN SameSerialNumber()
Definition: hubid.cpp:1218
SM_RESULT RemovalNotifyThenReport()
SM_RESULT SuperSpeedResetNotified(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:424
SM_RESULT ConfigureFailed()
VOID UnregisterFromHub()
Definition: fanout.cpp:1032
VOID ReadBosHeader()
Definition: devreq.cpp:471
SM_RESULT EnterReadingBos()
Definition: devsm_desc.cpp:216
SM_RESULT OnShared(_In_ DsmEvent Event)
Definition: devsm.cpp:195
SM_RESULT Zero20SecondResetAwaitHub(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:288
SM_RESULT ReenumPortOffAfterConfigFailure(_In_ DsmEvent Event)
SM_RESULT MsOsExtendedHeaderRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:734
SM_RESULT EnterReadingProductName()
Definition: devsm_desc.cpp:882
BOOLEAN U2TimeoutChanged()
Definition: devlpm.cpp:473
static const State ReadingQualifier
Definition: devsm.h:557
SM_RESULT EnterFailedDevice()
SM_RESULT SelectConfigCleanUp()
static const State FailedDeviceGone
Definition: devsm.h:696
SM_RESULT OnBootDeviceSuspended(_In_ DsmEvent Event)
SM_RESULT GoConfiguredOn()
static const State CollectingDescriptors
Definition: devsm.h:548
SM_RESULT LpmEnableU2()
Definition: devsm_lpm.cpp:231
static const State ConfiguredHubSuspended
Definition: devsm.h:1072
SM_RESULT OnReadingConfigDescriptor(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:164
SM_RESULT EnterDisablingPort()
Definition: devsm.cpp:251
SM_RESULT EnterAtAddressZero()
Definition: devsm_enum.cpp:366
VOID PurgeIoForSuspend()
Definition: devhcd.cpp:917
static const SM_EVENT_INFO EventInfo[]
Definition: devsm.h:171
BOOLEAN HasBillboard()
Definition: devdesc.cpp:641
static const State AwaitingPortYielding
Definition: devsm.h:240
BOOLEAN m_Unregistered
Definition: devsm.h:1842
SM_RESULT EnterResettingPort()
Definition: devsm.cpp:367
SM_RESULT ReenumSerialRead(_In_ DsmEvent Event)
SM_RESULT EnterLinkPowerInEnum()
Definition: devsm_enum.cpp:549
SM_RESULT RemovalDeleteForgetPortOn()
static const State ReadingDeviceText
Definition: devsm.h:839
BOOLEAN BillboardStringValid()
Definition: devdesc.cpp:662
SM_RESULT CleanupDone()
static const State PassiveStep
Definition: devsm.h:217
SM_RESULT AtPassive(_In_ DSM_THEN Then)
Definition: devsm.cpp:177
BOOLEAN DisableWhenUnused()
Definition: devmisc.cpp:331
VOID ReferencePort()
Definition: hubchild.cpp:319
SM_RESULT ReenumForBootClient(_In_ BOOLEAN AfterReattach)
SM_RESULT LpmDetachCleanup()
Definition: devsm_lpm.cpp:113
VOID DisableAllEndpoints()
Definition: devhcd.cpp:1031
SM_RESULT ReenumConfigDescriptor()
SM_RESULT EnterDelaying()
Definition: devsm.cpp:258
SM_RESULT BootDeviceDetachDuringReset(_In_ BOOLEAN ContextGone)
Definition: devsm_boot.cpp:142
SM_RESULT DetachConfigured()
SM_RESULT ReenumParkForHub()
VOID DeleteOldConfigEndpoints()
Definition: devhcd.cpp:1289
SM_RESULT OnParkedPortOn(_In_ DsmEvent Event)
BOOLEAN ExtendedConfigValid()
Definition: devdesc.cpp:900
VOID SetInterfaceInfoInRequest()
Definition: devconfig.cpp:972
SM_RESULT HubPortSynced(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:171
SM_RESULT ReenumFailedForResume(_In_ DsmEvent Event)
SM_RESULT OnAwaitingPowerUpForReset(_In_ DsmEvent Event)
SM_RESULT CallRequest(_In_ const State *Target, _In_ DSM_ACTION Start, _In_ DSM_NEXT Next)
Definition: devsm.cpp:578
SM_RESULT ClientPipeDone(_In_ DsmEvent Event)
SM_RESULT LpmCleanedUpAfterFailure(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:103
BOOLEAN SuperSpeedMustBeDisabled()
Definition: devmisc.cpp:287
VOID StartDeviceIo()
Definition: devhcd.cpp:934
SM_RESULT ConfiguredEndpointsDisabledForClient(_In_ DsmEvent Event)
BOOLEAN SameDeviceConnected()
Definition: devmisc.cpp:238
SM_RESULT UnconfiguredResumedWithHub(_In_ DsmEvent Event)
BOOLEAN BosValid()
Definition: devdesc.cpp:547
SM_RESULT AltBosHeaderRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:554
static const State RequestingCritical
Definition: devsm.h:230
SM_RESULT LpmU2Enabled(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:260
SM_RESULT BosMsOs20Read(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:426
SM_RESULT OnBootDeviceSuspending(_In_ DsmEvent Event)
static const State ReenumeratingForHubStart
Definition: devsm.h:1314
VOID NotifyWrongDevice()
Definition: bootdev.cpp:371
SM_RESULT Again20FirstResetNotified(_In_ DsmEvent Event)
VOID ForceResetOnNextStart()
Definition: childpdo.cpp:4090
SM_RESULT Delay(_In_ DSM_DELAY Kind, _In_ DSM_NEXT Next)
Definition: devsm.cpp:291
SM_RESULT OnSuspendedHubSuspended(_In_ DsmEvent Event)
SM_RESULT OnBootDeviceResetPending(_In_ DsmEvent Event)
Definition: devsm_boot.cpp:266
SM_RESULT ReenumEnabled(_In_ DsmEvent Event)
DSM_RESET_KIND ResetKindNeeded()
Definition: devmisc.cpp:187
SM_RESULT ReenumPortOffForHub(_In_ DsmEvent Event)
VOID SmReference()
Definition: devsm.cpp:131
SM_RESULT AltValidateConfig()
Definition: devsm_desc.cpp:541
SM_RESULT OnConfiguredOn(_In_ DsmEvent Event)
static const State BootDeviceDetachedContextGone
Definition: devsm.h:1272
SM_RESULT EnterResettingSuperSpeed()
Definition: devsm_zero.cpp:352
BOOLEAN PrepareListsForReset()
Definition: devconfig.cpp:872
static const State AwaitingPowerUpAfterWake
Definition: devsm.h:954
SM_RESULT ReenumDoneForResumeConfigured(_In_ DsmEvent Event)
SM_RESULT ClientHaltCleared(_In_ DsmEvent Event)
SM_RESULT OnUnconfiguredOn(_In_ DsmEvent Event)
Definition: devsm_power.cpp:71
SM_RESULT EndForHubOnTimer(_In_ DsmEvent Event)
Definition: devsm.cpp:495
BOOLEAN MsOsContainerIdSupported()
Definition: hubmsos.cpp:296
VOID MarkMsOsUnsupported()
Definition: hubmsos.cpp:333
SM_RESULT ReenumDoneForClientConfigured(_In_ DsmEvent Event)
SM_RESULT LpmFailCleanup()
Definition: devsm_lpm.cpp:91
VOID SignalPnpPowerFailure()
Definition: childpdo.cpp:4031
SM_RESULT LpmU1TimeoutSet(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:145
SM_RESULT EnterConfiguring()
SM_RESULT EndOnTransferCanceled(_In_ DsmEvent Event)
Definition: devsm.cpp:604
SM_RESULT EnterEnding()
Definition: devsm.cpp:208
VOID DeleteConfigEndpoints()
Definition: devhcd.cpp:1283
SM_RESULT MsOsExtHeaderRead(_In_ DsmEvent Event)
SM_RESULT EnterWithPortOn()
SM_RESULT LinkLtmSet(_In_ DsmEvent Event)
VOID EnableDeviceInController()
Definition: devhcd.cpp:578
SM_RESULT StoppedDisabledForNoDriver(_In_ DsmEvent Event)
static const State RemainingDescriptors
Definition: devsm.h:552
SM_RESULT SuspendIoPurged(_In_ DsmEvent Event)
BOOLEAN MsOs20Supported()
Definition: hubmsos.cpp:121
DSM_NEXT m_AfterProgram
Definition: devsm.h:1853
SM_RESULT ReenumDoneForHubStart(_In_ DsmEvent Event)
SM_RESULT EnumStopRetryForHub()
Definition: devsm_enum.cpp:317
SM_RESULT OnDetachedEvents(_In_ DsmEvent Event)
SM_RESULT OnSettingInterface(_In_ DsmEvent Event)
VOID ReadContainerIdHeader()
Definition: devreq.cpp:631
VOID ReadProductName()
Definition: devreq.cpp:575
VOID StartEnumRetries()
Definition: devmisc.cpp:59
SM_RESULT UnconfiguredPortOffForStop(_In_ DsmEvent Event)
const State * m_ReturnTo
Definition: devsm.h:1836
BOOLEAN FirstDescriptorValid()
Definition: devdesc.cpp:67
SM_RESULT ReenumRetryOrFailHoldingAddressZero()
SM_RESULT MsOsError(_In_ DSM_THEN GoOn)
Definition: devsm_desc.cpp:712
SM_RESULT BootDeviceDisabledForReset(_In_ DsmEvent Event)
static const State Configuring
Definition: devsm.h:1064
SM_RESULT OnClaimingAddressZeroAgain(_In_ DsmEvent Event)
VOID EnableLtm()
Definition: devreq.cpp:963
SM_RESULT EnterBootDeviceResetPending()
Definition: devsm_boot.cpp:259
VOID PurgeDeviceTreeIo()
Definition: devhcd.cpp:927
BOOLEAN U2NeededForEnumerated()
Definition: devlpm.cpp:151
SM_RESULT OnDetachedMissing(_In_ DsmEvent Event)
SM_RESULT EnterEnumerating()
Definition: devsm_enum.cpp:89
VOID RecordDeviceVersion()
Definition: devmisc.cpp:149
SM_RESULT ConfiguredResumed()
BOOLEAN CancelStateTimer()
Definition: hubchild.cpp:289
BOOLEAN DeviceDescriptorValid()
Definition: devdesc.cpp:98
static const State Stopped
Definition: devsm.h:836
VOID DeleteNewInterfaceEndpoints()
Definition: devhcd.cpp:1308
SM_RESULT OnCollectingDescriptors(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:60
BOOLEAN IgnoreSerialNumber()
Definition: hubid.cpp:1131
VOID EnableU2()
Definition: devreq.cpp:951
SM_RESULT EnterDetachedEvents()
SM_RESULT OnStoppedReady(_In_ DsmEvent Event)
BOOLEAN SelectConfigValid()
Definition: childpdo.cpp:3617
VOID ResetEndpoint()
Definition: devhcd.cpp:965
SM_RESULT MsOsSerial()
Definition: devsm_desc.cpp:681
SM_RESULT DeleteThen(_In_ DSM_THEN After)
Definition: devsm.cpp:399
VOID ReleasePnpWaiter()
Definition: childpdo.cpp:4039
VOID ArmDuplicateDeviceTimer()
Definition: hubchild.cpp:364
VOID ForwardToController()
Definition: devhcd.cpp:1369
SM_RESULT EnumRetryDelayEndedHoldingAddressZero(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:413
VOID BugCheckForBootDevice()
Definition: devmisc.cpp:405
BOOLEAN ContainerIdWanted()
Definition: hubmsos.cpp:278
SM_RESULT OnUnconfiguredHubSuspended(_In_ DsmEvent Event)
SM_RESULT EnumPortOffAfterFailure(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:344
VOID SetFailIo()
Definition: childpdo.cpp:4084
VOID CompleteClientRequestLastStatus()
Definition: childpdo.cpp:3526
BOOLEAN IsBootDevice()
Definition: childpdo.cpp:4128
BOOLEAN AltModeStringValid()
Definition: devdesc.cpp:732
SM_RESULT OnDeviceSuspended(_In_ DsmEvent Event)
VOID SmDereference()
Definition: devsm.cpp:137
SM_RESULT BosAltEnumSent(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:453
SM_RESULT OnResettingSuperSpeed(_In_ DsmEvent Event)
Definition: devsm_zero.cpp:358
DSM_NEXT m_AfterConfigure
Definition: devsm.h:1852
SM_RESULT ConfiguredSignalAndStay()
BOOLEAN LtmWanted()
Definition: devmisc.cpp:323
SM_RESULT StoppedHubStarted()
BOOLEAN LanguageIdsValid()
Definition: devdesc.cpp:797
static const State ResettingSuperSpeed
Definition: devsm.h:470
SM_RESULT OnAwaitingMsOsInstall(_In_ DsmEvent Event)
BOOLEAN PrepareInterfaceLists()
Definition: devconfig.cpp:706
SM_RESULT ReenumRetryDelayEnded(_In_ DsmEvent Event)
SM_RESULT ReenumFailedForClient(_In_ DsmEvent Event)
VOID MarkAttachSucceeded()
Definition: hubchild.cpp:313
SM_RESULT ReportCreatePdo()
SM_RESULT EnterSuspendingUnconfigured()
SM_RESULT OnHubSuspendedPortOff(_In_ DsmEvent Event)
Definition: devsm_hub.cpp:64
BOOLEAN ConfigDescriptorValid()
Definition: devdesc.cpp:213
SM_RESULT OnRemainingDescriptors(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:196
SM_RESULT EnumPdChargingSet(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:603
SM_RESULT ConfigureInterfaceSet(_In_ DsmEvent Event)
SM_RESULT OnPortOffEvents(_In_ DsmEvent Event)
SM_RESULT ReenumForClientConfigured()
VOID DiscardHubEvents()
Definition: devsm_enum.cpp:131
BOOLEAN AlternateSettingLeft()
Definition: devreq.cpp:783
SM_RESULT Reenumerate(_In_ const State *Target, _In_ DSM_REENUM Kind, _In_ BOOLEAN ForceReset, _In_ DSM_NEXT After)
VOID ReadExtProperties()
Definition: devreq.cpp:692
BOOLEAN m_D3Cold
Definition: devsm.h:1854
VOID FreeExtPropertiesBuffer()
Definition: hubmsos.cpp:559
SM_RESULT SuspendedDisarmed(_In_ DsmEvent Event)
VOID SignalQueryText()
Definition: childpdo.cpp:4064
SM_RESULT LpmU2TimeoutSet(_In_ DsmEvent Event)
Definition: devsm_lpm.cpp:213
SM_RESULT GoUnconfiguredOn()
Definition: devsm_power.cpp:63
SM_RESULT OnReadingDescriptors(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:505
static const State AddressingAgain
Definition: devsm.h:1317
VOID NotifyReconnected()
Definition: childpdo.cpp:3969
DSM_REENUM m_ReenumKind
Definition: devsm.h:1846
VOID ReportEnumFailure()
Definition: childpdo.cpp:3922
SM_RESULT SuspendArmed(_In_ DsmEvent Event)
SM_RESULT BosHeaderRead(_In_ DsmEvent Event)
Definition: devsm_desc.cpp:252
VOID MarkResetAtResume()
Definition: childpdo.cpp:4102
SM_RESULT EnterFailedHubSuspended()
static const State ClaimingAddressZero
Definition: devsm.h:330
VOID ReadBos()
Definition: devreq.cpp:482
VOID DereferenceDevice()
Definition: hubchild.cpp:274
SM_RESULT EnterUpdatingLinkPower()
SM_RESULT MsOsMarkNoContainerId()
Definition: devsm_desc.cpp:834
SM_RESULT DeleteOnceDisabled(_In_ DsmEvent Event)
Definition: devsm.cpp:323
static const State FailedHubSuspended
Definition: devsm.h:698
SM_RESULT ReenumForHubStart()
SM_RESULT ClientDoneOk()
BOOLEAN AllocateExtPropertiesBuffer()
Definition: hubmsos.cpp:411
static const State LinkPowerAgain
Definition: devsm.h:1318
static const State UnconfiguredHubSuspended
Definition: devsm.h:950
SM_RESULT OnSettingU2Timeout(_In_ DsmEvent Event)
VOID NotifyAndPurgeIo()
Definition: devsm_boot.cpp:63
static const State UnconfiguredOn
Definition: devsm.h:947
BOOLEAN CreateEndpoints()
Definition: devhcd.cpp:1136
SM_RESULT EnumPortOffWithDevice(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:531
SM_RESULT ReenumDescriptorRead(_In_ DsmEvent Event)
SM_RESULT EnterReadingDeviceDescriptor()
Definition: devsm_desc.cpp:82
VOID RequestU1Timeout()
Definition: hubport.cpp:680
VOID ReadLanguageIds()
Definition: devreq.cpp:567
SM_RESULT RemovalDeleteAfterLeaving()
SM_RESULT EnterDisablingDevice()
Definition: devsm.cpp:300
static const State AwaitingDelete
Definition: devsm.h:328
SM_RESULT OnParkedForHubInEnum(_In_ DsmEvent Event)
Definition: devsm_enum.cpp:626
SM_RESULT LinkPowerStart()
Definition: devsm_lpm.cpp:16
VOID StartDuplicateRetries()
Definition: devmisc.cpp:92
SM_RESULT ReenumWrongDevice()
Run to completion engine. The first thread to post into an idle machine drains the queue; everyone el...
Definition: smengine.h:114
enum _DSM_RESET_KIND DSM_RESET_KIND
enum _DSM_DELAY DSM_DELAY
DsmEvent
Definition: devsm.h:15
@ PortResumeTimeout
@ DeviceTextQuery
@ HubStoppedHoldingReference
@ ClientSyncResetPipe
@ PortResetAbortedForSuspend
@ ControllerIoctlDone
@ PortResetTimeout
@ HubResumedWithReset
@ PortDisableDone
@ ResumedWithHub
@ ClientResetDevice
@ ClientUnconfigure
@ FailEnumeration
@ SuspendedAfterHubResume
@ PortNowEnabled
@ PortResumeDone
@ NoPingResponse
@ LpmSettingChanged
@ PortNowSuspended
@ PortTimeoutSet
@ PortOffForHubSuspend
@ ClientCyclePort
@ ControllerExitLatencyTooLarge
@ PortReattached
@ PortNowDisabled
@ DetachedDeviceEnabled
@ ControllerRequestDone
@ ClientSetInterface
@ ClientClearStall
@ PdoInstallMsOsExt
@ HubResumedInS0
@ HubGetDescriptor
@ HubStoppingAfterSuspend
@ PdoReportedMissing
@ PortResumeAbortedForSuspend
@ NeedsReenumeration
@ ControllerIoctlFailed
@ TransferStalled
@ TransferFailed
@ PortSuspendDone
@ ClientResetPipe
@ PortNowEnabledOnReconnect
@ PdoPowerDownFinal
@ PdoPrepareHibernate
@ FailedDeviceEnabled
@ ClientSelectConfig
enum _DSM_FEATURE_CHANGE DSM_FEATURE_CHANGE
_DSM_DELAY
Definition: devsm.h:123
@ DsmDelayPostResetLong
Definition: devsm.h:126
@ DsmDelayDuplicate
Definition: devsm.h:129
@ DsmDelayEnumRetry
Definition: devsm.h:124
@ DsmDelayPostResetSuperSpeed
Definition: devsm.h:127
@ DsmDelayPostReset
Definition: devsm.h:125
@ DsmDelayPostAddress
Definition: devsm.h:128
enum _DSM_ADD_CHILD DSM_ADD_CHILD
_DSM_RESET_KIND
Definition: devsm.h:99
@ DsmResetWarm
Definition: devsm.h:102
@ DsmResetHot
Definition: devsm.h:101
@ DsmResetNone
Definition: devsm.h:100
enum _DSM_REENUM DSM_REENUM
_DSM_REENUM
Definition: devsm.h:134
@ DsmReenumConfigured
Definition: devsm.h:135
@ DsmReenumRestart
Definition: devsm.h:137
@ DsmReenumUnconfigured
Definition: devsm.h:136
_DSM_ADD_CHILD
Definition: devsm.h:115
@ DsmAddChildFailed
Definition: devsm.h:118
@ DsmAddChildDone
Definition: devsm.h:116
@ DsmAddChildDuplicate
Definition: devsm.h:117
_DSM_FEATURE_CHANGE
Definition: devsm.h:107
@ DsmFeatureKeep
Definition: devsm.h:108
@ DsmFeatureDisable
Definition: devsm.h:110
@ DsmFeatureEnable
Definition: devsm.h:109
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
Definition: dispmprt.h:1287
#define FALSE
Definition: types.h:117
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
Definition: hubucx.h:258
#define _In_
Definition: no_sal2.h:158
unsigned short USHORT
Definition: pedump.c:61
PACPI_METHOD_ARGUMENT Next
Definition: slotdev.cpp:96
struct _SM_RESULT SM_RESULT
One state. Handler gets every event the state sees.
Definition: smengine.h:93
unsigned char UCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
_In_ WDFIOTARGET Target
Definition: wdfrequest.h:306
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409
static void Initialize()
Definition: xlate.c:212