17 0x4fb2b0e1, 0x5fdd, 0x4dab, 0xa6, 0x00, 0x5e, 0x15, 0x16, 0xbb, 0xd8, 0xa7);
20 0xa9264c93, 0xeccd, 0x4b40, 0x92, 0x9b, 0xb3, 0x54, 0xf1, 0xe9, 0xa2, 0xdc);
22#define UCXHUB_FN_ADDRESS0_OWNERSHIP_ACQUIRE 0x401
23#define UCXHUB_FN_ROOTHUB_GET_INFO 0x402
24#define UCXHUB_FN_ROOTHUB_GET_20PORT_INFO 0x403
25#define UCXHUB_FN_ROOTHUB_GET_30PORT_INFO 0x404
26#define UCXHUB_FN_DEVICE_ENABLE 0x405
27#define UCXHUB_FN_DEVICE_RESET 0x406
28#define UCXHUB_FN_DEVICE_ADDRESS 0x407
29#define UCXHUB_FN_DEVICE_UPDATE 0x408
30#define UCXHUB_FN_DEVICE_HUB_INFO 0x409
31#define UCXHUB_FN_DEVICE_DISABLE 0x40A
32#define UCXHUB_FN_DEVICE_PURGE_IO 0x40B
33#define UCXHUB_FN_DEVICE_START_IO 0x40C
34#define UCXHUB_FN_ENDPOINTS_CONFIGURE 0x40D
35#define UCXHUB_FN_DEFAULT_ENDPOINT_UPDATE 0x40E
36#define UCXHUB_FN_ENDPOINT_RESET 0x40F
37#define UCXHUB_FN_GET_HUB_INFO 0x410
38#define UCXHUB_FN_QUERY_USB_CAPABILITY 0x412
39#define UCXHUB_FN_SET_FUNCTION_HANDLE_DATA 0x413
40#define UCXHUB_FN_DEVICE_TREE_PURGE_IO 0x414
41#define UCXHUB_FN_DEVICE_ABORT_IO 0x415
42#define UCXHUB_FN_GET_DUMP_DATA 0x501
43#define UCXHUB_FN_FREE_DUMP_DATA 0x502
44#define UCXHUB_FN_NOTIFY_FORWARD_PROGRESS 0x503
46#define UCXHUB_IOCTL(Function) \
47 CTL_CODE(FILE_DEVICE_USBEX, (Function), METHOD_NEITHER, FILE_ANY_ACCESS)
49#define IOCTL_UCXHUB_ADDRESS0_OWNERSHIP_ACQUIRE UCXHUB_IOCTL(UCXHUB_FN_ADDRESS0_OWNERSHIP_ACQUIRE)
50#define IOCTL_UCXHUB_ROOTHUB_GET_INFO UCXHUB_IOCTL(UCXHUB_FN_ROOTHUB_GET_INFO)
51#define IOCTL_UCXHUB_ROOTHUB_GET_20PORT_INFO UCXHUB_IOCTL(UCXHUB_FN_ROOTHUB_GET_20PORT_INFO)
52#define IOCTL_UCXHUB_ROOTHUB_GET_30PORT_INFO UCXHUB_IOCTL(UCXHUB_FN_ROOTHUB_GET_30PORT_INFO)
53#define IOCTL_UCXHUB_DEVICE_ENABLE UCXHUB_IOCTL(UCXHUB_FN_DEVICE_ENABLE)
54#define IOCTL_UCXHUB_DEVICE_RESET UCXHUB_IOCTL(UCXHUB_FN_DEVICE_RESET)
55#define IOCTL_UCXHUB_DEVICE_ADDRESS UCXHUB_IOCTL(UCXHUB_FN_DEVICE_ADDRESS)
56#define IOCTL_UCXHUB_DEVICE_UPDATE UCXHUB_IOCTL(UCXHUB_FN_DEVICE_UPDATE)
57#define IOCTL_UCXHUB_DEVICE_HUB_INFO UCXHUB_IOCTL(UCXHUB_FN_DEVICE_HUB_INFO)
58#define IOCTL_UCXHUB_DEVICE_DISABLE UCXHUB_IOCTL(UCXHUB_FN_DEVICE_DISABLE)
59#define IOCTL_UCXHUB_DEVICE_PURGE_IO UCXHUB_IOCTL(UCXHUB_FN_DEVICE_PURGE_IO)
60#define IOCTL_UCXHUB_DEVICE_START_IO UCXHUB_IOCTL(UCXHUB_FN_DEVICE_START_IO)
61#define IOCTL_UCXHUB_ENDPOINTS_CONFIGURE UCXHUB_IOCTL(UCXHUB_FN_ENDPOINTS_CONFIGURE)
62#define IOCTL_UCXHUB_DEFAULT_ENDPOINT_UPDATE UCXHUB_IOCTL(UCXHUB_FN_DEFAULT_ENDPOINT_UPDATE)
63#define IOCTL_UCXHUB_ENDPOINT_RESET UCXHUB_IOCTL(UCXHUB_FN_ENDPOINT_RESET)
64#define IOCTL_UCXHUB_GET_HUB_INFO UCXHUB_IOCTL(UCXHUB_FN_GET_HUB_INFO)
65#define IOCTL_UCXHUB_QUERY_USB_CAPABILITY UCXHUB_IOCTL(UCXHUB_FN_QUERY_USB_CAPABILITY)
66#define IOCTL_UCXHUB_SET_FUNCTION_HANDLE_DATA UCXHUB_IOCTL(UCXHUB_FN_SET_FUNCTION_HANDLE_DATA)
67#define IOCTL_UCXHUB_DEVICE_TREE_PURGE_IO UCXHUB_IOCTL(UCXHUB_FN_DEVICE_TREE_PURGE_IO)
68#define IOCTL_UCXHUB_DEVICE_ABORT_IO UCXHUB_IOCTL(UCXHUB_FN_DEVICE_ABORT_IO)
69#define IOCTL_UCXHUB_NOTIFY_FORWARD_PROGRESS UCXHUB_IOCTL(UCXHUB_FN_NOTIFY_FORWARD_PROGRESS)
72#define IOCTL_UCXHUB_GET_DUMP_DATA \
73 CTL_CODE(FILE_DEVICE_USBEX, UCXHUB_FN_GET_DUMP_DATA, METHOD_BUFFERED, FILE_ANY_ACCESS)
74#define IOCTL_UCXHUB_FREE_DUMP_DATA \
75 CTL_CODE(FILE_DEVICE_USBEX, UCXHUB_FN_FREE_DUMP_DATA, METHOD_BUFFERED, FILE_ANY_ACCESS)
78#define IOCTL_UCXHUB_RESET_PORT_ASYNC \
79 CTL_CODE(FILE_DEVICE_UNKNOWN, 1004, METHOD_NEITHER, FILE_ANY_ACCESS)
98#define UCXHUB_URB_FLAGS_UCX_MASK 0x00FFFFFF
99#define UCXHUB_URB_FLAGS_HUB_MASK 0xFF000000
100#define UCXHUB_URB_FLAG_PEND_INTERRUPT_TX 0x80000000
101#define UCXHUB_URB_FLAG_ALLOW_LARGE_TRANSFER 0x40000000
156#define UCXHUB_QUERY_CAPABILITY_VERSION 1
211#define UCXHUB_WORKITEM_NO_FLAGS 0
212#define UCXHUB_WORKITEM_FLAG_NEEDS_FLUSH 1
224UCXHUB_WORKITEM_ROUTINE(
235(
NTAPI *PFN_UCXHUB_CLEAR_TT_BUFFER)(
236 _In_ UCXHUB_HUB_CONTEXT HubContext,
245(
NTAPI *PFN_UCXHUB_NO_PING_RESPONSE)(
246 _In_ UCXHUB_HUB_CONTEXT HubContext,
255(
NTAPI *PFN_UCXHUB_DEVICE_CREATE)(
256 _In_ UCXUSBDEVICE Hub,
263(
NTAPI *PFN_UCXHUB_DEVICE_DELETE)(
264 _In_ UCXUSBDEVICE Hub,
270(
NTAPI *PFN_UCXHUB_DEVICE_DISCONNECT)(
271 _In_ UCXUSBDEVICE Hub,
277(
NTAPI *PFN_UCXHUB_DEVICE_SET_PDO)(
278 _In_ UCXUSBDEVICE Hub,
286(
NTAPI *PFN_UCXHUB_DEFAULT_ENDPOINT_CREATE)(
287 _In_ UCXUSBDEVICE Hub,
295(
NTAPI *PFN_UCXHUB_ADDRESS0_RELEASE)(
296 _In_ UCXUSBDEVICE Hub,
303(
NTAPI *PFN_UCXHUB_ENDPOINT_CREATE)(
304 _In_ UCXUSBDEVICE Hub,
314(
NTAPI *PFN_UCXHUB_ENDPOINT_DELETE)(
315 _In_ UCXUSBDEVICE Hub,
322(
NTAPI *PFN_UCXHUB_ENDPOINT_EXPOSED)(
338 _In_ UCXUSBDEVICE Hub,
358(
NTAPI *PFN_UCXHUB_WORKITEM_FLUSH)(
364(
NTAPI *PFN_UCXHUB_CLEAR_TT_BUFFER_COMPLETE)(
365 _In_ UCXUSBDEVICE Hub,
376(
NTAPI *PFN_UCXHUB_STREAMS_SUPPORTED)(
377 _In_ UCXUSBDEVICE Hub);
382(
NTAPI *PFN_UCXHUB_CONTROLLER_STOP_IDLE)(
383 _In_ UCXUSBDEVICE Hub,
389(
NTAPI *PFN_UCXHUB_CONTROLLER_RESUME_IDLE)(
390 _In_ UCXUSBDEVICE Hub,
396(
NTAPI *PFN_UCXHUB_CONTROLLER_GET_INFO)(
397 _In_ UCXUSBDEVICE Hub,
410(
NTAPI *PFN_UCXHUB_ENDPOINT_SET_PRIORITY)(
411 _In_ UCXUSBDEVICE Hub,
417#define UCXHUB_STACK_INTERFACE_VERSION_1 1000
418#define UCXHUB_STACK_INTERFACE_VERSION_2 2000
419#define UCXHUB_STACK_INTERFACE_VERSION_3 3000
469#define UCXHUB_STACK_INTERFACE_SIZE_ORIGINAL \
470 FIELD_OFFSET(UCXHUB_STACK_INTERFACE, DeviceGetTimestamp)
477(
NTAPI *PFN_UCXHUB_WAS_HUB_RESET)(
483(
NTAPI *PFN_UCXHUB_WAS_PROGRAMMING_LOST)(
489(
NTAPI *PFN_UCXHUB_GET_SYMBOLIC_NAME)(
493#define UCXHUB_PARENT_INTERFACE_VERSION 1013
537#define UCXHUB_TUNNEL_STATE_NOT_ANSWERED 0
538#define UCXHUB_TUNNEL_STATE_NO_INFORMATION 1
539#define UCXHUB_TUNNEL_STATE_TUNNELED 2
540#define UCXHUB_TUNNEL_STATE_NATIVE 3
541#define UCXHUB_TUNNEL_STATE_UNKNOWN 4
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
#define _IRQL_requires_max_(irql)
_In_ UCXHUB_DEVICE_CONTEXT _In_ UCXENDPOINT _In_ ULONG _In_ ULONG TtPortNumber
struct _UCXHUB_PARENT_INTERFACE UCXHUB_PARENT_INTERFACE
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
struct _UCXHUB_FORWARD_PROGRESS_PIPE * PUCXHUB_FORWARD_PROGRESS_PIPE
struct _UCXHUB_STACK_INTERFACE * PUCXHUB_STACK_INTERFACE
struct _UCXHUB_DEVICE_CREATE_INFO UCXHUB_DEVICE_CREATE_INFO
#define UCXHUB_STACK_INTERFACE_SIZE_ORIGINAL
struct _UCXHUB_FUNCTION_DATA UCXHUB_FUNCTION_DATA
_Must_inspect_result_ _In_ UCXUSBDEVICE _In_ ULONG MaxPacketSize
UCXHUB_WORKITEM_ROUTINE * PUCXHUB_WORKITEM_ROUTINE
VOID(NTAPI * PFN_UCXHUB_WORKITEM_ENQUEUE)(_In_ PUCXHUB_WORKITEM WorkItem, _In_ PUCXHUB_WORKITEM_ROUTINE Routine, _In_opt_ PVOID Context, _In_ UCXHUB_WORKITEM_ENQUEUE_OPTIONS Options)
struct _UCXHUB_WORKITEM * PUCXHUB_WORKITEM
_In_ UCXUSBDEVICE _In_ UCXENDPOINT _In_ ULONG Priority
struct _UCXHUB_PARENT_INTERFACE_ORIGINAL * PUCXHUB_PARENT_INTERFACE_ORIGINAL
ULONG(NTAPI * PFN_UCXHUB_ENDPOINT_MAX_TRANSFER)(_In_ UCXENDPOINT Endpoint)
_Must_inspect_result_ _IRQL_requires_(PASSIVE_LEVEL) NTSTATUS(NTAPI *PFN_UCXHUB_DEVICE_CREATE)(_In_ UCXUSBDEVICE Hub
BOOLEAN(NTAPI * PFN_UCXHUB_IS_DEVICE_DISCONNECTED)(_In_ UCXUSBDEVICE Device)
USBD_PIPE_HANDLE(NTAPI * PFN_UCXHUB_ENDPOINT_PIPE_HANDLE)(_In_ UCXENDPOINT Endpoint)
_Must_inspect_result_ _In_ UCXUSBDEVICE _In_reads_bytes_(DescriptorBufferLength) PUSB_ENDPOINT_DESCRIPTOR Descriptor
_In_ UCXHUB_DEVICE_CONTEXT DeviceContext
ULONG64(NTAPI * PFN_UCXHUB_DEVICE_GET_TIMESTAMP)(_In_ UCXUSBDEVICE Device)
struct _UCXHUB_DUMP_DEVICE_INFO * PUCXHUB_DUMP_DEVICE_INFO
union _UCXHUB_RESET_FLAGS * PUCXHUB_RESET_FLAGS
struct _UCXHUB_FORWARD_PROGRESS_INFO UCXHUB_FORWARD_PROGRESS_INFO
struct _UCXHUB_CONTROLLER_INFO_V2 UCXHUB_CONTROLLER_INFO_V2
struct _UCXHUB_CONTROLLER_INFO UCXHUB_CONTROLLER_INFO
struct _UCXHUB_STOP_IDLE_CONTEXT * PUCXHUB_STOP_IDLE_CONTEXT
PUCXHUB_WORKITEM(NTAPI * PFN_UCXHUB_WORKITEM_ALLOCATE)(_In_ UCXUSBDEVICE Hub, _In_ PDEVICE_OBJECT DeviceObject, _In_ ULONG Flags)
_Must_inspect_result_ _In_ UCXUSBDEVICE _In_ ULONG _In_opt_ PUSB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR Companion
_In_ PUNICODE_STRING SymbolicLinkName
struct _UCXHUB_ROOTHUB_INFO UCXHUB_ROOTHUB_INFO
struct _UCXHUB_FORWARD_PROGRESS_PIPE UCXHUB_FORWARD_PROGRESS_PIPE
_Out_ PUCXHUB_CONTROLLER_INFO ControllerInfo
struct _UCXHUB_QUERY_CAPABILITY * PUCXHUB_QUERY_CAPABILITY
struct _UCXHUB_CONTROLLER_INFO_V2 * PUCXHUB_CONTROLLER_INFO_V2
struct _UCXHUB_DEVICE_CREATE_INFO * PUCXHUB_DEVICE_CREATE_INFO
_In_opt_ PVOID _In_ PUCXHUB_WORKITEM WorkItem
_In_ UCXHUB_DEVICE_CONTEXT _In_ UCXENDPOINT Endpoint
struct _UCXHUB_PARENT_INTERFACE_ORIGINAL UCXHUB_PARENT_INTERFACE_ORIGINAL
_Inout_ PUCXHUB_STOP_IDLE_CONTEXT StopIdleContext
enum _UCXHUB_WORKITEM_ENQUEUE_OPTIONS UCXHUB_WORKITEM_ENQUEUE_OPTIONS
_In_ UCXHUB_DEVICE_CONTEXT _In_ UCXENDPOINT _In_ ULONG EndpointNumber
struct _UCXHUB_PARENT_INTERFACE * PUCXHUB_PARENT_INTERFACE
struct _UCXHUB_DUMP_DEVICE_INFO UCXHUB_DUMP_DEVICE_INFO
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO CreateInfo
struct _UCXHUB_UPDATE_TUNNEL_ANSWER * PUCXHUB_UPDATE_TUNNEL_ANSWER
struct _UCXHUB_STOP_IDLE_CONTEXT UCXHUB_STOP_IDLE_CONTEXT
FORCEINLINE PUCXHUB_UPDATE_TUNNEL_ANSWER NTAPI UcxHubUpdateTunnelAnswer(_In_ PUSBDEVICE_UPDATE Update)
_UCXHUB_WORKITEM_ENQUEUE_OPTIONS
@ UcxHubWorkItemForwardProgressNotRequired
struct _UCXHUB_QUERY_CAPABILITY UCXHUB_QUERY_CAPABILITY
struct _UCXHUB_FORWARD_PROGRESS_INFO * PUCXHUB_FORWARD_PROGRESS_INFO
struct _UCXHUB_CONTROLLER_INFO * PUCXHUB_CONTROLLER_INFO
_Must_inspect_result_ _In_ UCXUSBDEVICE _In_ ULONG DescriptorBufferLength
_In_ UCXUSBDEVICE _In_ PDEVICE_OBJECT Pdo
struct _UCXHUB_STACK_INTERFACE UCXHUB_STACK_INTERFACE
VOID(NTAPI * PFN_UCXHUB_WORKITEM_DELETE)(_In_ PUCXHUB_WORKITEM WorkItem)
struct _UCXHUB_FUNCTION_DATA * PUCXHUB_FUNCTION_DATA
struct _UCXHUB_UPDATE_TUNNEL_ANSWER UCXHUB_UPDATE_TUNNEL_ANSWER
union _UCXHUB_RESET_FLAGS UCXHUB_RESET_FLAGS
struct _UCXHUB_ROOTHUB_INFO * PUCXHUB_ROOTHUB_INFO
#define DECLARE_HANDLE(name)
#define _Must_inspect_result_
#define _Function_class_(n)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
UCX_CONTROLLER_PARENT_BUS_TYPE Type
UCX_CONTROLLER_PCI_INFORMATION Pci
UCX_CONTROLLER_ACPI_INFORMATION Acpi
UCX_CONTROLLER_ACPI_INFORMATION Acpi
UCX_CONTROLLER_PARENT_BUS_TYPE Type
UCX_CONTROLLER_PCI_INFORMATION Pci
USB_DEVICE_SPEED DeviceSpeed
UCXHUB_DEVICE_CONTEXT HubDeviceContext
UCXHUB_FORWARD_PROGRESS_PIPE Pipes[ANYSIZE_ARRAY]
ULONG ControlPipeMaxTransferSize
ULONG ReservedTransferLimit
USBD_PIPE_HANDLE PipeHandle
PDEVICE_OBJECT PhysicalDeviceObject
USBD_FUNCTION_HANDLE FunctionHandle
USB_TOPOLOGY_ADDRESS HubTopologyAddress
PFN_UCXHUB_GET_SYMBOLIC_NAME QueryHubLinkName
USB_DEVICE_SPEED HubSpeed
PFN_UCXHUB_WAS_HUB_RESET ParentResetDuringResume
PFN_UCXHUB_WAS_PROGRAMMING_LOST ParentLostStateDuringResume
USHORT FirstCompanionPort
BOOLEAN IsEnhancedSuperSpeed
BOOLEAN IsEnhancedSuperSpeed
PFN_UCXHUB_WAS_HUB_RESET ParentResetDuringResume
USHORT FirstCompanionPort
PFN_UCXHUB_WAS_PROGRAMMING_LOST ParentLostStateDuringResume
PFN_UCXHUB_GET_SYMBOLIC_NAME QueryHubLinkName
USB_DEVICE_SPEED HubSpeed
USB_TOPOLOGY_ADDRESS HubTopologyAddress
USBD_PIPE_HANDLE InterruptPipe
PFN_UCXHUB_DEVICE_CREATE DeviceCreate
PFN_UCXHUB_IS_DEVICE_DISCONNECTED IsDeviceDisconnected
PFN_UCXHUB_ENDPOINT_MAX_TRANSFER EndpointGetMaxTransferSize
PFN_UCXHUB_CONTROLLER_STOP_IDLE BlockControllerIdle
PFN_UCXHUB_ENDPOINT_EXPOSED MarkEndpointClientOwned
UCXHUB_HUB_CONTEXT HubContext
PFN_UCXHUB_WORKITEM_ALLOCATE WorkItemAllocate
PFN_UCXHUB_WORKITEM_FLUSH WorkItemFlush
PFN_UCXHUB_ENDPOINT_CREATE EndpointCreate
PFN_UCXHUB_DEVICE_DISCONNECT DeviceDisconnect
PFN_UCXHUB_DEVICE_GET_TIMESTAMP DeviceGetTimestamp
PFN_UCXHUB_CONTROLLER_GET_INFO QueryControllerBus
PFN_UCXHUB_CLEAR_TT_BUFFER ClearTtBuffer
PFN_UCXHUB_ENDPOINT_PIPE_HANDLE EndpointGetPipeHandle
PFN_UCXHUB_DEFAULT_ENDPOINT_CREATE CreateControlEndpoint
PFN_UCXHUB_CONTROLLER_RESUME_IDLE AllowControllerIdle
PFN_UCXHUB_NO_PING_RESPONSE NoPingResponse
PFN_UCXHUB_WORKITEM_DELETE WorkItemDelete
PFN_UCXHUB_ENDPOINT_SET_PRIORITY EndpointSetPriority
PFN_UCXHUB_ENDPOINT_DELETE EndpointDelete
PFN_UCXHUB_STREAMS_SUPPORTED StreamsSupported
PFN_UCXHUB_WORKITEM_ENQUEUE WorkItemEnqueue
PFN_UCXHUB_ADDRESS0_RELEASE Address0Release
PFN_UCXHUB_CLEAR_TT_BUFFER_COMPLETE ClearTtBufferComplete
PFN_UCXHUB_DEVICE_SET_PDO DeviceSetPdo
PFN_UCXHUB_DEVICE_DELETE DeviceDelete
BOOLEAN PowerReferenceAcquired
#define FIELD_OFFSET(t, f)
WDF_EXTERN_C_START enum _UCX_CONTROLLER_PARENT_BUS_TYPE UCX_CONTROLLER_PARENT_BUS_TYPE
ULONG PortPowerInterrupted
enum _USB_DEVICE_SPEED USB_DEVICE_SPEED
_In_ PDEVICE_OBJECT DeviceObject
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Reserved_ PVOID Reserved