ReactOS 0.4.17-dev-1281-g065abb3
fdo.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS SuperSpeed USB Hub Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Hub FDO, its state and the event mux to ports and devices
5 * COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6 */
7
8#pragma once
9
10/* Per hub flags; bit positions are fixed */
12{
13 TtHub = 0x00000001,
14 MultiTtHub = 0x00000002,
15 PerPortPower = 0x00000004,
16 PerPortOverCurrent = 0x00000008,
17 NoOverCurrentProtection = 0x00000010,
18 Initialized = 0x00000020,
19 Configured = 0x00000040,
20 ParentNoSelectiveSuspend = 0x00000080,
21 WakeOnConnect = 0x00000100,
22 ArmedForWake = 0x00000200,
23 WaitWakeQueued = 0x00000400,
24 ResetTtOnCancel = 0x00000800,
25 NoClearTtOnCancel = 0x00001000,
26 PowerOnPortsOnStart = 0x00002000,
27 PowerReferencePending = 0x00004000,
28 DisableLpm = 0x00008000,
29 DisableUsb20Lpm = 0x00010000,
30 PowerReferenceAllowed = 0x00020000,
31 InAcpiNamespace = 0x00040000,
32 DelayAfterResetComplete = 0x00080000,
33 ToleratesU0WhileDetached = 0x00100000,
34 IgnoreEnabledInSsInactive = 0x00200000,
35 InBootOrPagingPath = 0x00400000,
36 DisableSuperSpeed = 0x00800000,
37 DiscardEnableDuringReset = 0x01000000,
39 S0IdleConfigured = 0x04000000,
40 GlobalPowerReference = 0x08000000,
41 DisallowU2AcceptOnly = 0x10000000,
42 OverCurrentDetected = 0x20000000,
43 DisableOnSoftRemove = 0x40000000,
45};
46
47/* Which device fan out is collecting acknowledgements right now */
49{
50 None,
51 PowerUp,
54};
55
57struct HubMux
58{
60
67
68 /* Fixed after CreateChildPorts, 2.0 ports first */
71
72 /* Registered device machines, under Lock */
74
80
81 /* Read by the boot device code without the lock */
83};
84
85/* What a hub's parent reports through IOCTL_UCXHUB_GET_HUB_INFO; the layout is shared by every usbhub3 */
87{
103};
104
105/* HubParentInfo.Flags */
106#define HUB_PARENT_DISABLE_LPM 0x00000001
107#define HUB_PARENT_HIGH_SPEED_CAPABLE 0x00000002
108
109#ifdef _WIN64
111C_ASSERT(FIELD_OFFSET(HubParentInfo, TotalTpPropagationDelay) == 44);
113C_ASSERT(sizeof(HubParentInfo) == 72);
114#else
116C_ASSERT(FIELD_OFFSET(HubParentInfo, TotalTpPropagationDelay) == 40);
118C_ASSERT(sizeof(HubParentInfo) == 56);
119#endif
120
123{
129};
130
132{
133public:
134 static
135 EVT_WDF_DRIVER_DEVICE_ADD EvtDeviceAdd;
136
137 static
138 HubFdo*
140 _In_ WDFDEVICE Device);
141
142 static
143 HubFdo*
145 _In_ UCXHUB_HUB_CONTEXT Context)
146 {
147 return (HubFdo*)Context;
148 }
149
150 /* Flags */
151
152 BOOLEAN
154 _In_ HubFlag Flag) const
155 {
156 return (m_Flags & (LONG)Flag) != 0;
157 }
158
159 VOID
162 {
164 }
165
166 VOID
169 {
171 }
172
173 BOOLEAN
174 IsRootHub() const
175 {
176 return m_Parent.HubDepth == 0;
177 }
178
179 UCXUSBDEVICE
180 UsbDevice() const
181 {
182 return m_Parent.Hub;
183 }
184
185 WDFDEVICE
186 Device() const
187 {
188 return m_Device;
189 }
190
191 /* Hub machine glue */
192
193 VOID
196 {
198 }
199
203 PostAndWait(
206
207 BOOLEAN
209 {
211 }
212
213 /* UCX forward progress work items, through the stack interface */
214
217
218 VOID
223 _In_ BOOLEAN ForwardProgress);
224
226 VOID
227 FlushAndDeleteWorkItem(
229
230 /* Child lookups */
231
232 HubPort*
233 FindPort(
235
236 /* Mux, see fanout.cpp */
237
238 VOID
240
242 BOOLEAN
243 CreateChildPorts();
244
245 VOID
248
249 VOID
251
252 VOID
254
255 VOID
257
258 VOID
260
261 VOID
263
264 VOID
266
267 VOID
270 _In_ HubDeviceFanOut FanOut);
271
272 VOID
275
276 VOID
278
279 BOOLEAN
281
282 BOOLEAN
284
285 BOOLEAN
287 _In_ HubPort* Port);
288
289 VOID
291 _In_ HubPort* Port);
292
293 VOID
295 _In_ HubPort* Port);
296
297 VOID
299 _In_ HubPort* Port);
300
301 VOID
303 _In_ HubPort* Port);
304
305 VOID
307 _In_ HubPort* Port);
308
309 BOOLEAN
312
313 VOID
316
317 VOID
320
321 VOID
324
325 VOID
328
329 VOID
331
332 BOOLEAN
334 {
335 return m_Mux.HubResetInProgress != 0;
336 }
337
338 /* Power references on the FDO */
339
340 VOID
342
343 VOID
345
346public:
348
349 WDFDEVICE m_Device;
352 volatile LONG m_Flags;
353
354 /* Interfaces from the parent stack */
358
362
363 /* Hub reset and status change pipe reset */
366
367 /* Root hub: the FDO's own target; external hub: a target on the root hub PDO */
368 WDFIOTARGET m_RootHubTarget;
369
370 /* Parent bus identity of the controller, from QueryControllerBus */
372
373 /* Root hub only: what ucx01000 reported about the root ports */
377
378 /* Ports and power */
386
387 /* PnP handshake with the hub machine */
390
391 /* The one port status request being served for a client or user mode */
394
395 /* Selective suspend */
400
401 /* Nonzero selects the PnP problem text reported on failure */
403
406
408
409 /* Hub machine resources */
415
416 /* Hub level transfer data, see hubreq.cpp */
417 union
418 {
431
432 /* Retry counters; the reset and pipe reset counts share one field on purpose */
439
440 /* Hub symbolic link, copied at prepare hardware */
442
444
445 /* wmi */
446
447 /* GUID_USB_WMI_STD_DATA instance; user notifications are fired on it */
448 WDFWMIINSTANCE m_WmiInstance;
449
450 /* USB4 */
451
452 /* HubFWUpdateProtocol from the hardware key; 1 asks for the router DROM read */
454
455 /* Router DROM read: the header area, the pool buffer and the mailbox register value */
462
463 /* Usb4HostName override from the hardware key, or NULL */
464 WDFSTRING m_Usb4HostName;
465
466 /* At least one port is bound to a USB4 host router; never cleared */
468
469 /* Errata: tunneled devices below this hub never get U2 */
471
472 /* HubUsb4Host records in WDFMEMORY objects, under m_Usb4HostsLock */
473 WDFCOLLECTION m_Usb4Hosts;
474 WDFWAITLOCK m_Usb4HostsLock;
475
476 /* Host router power PDO interface notification entry */
478
479private:
483 _In_ WDFDEVICE Device);
484
487 QueryCapabilities();
488
491 QueryInterfaces();
492
494 VOID
495 ProbeParentCapabilities();
496
498 VOID
499 ConfigureIdle();
500
503 CreateQueue();
504
507 InitializeMachine();
508
511 AssignIdleSettings(
513
514 VOID
517
518 VOID
520
521 static
522 VOID
523 NTAPI
526
527 static EVT_WDF_DEVICE_PREPARE_HARDWARE EvtPrepareHardware;
528 static EVT_WDF_DEVICE_RELEASE_HARDWARE EvtReleaseHardware;
529 static EVT_WDF_DEVICE_D0_ENTRY EvtD0Entry;
530 static EVT_WDF_DEVICE_D0_EXIT EvtD0Exit;
531 static EVT_WDF_DEVICE_SURPRISE_REMOVAL EvtSurpriseRemoval;
532 static EVT_WDF_DEVICE_USAGE_NOTIFICATION EvtUsageNotification;
533 static EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtArmWakeFromS0;
534 static EVT_WDF_DEVICE_DISARM_WAKE_FROM_S0 EvtDisarmWakeFromS0;
535 static EVT_WDF_DEVICE_ARM_WAKE_FROM_SX EvtArmWakeFromSx;
536 static EVT_WDF_DEVICE_DISARM_WAKE_FROM_SX EvtDisarmWakeFromSx;
537 static EVT_WDF_OBJECT_CONTEXT_CLEANUP EvtCleanup;
538 static EVT_WDF_OBJECT_CONTEXT_DESTROY EvtDestroy;
539 static EVT_WDFDEVICE_WDM_IRP_PREPROCESS EvtShutdown;
540 static POWER_SETTING_CALLBACK PowerSettingChanged;
541 static UCXHUB_WORKITEM_ROUTINE MachineWorkItem;
542
543 friend class HubMachine;
544};
545
547
548/* Default queue handlers, hubioctl.cpp */
549EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL HubEvtIoDeviceControl;
550EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL HubEvtIoInternalDeviceControl;
551
552/* Hub queue context: one control transfer block for user descriptor requests */
554{
555 struct _URB_CONTROL_TRANSFER_EX Urb;
556};
557
unsigned char BOOLEAN
Definition: actypes.h:127
LONG NTSTATUS
Definition: precomp.h:26
Definition: fdo.h:132
VOID QueuePowerUpToDevices(_In_ DsmEvent Event)
Definition: fanout.cpp:733
BOOLEAN RegisterDevice(_In_ HubChild *Child)
Definition: fanout.cpp:586
UCXHUB_CONTROLLER_INFO_V2 m_ControllerInfo
Definition: fdo.h:371
USB_BUS_INTERFACE_USBDI_V3 m_Usbdi
Definition: fdo.h:357
VOID DereferenceDevicePower(_In_ HubChild *Child)
Definition: fanout.cpp:802
ULONG m_IdleTimeout
Definition: fdo.h:396
static EVT_WDF_DEVICE_USAGE_NOTIFICATION EvtUsageNotification
Definition: fdo.h:532
static EVT_WDF_DEVICE_RELEASE_HARDWARE EvtReleaseHardware
Definition: fdo.h:528
PUSB_CONFIGURATION_DESCRIPTOR m_ConfigDescriptor
Definition: fdo.h:425
static EVT_WDF_DRIVER_DEVICE_ADD EvtDeviceAdd
Definition: fdo.h:135
VOID FinishDeviceFanOut()
Definition: fanout.cpp:609
VOID DropHubResetReference(_In_ HubPort *Port)
Definition: fanout.cpp:563
static EVT_WDF_DEVICE_D0_EXIT EvtD0Exit
Definition: fdo.h:530
WDFSTRING m_Usb4HostName
Definition: fdo.h:464
static EVT_WDF_DEVICE_PREPARE_HARDWARE EvtPrepareHardware
Definition: fdo.h:527
VOID InitializeMux()
Definition: fanout.cpp:33
USHORT m_SelectedFeature
Definition: fdo.h:427
VOID PostToAllPorts(_In_ PortEvent Event)
Definition: fanout.cpp:258
_In_ PCSTR What
Definition: fdo.h:205
VOID DropPortPowerReference(_In_ HubPort *Port)
Definition: fanout.cpp:544
BOOLEAN m_StreamsSupported
Definition: fdo.h:361
WDFWMIINSTANCE m_WmiInstance
Definition: fdo.h:448
BOOLEAN m_TunneledDevicesSkipU2
Definition: fdo.h:470
WDFDEVICE m_Device
Definition: fdo.h:349
static EVT_WDFDEVICE_WDM_IRP_PREPROCESS EvtShutdown
Definition: fdo.h:539
VOID ClearFlag(_In_ HubFlag Flag)
Definition: fdo.h:167
static EVT_WDF_DEVICE_SURPRISE_REMOVAL EvtSurpriseRemoval
Definition: fdo.h:531
HubTimer m_Timer
Definition: fdo.h:410
static EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtArmWakeFromS0
Definition: fdo.h:533
USHORT m_First30Port
Definition: fdo.h:382
ULONG m_HubNumber
Definition: fdo.h:351
USB_HUB_DESCRIPTOR Usb20
Definition: fdo.h:419
PROOTHUB_30PORT_INFO_EX * m_Root30Ports
Definition: fdo.h:376
VOID SetFlag(_In_ HubFlag Flag)
Definition: fdo.h:160
static HubFdo * FromContext(_In_ UCXHUB_HUB_CONTEXT Context)
Definition: fdo.h:144
VOID QueueSurpriseRemovalToPorts()
Definition: fanout.cpp:351
UNICODE_STRING m_SymbolicLinkName
Definition: fdo.h:441
_IRQL_requires_(PASSIVE_LEVEL) VOID FlushAndDeleteWorkItem(_Inout_ PUCXHUB_WORKITEM *WorkItem)
UCXHUB_ROOTHUB_INFO m_RootHubInfo
Definition: fdo.h:374
KEVENT m_PnpEvent
Definition: fdo.h:388
VOID QueuePowerUpToPorts(_In_ PortEvent Event)
Definition: fanout.cpp:269
ULONG m_DromLength
Definition: fdo.h:459
WDFIOTARGET m_RootHubTarget
Definition: fdo.h:368
PDEVICE_OBJECT m_WdmPdo
Definition: fdo.h:350
USHORT m_First20Port
Definition: fdo.h:380
USHORT m_Last30Port
Definition: fdo.h:383
PROOTHUB_20PORT_INFO * m_Root20Ports
Definition: fdo.h:375
static UCXHUB_WORKITEM_ROUTINE MachineWorkItem
Definition: fdo.h:541
VOID ReleasePowerReference()
Definition: fdo.cpp:123
WDFDEVICE Device() const
Definition: fdo.h:186
ULONG m_RecoveryCount
Definition: fdo.h:435
WDFREQUEST m_PortStatusRequest
Definition: fdo.h:392
PVOID m_SelectiveSuspendSetting
Definition: fdo.h:398
ULONG m_PortCount
Definition: fdo.h:379
USHORT m_DescriptorRetryCount
Definition: fdo.h:434
NTSTATUS m_PnpStatus
Definition: fdo.h:389
USHORT m_ConfigTotalLength
Definition: fdo.h:426
_IRQL_requires_(PASSIVE_LEVEL) BOOLEAN CreateChildPorts()
VOID QueueSuspendToPorts()
Definition: fanout.cpp:329
BOOLEAN PortInterruptRefsReleased()
Definition: fanout.cpp:472
ULONG m_DromHeader[4]
Definition: fdo.h:456
VOID AcquirePowerReference()
Definition: fdo.cpp:105
VOID Post(_In_ HubEvent Event)
Definition: fdo.h:194
_IRQL_requires_(PASSIVE_LEVEL) VOID ProbeParentCapabilities()
PULONG m_DromPool
Definition: fdo.h:458
_IRQL_requires_(PASSIVE_LEVEL) NTSTATUS AssignIdleSettings(_In_ WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE TimeoutType)
BOOLEAN m_HasUsb4Ports
Definition: fdo.h:467
HubControlRequest m_Control
Definition: fdo.h:413
PUCXHUB_WORKITEM AllocateWorkItem()
Definition: fdo.cpp:46
USB_HUB_STATUS_AND_CHANGE m_PreviousHubStatus
Definition: fdo.h:424
ULONG m_LastResetPortStatus
Definition: fdo.h:438
HubInterruptRequest m_Interrupt
Definition: fdo.h:414
static EVT_WDF_OBJECT_CONTEXT_DESTROY EvtDestroy
Definition: fdo.h:538
UCXHUB_STACK_INTERFACE m_Stack
Definition: fdo.h:356
VOID QueueStatusChangeToPorts()
Definition: fanout.cpp:385
ULONG m_LifetimeRecoveryCount
Definition: fdo.h:436
BOOLEAN HasFlag(_In_ HubFlag Flag) const
Definition: fdo.h:153
ULONG m_FailureMessageId
Definition: fdo.h:402
VOID QueueResetToPorts()
Definition: fanout.cpp:361
BOOLEAN RequestHubReset()
Definition: fanout.cpp:452
ULONG m_VerifierFlags
Definition: fdo.h:443
VOID UnregisterDevice(_In_ HubChild *Child)
Definition: fanout.cpp:638
USHORT m_Last20Port
Definition: fdo.h:381
struct _URB_PIPE_REQUEST m_PipeUrb
Definition: fdo.h:365
static HubFdo * FromDevice(_In_ WDFDEVICE Device)
Definition: fdo.cpp:37
static EVT_WDF_DEVICE_DISARM_WAKE_FROM_S0 EvtDisarmWakeFromS0
Definition: fdo.h:534
HubMachine m_Machine
Definition: fdo.h:347
_IRQL_requires_(PASSIVE_LEVEL) VOID ConfigureIdle()
static POWER_SETTING_CALLBACK PowerSettingChanged
Definition: fdo.h:540
DEVICE_CAPABILITIES m_Capabilities
Definition: fdo.h:359
VOID QueueFakeStatusChangeToPorts()
Definition: fanout.cpp:425
USB_DEVICE_STATUS m_DeviceStatus
Definition: fdo.h:422
VOID EnqueueWorkItem(_In_ PUCXHUB_WORKITEM WorkItem, _In_ PUCXHUB_WORKITEM_ROUTINE Routine, _In_ PVOID Context, _In_ BOOLEAN ForwardProgress)
Definition: fdo.cpp:54
UCXUSBDEVICE UsbDevice() const
Definition: fdo.h:180
LIST_ENTRY m_HubListEntry
Definition: fdo.h:404
VOID ConfirmStopWhileSuspended(_In_ HubChild *Child)
Definition: fanout.cpp:821
USHORT m_InterruptMaxPacket
Definition: fdo.h:429
PVOID m_IdleTimeoutSetting
Definition: fdo.h:397
ULONG m_FwUpdateProtocol
Definition: fdo.h:453
HubPort * m_PortStatusTarget
Definition: fdo.h:393
USBD_CONFIGURATION_HANDLE m_ConfigurationHandle
Definition: fdo.h:430
WDFWAITLOCK m_Usb4HostsLock
Definition: fdo.h:474
BOOLEAN IsHubResetInProgress() const
Definition: fdo.h:333
HubMux m_Mux
Definition: fdo.h:407
PUCXHUB_WORKITEM m_WorkItem
Definition: fdo.h:411
HubChange m_SelectedChange
Definition: fdo.h:428
HubParentInfo m_ParentInfo
Definition: fdo.h:360
volatile LONG m_Flags
Definition: fdo.h:352
_IRQL_requires_(PASSIVE_LEVEL) NTSTATUS QueryCapabilities()
VOID ResumeInterruptTransfer(_In_ HubPort *Port)
Definition: fanout.cpp:573
USB_30_HUB_DESCRIPTOR Usb30
Definition: fdo.h:420
_IRQL_requires_(PASSIVE_LEVEL) NTSTATUS PostAndWait(_In_ HubEvent Event
ULONG m_MaxPortPower
Definition: fdo.h:384
BOOLEAN NeedsForwardProgress() const
Definition: fdo.h:208
UCXHUB_PARENT_INTERFACE m_Parent
Definition: fdo.h:355
BOOLEAN IsRootHub() const
Definition: fdo.h:174
union HubFdo::@1628 m_HubDescriptor
static EVT_WDF_DEVICE_DISARM_WAKE_FROM_SX EvtDisarmWakeFromSx
Definition: fdo.h:536
VOID QueueStopToPorts()
Definition: fanout.cpp:300
PULONG m_DromBuffer
Definition: fdo.h:457
WDF_POWER_DEVICE_STATE m_PowerState
Definition: fdo.h:399
HubRouterIdentity m_RouterIdentity
Definition: fdo.h:461
ULONG m_SspIsochBurstCount
Definition: fdo.h:385
_IRQL_requires_(PASSIVE_LEVEL) NTSTATUS Initialize(_In_ WDFDEVICE Device)
WDFCOLLECTION m_Usb4Hosts
Definition: fdo.h:473
_IRQL_requires_(PASSIVE_LEVEL) NTSTATUS InitializeMachine()
BOOLEAN m_NeedsForwardProgress
Definition: fdo.h:412
_IRQL_requires_(PASSIVE_LEVEL) NTSTATUS QueryInterfaces()
VOID ReferenceDevicePower(_In_ HubChild *Child)
Definition: fanout.cpp:783
LARGE_INTEGER m_FirstRecoveryTime
Definition: fdo.h:437
VOID AllowHubReset()
Definition: fanout.cpp:444
VOID QueuePowerDownToDevices(_In_ DsmEvent Event, _In_ HubDeviceFanOut FanOut)
Definition: fanout.cpp:676
static EVT_WDF_DEVICE_ARM_WAKE_FROM_SX EvtArmWakeFromSx
Definition: fdo.h:535
PVOID m_Usb4Notification
Definition: fdo.h:477
HubPort * FindPort(_In_ ULONG PortNumber)
Definition: fanout.cpp:42
VOID TakePortPowerReference(_In_ HubPort *Port)
Definition: fanout.cpp:532
VOID MarkDevicesProgrammingLost()
Definition: fanout.cpp:840
ULONG m_DromMailbox
Definition: fdo.h:460
USB_HUB_STATUS_AND_CHANGE m_HubStatus
Definition: fdo.h:423
BOOLEAN TakeInterruptReference(_In_ HubPort *Port)
Definition: fanout.cpp:485
USHORT m_ResetCount
Definition: fdo.h:433
ULONG m_ResetFlags
Definition: fdo.h:364
_IRQL_requires_(PASSIVE_LEVEL) NTSTATUS CreateQueue()
static EVT_WDF_OBJECT_CONTEXT_CLEANUP EvtCleanup
Definition: fdo.h:537
BOOLEAN m_OnHubList
Definition: fdo.h:405
static EVT_WDF_DEVICE_D0_ENTRY EvtD0Entry
Definition: fdo.h:529
VOID DropInterruptReference(_In_ HubPort *Port)
Definition: fanout.cpp:499
BOOLEAN SmPost(_In_ Event Ev)
Definition: smengine.h:370
_In_ ULONG _Out_opt_ HubBosInfo _Out_opt_ PUSHORT U1ExitLatency
Definition: desccheck.cpp:2218
DsmEvent
Definition: devsm.h:15
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
Definition: dispmprt.h:1287
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
CPPORT Port[4]
Definition: headless.c:38
HubEvent
Definition: hubsm.h:15
HubChange
Definition: hubsm.h:80
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
Definition: hubucx.h:258
UCXHUB_WORKITEM_ROUTINE * PUCXHUB_WORKITEM_ROUTINE
Definition: hubucx.h:228
_In_opt_ PVOID _In_ PUCXHUB_WORKITEM WorkItem
Definition: hubucx.h:227
_In_ ULONG PortNumber
Definition: hubucx.h:272
#define InterlockedOr
Definition: interlocked.h:239
#define InterlockedAnd
Definition: interlocked.h:77
#define C_ASSERT(e)
Definition: intsafe.h:73
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
Definition: kse.h:81
#define _Inout_
Definition: no_sal2.h:162
#define _Enum_is_bitflag_
Definition: no_sal2.h:404
#define _In_
Definition: no_sal2.h:158
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
PortEvent
Definition: portsm.h:15
Definition: xml2sdb.h:103
Definition: fdo.h:58
volatile LONG OutstandingPnpOperations
Definition: fdo.h:62
LIST_ENTRY Devices
Definition: fdo.h:73
LONG InterruptReferences
Definition: fdo.h:64
LIST_ENTRY Ports
Definition: fdo.h:69
BOOLEAN FailDeviceRegistration
Definition: fdo.h:78
volatile LONG PortPowerReferences
Definition: fdo.h:65
LONG DevicePowerReferences
Definition: fdo.h:66
BOOLEAN FailInterruptAcquire
Definition: fdo.h:76
volatile LONG OutstandingResetOperations
Definition: fdo.h:63
volatile LONG OutstandingPortChanges
Definition: fdo.h:61
BOOLEAN HubResetEnabled
Definition: fdo.h:77
BOOLEAN InterruptReleasePending
Definition: fdo.h:75
KSPIN_LOCK Lock
Definition: fdo.h:59
ULONG PortCount
Definition: fdo.h:70
HubDeviceFanOut DeviceFanOut
Definition: fdo.h:79
volatile LONG HubResetInProgress
Definition: fdo.h:82
PDEVICE_OBJECT RootHubPdo
Definition: fdo.h:88
USHORT U2ExitLatency
Definition: fdo.h:91
USB_DEVICE_DESCRIPTOR DeviceDescriptor
Definition: fdo.h:89
ULONG Flags
Definition: fdo.h:100
UCHAR TotalHubDepth
Definition: fdo.h:98
USHORT TotalTpPropagationDelay
Definition: fdo.h:99
UCHAR SlowestLinkU1Depth
Definition: fdo.h:93
UCHAR SlowestLinkU2Depth
Definition: fdo.h:95
PUSB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED SublinkSpeedAttr
Definition: fdo.h:101
USHORT SlowestLinkU2ExitLatency
Definition: fdo.h:94
USHORT SlowestLinkU1ExitLatency
Definition: fdo.h:92
USHORT HostInitiatedU2ExitLatency
Definition: fdo.h:97
USHORT HostInitiatedU1ExitLatency
Definition: fdo.h:96
USHORT U1ExitLatency
Definition: fdo.h:90
ULONG SublinkSpeedAttrCount
Definition: fdo.h:102
struct _URB_CONTROL_TRANSFER_EX Urb
Definition: fdo.h:555
USHORT Revision
Definition: fdo.h:127
USHORT ProductId
Definition: fdo.h:125
BOOLEAN Known
Definition: fdo.h:128
USHORT BcdDevice
Definition: fdo.h:126
USHORT VendorId
Definition: fdo.h:124
Definition: typedefs.h:120
UCXUSBDEVICE Hub
Definition: hubucx.h:503
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: typedefs.h:53
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define NTAPI
Definition: typedefs.h:36
const char * PCSTR
Definition: typedefs.h:52
uint32_t ULONG
Definition: typedefs.h:59
HubDeviceFanOut
Definition: fdo.h:49
EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL HubEvtIoInternalDeviceControl
Definition: fdo.h:550
EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL HubEvtIoDeviceControl
Definition: fdo.h:549
HubFlag
Definition: fdo.h:12
@ OverCurrentDetected
@ PollingToComplianceOnStart
@ ToleratesU0WhileDetached
@ DelayAfterResetComplete
@ InAcpiNamespace
@ S0IdleConfigured
@ NoSelectiveSuspendIntegrated
@ PerPortPower
@ DisableUsb20Lpm
@ ArmedForWake
@ ResetTtOnCancel
@ PerPortOverCurrent
@ DisallowU2AcceptOnly
@ PowerReferenceAllowed
@ WaitWakeQueued
@ IgnoreEnabledInSsInactive
@ GlobalPowerReference
@ PowerOnPortsOnStart
@ ParentNoSelectiveSuspend
@ PowerReferencePending
@ InBootOrPagingPath
@ DisableOnSoftRemove
@ NoClearTtOnCancel
@ NoOverCurrentProtection
@ WakeOnConnect
@ DisableSuperSpeed
@ DiscardEnableDuringReset
enum _WDF_POWER_DEVICE_STATE WDF_POWER_DEVICE_STATE
enum _WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
Definition: wdffdo.h:536
#define WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(_contexttype, _castingfunction)
Definition: wdfobject.h:350
DEVICE_CAPABILITIES
Definition: iotypes.h:965
static void Initialize()
Definition: xlate.c:212