#include "usbhub3.h"
#include <debug.h>
Go to the source code of this file.
|
| 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 NTSTATUS NTAPI | HubCreateParentRequest (_In_ HubFdo *Hub, _Out_ WDFREQUEST *Request) |
| |
| static PUSB_INTERFACE_DESCRIPTOR NTAPI | HubFindHubInterface (_In_ HubFdo *Hub) |
| |
| static VOID NTAPI | HubConfigurationComplete (_In_ WDFREQUEST Request, _In_ WDFIOTARGET Target, _In_ PWDF_REQUEST_COMPLETION_PARAMS Params, _In_ WDFCONTEXT Context) |
| |
| static VOID NTAPI | HubPipeResetComplete (_In_ WDFREQUEST Request, _In_ WDFIOTARGET Target, _In_ PWDF_REQUEST_COMPLETION_PARAMS Params, _In_ WDFCONTEXT Context) |
| |
| static VOID NTAPI | HubResetComplete (_In_ WDFREQUEST Request, _In_ WDFIOTARGET Target, _In_ PWDF_REQUEST_COMPLETION_PARAMS Params, _In_ WDFCONTEXT Context) |
| |
| static VOID NTAPI | HubParentInfoComplete (_In_ WDFREQUEST Request, _In_ WDFIOTARGET Target, _In_ PWDF_REQUEST_COMPLETION_PARAMS Params, _In_ WDFCONTEXT Context) |
| |
◆ HUB_30_MAX_STATUS_PACKET
| #define HUB_30_MAX_STATUS_PACKET 2 |
◆ HUB_CLASS_CODE
◆ HUB_PROTOCOL_ANY
◆ HUB_PROTOCOL_MULTI_TT
| #define HUB_PROTOCOL_MULTI_TT 2 |
◆ HUB_PROTOCOL_SINGLE_TT
| #define HUB_PROTOCOL_SINGLE_TT 1 |
◆ NDEBUG
◆ HubConfigurationComplete()
Definition at line 176 of file upstream.cpp.
181{
186
188 {
189 Pipe = &
Urb->UrbSelectConfiguration.Interface.Pipes[0];
190
194
197 {
198 DPRINT1(
"Hub %p SuperSpeed status endpoint packet size %u\n",
Hub,
Pipe->MaximumPacketSize);
199 }
200
203 {
205 }
206 }
207
209 {
210 DPRINT1(
"Hub %p set configuration failed 0x%lx, URB status 0x%lx\n",
212 }
213
216
218}
VOID Post(_In_ HubEvent Event)
HubInterruptRequest m_Interrupt
static HubFdo * FromDevice(_In_ WDFDEVICE Device)
USHORT m_InterruptMaxPacket
USBD_CONFIGURATION_HANDLE m_ConfigurationHandle
HubParentInfo m_ParentInfo
#define NT_SUCCESS(StatCode)
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
#define STATUS_INVALID_HW_PROFILE
USB_DEVICE_DESCRIPTOR DeviceDescriptor
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
#define HUB_30_MAX_STATUS_PACKET
_In_opt_ PUSB_CONFIGURATION_DESCRIPTOR _Inout_ PUSBD_INTERFACE_LIST_ENTRY _Outptr_ PURB * Urb
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
◆ HubCreateParentRequest()
◆ HubFindHubInterface()
Definition at line 88 of file upstream.cpp.
90{
98
100 {
102 Order = HighSpeedOrder;
104 break;
105
108 Order = OtherOrder;
110 break;
111
112 default:
114 }
115
117 {
121 }
122
124}
PUSB_CONFIGURATION_DESCRIPTOR m_ConfigDescriptor
UCXHUB_PARENT_INTERFACE m_Parent
USB_DEVICE_SPEED HubSpeed
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG Config
_In_ UCXUSBDEVICE _In_ ULONG Interface
#define HUB_PROTOCOL_MULTI_TT
#define HUB_PROTOCOL_SINGLE_TT
PUSB_INTERFACE_DESCRIPTOR NTAPI USBD_ParseConfigurationDescriptorEx(PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, PVOID StartPosition, LONG InterfaceNumber, LONG AlternateSetting, LONG InterfaceClass, LONG InterfaceSubClass, LONG InterfaceProtocol)
_In_ WDFCOLLECTION _In_ ULONG Index
Referenced by HubMachine::SelectHubConfiguration().
◆ HubParentInfoComplete()
Definition at line 327 of file upstream.cpp.
332{
336 WDFIOTARGET RootTarget;
337
339
341 {
343 }
344 else
345 {
349 }
350
352 {
354
357 {
358 DPRINT1(
"Hub %p root hub target open on %p failed 0x%lx\n",
361 }
362 else
363 {
367 }
368 }
369
372
375}
VOID SetFlag(_In_ HubFlag Flag)
WDFIOTARGET m_RootHubTarget
#define UNREFERENCED_PARAMETER(P)
PDEVICE_OBJECT RootHubPdo
#define HUB_PARENT_DISABLE_LPM
FORCEINLINE VOID WDF_IO_TARGET_OPEN_PARAMS_INIT_EXISTING_DEVICE(_Out_ PWDF_IO_TARGET_OPEN_PARAMS Params, _In_ PDEVICE_OBJECT DeviceObject)
#define WDF_NO_OBJECT_ATTRIBUTES
◆ HubPipeResetComplete()
Definition at line 225 of file upstream.cpp.
230{
232
235
237 {
238 DPRINT1(
"Hub %p status change pipe reset failed 0x%lx, URB status 0x%lx\n",
240 }
241
244}
HubControlRequest m_Control
struct _URB_PIPE_REQUEST m_PipeUrb
◆ HubResetComplete()
Definition at line 269 of file upstream.cpp.
274{
278
280
283 else
285
289
291
296 else
298}
VOID MarkDevicesProgrammingLost()
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
#define STATUS_NO_SUCH_DEVICE
◆ HubSendToParent()
Internal IOCTL to the hub's parent with Argument1 = Payload. FALSE when refused.
Definition at line 31 of file upstream.cpp.
38{
41
45 Stack.Parameters.Others.Argument1 = Payload;
47
49
52
53
57
59}
#define RtlZeroMemory(Destination, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_Must_inspect_result_ FORCEINLINE BOOLEAN WdfRequestSend(_In_ WDFREQUEST Request, _In_ WDFIOTARGET Target, _In_opt_ PWDF_REQUEST_SEND_OPTIONS Options)
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
#define WDF_NO_SEND_OPTIONS
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
Referenced by HubMachine::GetParentInfo(), HubMachine::ResetHub(), HubMachine::ResetStatusChangePipe(), and HubMachine::SelectHubConfiguration().
◆ HubConfigurationComplete
| EVT_WDF_REQUEST_COMPLETION_ROUTINE HubConfigurationComplete |
|
static |
◆ HubParentInfoComplete
| EVT_WDF_REQUEST_COMPLETION_ROUTINE HubParentInfoComplete |
|
static |
◆ HubPipeResetComplete
| EVT_WDF_REQUEST_COMPLETION_ROUTINE HubPipeResetComplete |
|
static |
◆ HubResetComplete
| EVT_WDF_REQUEST_COMPLETION_ROUTINE HubResetComplete |
|
static |