14#define HUB_CLASS_CODE 9
15#define HUB_PROTOCOL_SINGLE_TT 1
16#define HUB_PROTOCOL_MULTI_TT 2
17#define HUB_PROTOCOL_ANY (-1)
20#define HUB_30_MAX_STATUS_PACKET 2
45 Stack.Parameters.Others.Argument1 = Payload;
102 Order = HighSpeedOrder;
150 DPRINT1(
"Hub %p select configuration URB not built\n",
m_Hub);
154 DPRINT(
"Hub %p selecting interface %u protocol %u\n",
169 m_Hub->
Post(HubEvent::ConfigurationFailed);
189 Pipe = &
Urb->UrbSelectConfiguration.Interface.Pipes[0];
198 DPRINT1(
"Hub %p SuperSpeed status endpoint packet size %u\n",
Hub,
Pipe->MaximumPacketSize);
210 DPRINT1(
"Hub %p set configuration failed 0x%lx, URB status 0x%lx\n",
238 DPRINT1(
"Hub %p status change pipe reset failed 0x%lx, URB status 0x%lx\n",
252 Urb->Hdr.Length =
sizeof(*Urb);
312 DPRINT(
"Hub %p asking parent for a reset\n",
m_Hub);
336 WDFIOTARGET RootTarget;
358 DPRINT1(
"Hub %p root hub target open on %p failed 0x%lx\n",
409 DPRINT(
"Hub %p lost controller programming on resume\n",
m_Hub);
PUSB_CONFIGURATION_DESCRIPTOR m_ConfigDescriptor
VOID SetFlag(_In_ HubFlag Flag)
WDFIOTARGET m_RootHubTarget
VOID Post(_In_ HubEvent Event)
HubControlRequest m_Control
HubInterruptRequest m_Interrupt
struct _URB_PIPE_REQUEST m_PipeUrb
static HubFdo * FromDevice(_In_ WDFDEVICE Device)
UCXUSBDEVICE UsbDevice() const
USHORT m_InterruptMaxPacket
USBD_CONFIGURATION_HANDLE m_ConfigurationHandle
HubParentInfo m_ParentInfo
UCXHUB_PARENT_INTERFACE m_Parent
VOID MarkDevicesProgrammingLost()
BOOLEAN WasResetByParent()
VOID SelectHubConfiguration()
VOID ResetStatusChangePipe()
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
#define NT_SUCCESS(StatCode)
#define IOCTL_UCXHUB_RESET_PORT_ASYNC
#define IOCTL_UCXHUB_GET_HUB_INFO
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
#define UNREFERENCED_PARAMETER(P)
#define STATUS_INVALID_HW_PROFILE
PDEVICE_OBJECT RootHubPdo
USB_DEVICE_DESCRIPTOR DeviceDescriptor
PFN_UCXHUB_WAS_HUB_RESET ParentResetDuringResume
PFN_UCXHUB_WAS_PROGRAMMING_LOST ParentLostStateDuringResume
USB_DEVICE_SPEED HubSpeed
#define RtlZeroMemory(Destination, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG Config
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
_In_ UCXUSBDEVICE _In_ ULONG Interface
#define STATUS_NO_SUCH_DEVICE
static BOOLEAN NTAPI HubSendToParent(_In_ HubFdo *Hub, _In_ WDFREQUEST Request, _In_ ULONG IoControlCode, _In_ PVOID Payload, _In_ PFN_WDF_REQUEST_COMPLETION_ROUTINE Completion, _In_ WDFCONTEXT Context)
static EVT_WDF_REQUEST_COMPLETION_ROUTINE HubResetComplete
#define HUB_PROTOCOL_MULTI_TT
#define HUB_PROTOCOL_SINGLE_TT
static EVT_WDF_REQUEST_COMPLETION_ROUTINE HubParentInfoComplete
static EVT_WDF_REQUEST_COMPLETION_ROUTINE HubConfigurationComplete
#define HUB_30_MAX_STATUS_PACKET
static EVT_WDF_REQUEST_COMPLETION_ROUTINE HubPipeResetComplete
static PUSB_INTERFACE_DESCRIPTOR NTAPI HubFindHubInterface(_In_ HubFdo *Hub)
static NTSTATUS NTAPI HubCreateParentRequest(_In_ HubFdo *Hub, _Out_ WDFREQUEST *Request)
#define HUB_PARENT_DISABLE_LPM
#define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL
PURB NTAPI USBD_CreateConfigurationRequestEx(PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, PUSBD_INTERFACE_LIST_ENTRY InterfaceList)
PUSB_INTERFACE_DESCRIPTOR NTAPI USBD_ParseConfigurationDescriptorEx(PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, PVOID StartPosition, LONG InterfaceNumber, LONG AlternateSetting, LONG InterfaceClass, LONG InterfaceSubClass, LONG InterfaceProtocol)
_In_opt_ PUSB_CONFIGURATION_DESCRIPTOR _Inout_ PUSBD_INTERFACE_LIST_ENTRY _Outptr_ PURB * Urb
#define IOCTL_INTERNAL_USB_SUBMIT_URB
_In_ WDFCOLLECTION _In_ ULONG Index
FORCEINLINE VOID WDF_IO_TARGET_OPEN_PARAMS_INIT_EXISTING_DEVICE(_Out_ PWDF_IO_TARGET_OPEN_PARAMS Params, _In_ PDEVICE_OBJECT DeviceObject)
FORCEINLINE VOID WDF_OBJECT_ATTRIBUTES_INIT(_Out_ PWDF_OBJECT_ATTRIBUTES Attributes)
_Must_inspect_result_ FORCEINLINE BOOLEAN WdfRequestSend(_In_ WDFREQUEST Request, _In_ WDFIOTARGET Target, _In_opt_ PWDF_REQUEST_SEND_OPTIONS Options)
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
EVT_WDF_REQUEST_COMPLETION_ROUTINE * PFN_WDF_REQUEST_COMPLETION_ROUTINE
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define WDF_NO_SEND_OPTIONS
#define WDF_NO_OBJECT_ATTRIBUTES
#define IRP_MJ_INTERNAL_DEVICE_CONTROL