26#define USB_HUB_TAG 'BUHU'
28#define USBH_EXTENSION_TYPE_HUB 0x01
29#define USBH_EXTENSION_TYPE_PORT 0x02
30#define USBH_EXTENSION_TYPE_PARENT 0x04
31#define USBH_EXTENSION_TYPE_FUNCTION 0x08
33#define USBHUB_FDO_FLAG_DEVICE_STARTED (1 << 0)
34#define USBHUB_FDO_FLAG_DEVICE_STOPPING (1 << 2)
35#define USBHUB_FDO_FLAG_DEVICE_FAILED (1 << 3)
36#define USBHUB_FDO_FLAG_REMOTE_WAKEUP (1 << 4)
37#define USBHUB_FDO_FLAG_DEVICE_STOPPED (1 << 5)
38#define USBHUB_FDO_FLAG_HUB_BUSY (1 << 6)
39#define USBHUB_FDO_FLAG_PENDING_WAKE_IRP (1 << 7)
40#define USBHUB_FDO_FLAG_RESET_PORT_LOCK (1 << 8)
41#define USBHUB_FDO_FLAG_ESD_RECOVERING (1 << 9)
42#define USBHUB_FDO_FLAG_SET_D0_STATE (1 << 10)
43#define USBHUB_FDO_FLAG_NOT_D0_STATE (1 << 11)
44#define USBHUB_FDO_FLAG_WAIT_IDLE_REQUEST (1 << 12)
45#define USBHUB_FDO_FLAG_STATE_CHANGING (1 << 13)
46#define USBHUB_FDO_FLAG_DEVICE_REMOVED (1 << 14)
47#define USBHUB_FDO_FLAG_USB20_HUB (1 << 15)
48#define USBHUB_FDO_FLAG_DEFER_CHECK_IDLE (1 << 16)
49#define USBHUB_FDO_FLAG_WAKEUP_START (1 << 17)
50#define USBHUB_FDO_FLAG_MULTIPLE_TTS (1 << 18)
51#define USBHUB_FDO_FLAG_ENUM_POST_RECOVER (1 << 19)
52#define USBHUB_FDO_FLAG_DO_ENUMERATION (1 << 20)
53#define USBHUB_FDO_FLAG_CHECK_IDLE_LOCK (1 << 21)
54#define USBHUB_FDO_FLAG_HIBERNATE_STATE (1 << 22)
55#define USBHUB_FDO_FLAG_NOT_ENUMERATED (1 << 23)
56#define USBHUB_FDO_FLAG_DO_SUSPENSE (1 << 24)
57#define USBHUB_FDO_FLAG_GOING_IDLE (1 << 25)
58#define USBHUB_FDO_FLAG_DEVICE_SUSPENDED (1 << 26)
59#define USBHUB_FDO_FLAG_WITEM_INIT (1 << 27)
61#define USBHUB_PDO_FLAG_HUB_DEVICE (1 << 0)
62#define USBHUB_PDO_FLAG_MULTI_INTERFACE (1 << 1)
63#define USBHUB_PDO_FLAG_INIT_PORT_FAILED (1 << 2)
64#define USBHUB_PDO_FLAG_PORT_LOW_SPEED (1 << 3)
65#define USBHUB_PDO_FLAG_REMOTE_WAKEUP (1 << 4)
66#define USBHUB_PDO_FLAG_WAIT_WAKE (1 << 5)
67#define USBHUB_PDO_FLAG_NOT_CONNECTED (1 << 6)
68#define USBHUB_PDO_FLAG_DELETE_PENDING (1 << 7)
69#define USBHUB_PDO_FLAG_POWER_D3 (1 << 8)
70#define USBHUB_PDO_FLAG_DEVICE_STARTED (1 << 9)
71#define USBHUB_PDO_FLAG_HS_USB1_DUALMODE (1 << 10)
72#define USBHUB_PDO_FLAG_REG_DEV_INTERFACE (1 << 11)
73#define USBHUB_PDO_FLAG_PORT_RESTORE_FAIL (1 << 12)
74#define USBHUB_PDO_FLAG_POWER_D1_OR_D2 (1 << 13)
75#define USBHUB_PDO_FLAG_OVERCURRENT_PORT (1 << 14)
76#define USBHUB_PDO_FLAG_REMOVING_PORT_PDO (1 << 15)
77#define USBHUB_PDO_FLAG_INSUFFICIENT_PWR (1 << 16)
78#define USBHUB_PDO_FLAG_ALLOC_BNDW_FAILED (1 << 18)
79#define USBHUB_PDO_FLAG_PORT_RESSETING (1 << 19)
80#define USBHUB_PDO_FLAG_IDLE_NOTIFICATION (1 << 22)
81#define USBHUB_PDO_FLAG_PORT_HIGH_SPEED (1 << 23)
82#define USBHUB_PDO_FLAG_ENUMERATED (1 << 26)
84#define USBHUB_ENUM_FLAG_DEVICE_PRESENT 0x01
85#define USBHUB_ENUM_FLAG_GHOST_DEVICE 0x02
88#define USBHUB_FEATURE_C_HUB_LOCAL_POWER 0
89#define USBHUB_FEATURE_C_HUB_OVER_CURRENT 1
91#define USBHUB_FEATURE_PORT_CONNECTION 0
92#define USBHUB_FEATURE_PORT_ENABLE 1
93#define USBHUB_FEATURE_PORT_SUSPEND 2
94#define USBHUB_FEATURE_PORT_OVER_CURRENT 3
95#define USBHUB_FEATURE_PORT_RESET 4
96#define USBHUB_FEATURE_PORT_POWER 8
97#define USBHUB_FEATURE_PORT_LOW_SPEED 9
98#define USBHUB_FEATURE_C_PORT_CONNECTION 16
99#define USBHUB_FEATURE_C_PORT_ENABLE 17
100#define USBHUB_FEATURE_C_PORT_SUSPEND 18
101#define USBHUB_FEATURE_C_PORT_OVER_CURRENT 19
102#define USBHUB_FEATURE_C_PORT_RESET 20
103#define USBHUB_FEATURE_PORT_TEST 21
104#define USBHUB_FEATURE_PORT_INDICATOR 22
106#define USBHUB_MAX_CASCADE_LEVELS 6
107#define USBHUB_RESET_PORT_MAX_RETRY 3
108#define USBHUB_MAX_REQUEST_ERRORS 3
111#define USBHUB_FAIL_NO_FAIL 5
112#define USBHUB_FAIL_NESTED_TOO_DEEPLY 6
113#define USBHUB_FAIL_OVERCURRENT 7
564 IN PUSB_NODE_CONNECTION_INFORMATION_EX
Info,
DRIVER_INITIALIZE DriverEntry
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_ PFLT_DEFERRED_IO_WORKITEM_ROUTINE WorkerRoutine
_Outptr_ PUSB_DEVICE_HANDLE * NewDeviceHandle
_Inout_ PUSB_DEVICE_HANDLE OldDeviceHandle
_Inout_ PUSB_DEVICE_HANDLE DeviceHandle
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT PortStatus
_In_ PVOID _In_ PDEVICE_OBJECT UsbDevicePdo
_Inout_ PUSB_DEVICE_HANDLE _Out_writes_bytes_to_ DeviceDescriptorBufferLength PUCHAR _Inout_ PULONG _Out_writes_bytes_to_ ConfigDescriptorBufferLength PUCHAR _Inout_ PULONG ConfigDescriptorBufferLength
_Inout_ PUSB_DEVICE_HANDLE _Out_writes_bytes_to_ DeviceDescriptorBufferLength PUCHAR DeviceDescriptorBuffer
_Inout_ PUSB_DEVICE_HANDLE _Out_writes_bytes_to_ DeviceDescriptorBufferLength PUCHAR _Inout_ PULONG _Out_writes_bytes_to_ ConfigDescriptorBufferLength PUCHAR ConfigDescriptorBuffer
_Inout_ PUSB_DEVICE_HANDLE _Out_writes_bytes_to_ DeviceDescriptorBufferLength PUCHAR _Inout_ PULONG DeviceDescriptorBufferLength
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define POWER_SYSTEM_MAXIMUM
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
const KSDEVICE_DESCRIPTOR DeviceDescriptor
PDEVICE_OBJECT SelfDevice
PUSBHUB_PORT_DATA PortData
USB_DEVICE_DESCRIPTOR HubDeviceDescriptor
POWER_STATE CurrentPowerState
USB_BUS_INTERFACE_USBDI_V2 BusInterfaceUSBDI
KEVENT PendingRequestEvent
USB_PORT_STATUS_AND_CHANGE PortStatus
KSEMAPHORE ResetDeviceSemaphore
KSEMAPHORE HubPortSemaphore
PUSB_CONFIGURATION_DESCRIPTOR HubConfigDescriptor
COMMON_DEVICE_EXTENSION Common
KSPIN_LOCK CheckIdleSpinLock
SYSTEM_POWER_STATE SystemWake
DEVICE_POWER_STATE DeviceWake
KSPIN_LOCK WorkItemSpinLock
PDEVICE_OBJECT LowerDevice
PDEVICE_OBJECT RootHubPdo2
PUSBHUB_IO_WORK_ITEM WorkItemToQueue
USB_BUS_INTERFACE_HUB_V5 BusInterface
KEVENT RootHubNotificationEvent
USB_IDLE_CALLBACK_INFO IdleCallbackInfo
PUSB_HUB_DESCRIPTOR HubDescriptor
USBD_CONFIGURATION_HANDLE ConfigHandle
PDEVICE_OBJECT RootHubPdo
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST SCEWorkerUrb
KSPIN_LOCK RelationsWorkerSpinLock
USBD_PIPE_INFORMATION PipeInfo
POWER_STATE SystemPowerState
PUSBHUB_WORKER_ROUTINE HubWorkerRoutine
PUSBHUB_FDO_EXTENSION HubExtension
WORK_QUEUE_TYPE HubWorkItemType
LIST_ENTRY HubWorkItemLink
USB_CONNECTION_STATUS ConnectionStatus
USB_PORT_STATUS_AND_CHANGE PortStatus
PDEVICE_OBJECT DeviceObject
DEVICE_CAPABILITIES Capabilities
KSPIN_LOCK PortPowerListSpinLock
USB_DEVICE_DESCRIPTOR DeviceDescriptor
PUSB_DEVICE_HANDLE DeviceHandle
PUSBHUB_FDO_EXTENSION HubExtension
USB_INTERFACE_DESCRIPTOR InterfaceDescriptor
COMMON_DEVICE_EXTENSION Common
UNICODE_STRING SymbolicLinkName
LONG PendingDevicePoRequest
USHORT SN_DescriptorLength
PUSBHUB_FDO_EXTENSION RootHubExtension
USB_DEVICE_DESCRIPTOR OldDeviceDescriptor
USB_CONFIGURATION_DESCRIPTOR ConfigDescriptor
KSPIN_LOCK PortTimeoutSpinLock
POWER_STATE CurrentPowerState
LONG PendingSystemPoRequest
PUSBHUB_PORT_PDO_EXTENSION PortExtension
PUSBHUB_FDO_EXTENSION HubExtension
KSPIN_LOCK UrbTimeoutSpinLock
enum _USB_DEVICE_TYPE USB_DEVICE_TYPE
PUSBHUB_FDO_EXTENSION NTAPI USBH_GetRootHubExtension(IN PUSBHUB_FDO_EXTENSION HubExtension)
VOID NTAPI USBH_HubCancelWakeIrp(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PIRP Irp)
struct _USBHUB_URB_TIMEOUT_CONTEXT * PUSBHUB_URB_TIMEOUT_CONTEXT
NTSTATUS NTAPI USBH_SubmitStatusChangeTransfer(IN PUSBHUB_FDO_EXTENSION HubExtension)
NTSTATUS NTAPI USBH_HubSetD0(IN PUSBHUB_FDO_EXTENSION HubExtension)
VOID NTAPI USBH_HubCompletePortWakeIrps(IN PUSBHUB_FDO_EXTENSION HubExtension, IN NTSTATUS NtStatus)
VOID NTAPI USBH_CheckHubIdle(IN PUSBHUB_FDO_EXTENSION HubExtension)
PWSTR GenericUSBDeviceString
struct _USBHUB_IDLE_PORT_CANCEL_CONTEXT USBHUB_IDLE_PORT_CANCEL_CONTEXT
NTSTATUS NTAPI USBH_AllocateWorkItem(IN PUSBHUB_FDO_EXTENSION HubExtension, OUT PUSBHUB_IO_WORK_ITEM *OutHubIoWorkItem, IN PUSBHUB_WORKER_ROUTINE WorkerRoutine, IN SIZE_T BufferLength, OUT PVOID *OutHubWorkItemBuffer, IN WORK_QUEUE_TYPE Type)
VOID NTAPI USBHUB_SetDeviceHandleData(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PDEVICE_OBJECT UsbDevicePdo, IN PVOID DeviceHandle)
VOID NTAPI USBHUB_DumpingIDs(IN PVOID Id)
NTSTATUS NTAPI USBH_SyncGetHubDescriptor(IN PUSBHUB_FDO_EXTENSION HubExtension)
NTSTATUS NTAPI USBD_RemoveDeviceEx(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PUSB_DEVICE_HANDLE DeviceHandle, IN ULONG Flags)
VOID NTAPI USBH_CompleteIrp(IN PIRP Irp, IN NTSTATUS CompleteStatus)
struct _USBHUB_IDLE_PORT_CONTEXT USBHUB_IDLE_PORT_CONTEXT
NTSTATUS NTAPI USBH_PdoPnP(IN PUSBHUB_PORT_PDO_EXTENSION PortExtension, IN PIRP Irp, IN UCHAR Minor, OUT BOOLEAN *IsCompleteIrp)
NTSTATUS NTAPI USBH_DeviceControl(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PIRP Irp)
struct _USBHUB_RESET_PORT_CONTEXT * PUSBHUB_RESET_PORT_CONTEXT
struct _USBHUB_PORT_PDO_EXTENSION USBHUB_PORT_PDO_EXTENSION
NTSTATUS NTAPI USBD_UnRegisterRootHubCallBack(IN PUSBHUB_FDO_EXTENSION HubExtension)
NTSTATUS NTAPI USBH_FdoPower(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PIRP Irp, IN UCHAR Minor)
struct _USBHUB_FDO_EXTENSION * PUSBHUB_FDO_EXTENSION
NTSTATUS NTAPI USBH_PdoRemoveDevice(IN PUSBHUB_PORT_PDO_EXTENSION PortExtension, IN PUSBHUB_FDO_EXTENSION HubExtension)
NTSTATUS NTAPI USBH_CheckDeviceLanguage(IN PDEVICE_OBJECT DeviceObject, IN USHORT LanguageId)
NTSTATUS NTAPI USBH_GetDeviceDescriptor(IN PDEVICE_OBJECT DeviceObject, IN PUSB_DEVICE_DESCRIPTOR HubDeviceDescriptor)
struct _USBHUB_FDO_EXTENSION USBHUB_FDO_EXTENSION
NTSTATUS NTAPI USBH_SyncGetRootHubPdo(IN PDEVICE_OBJECT DeviceObject, IN OUT PDEVICE_OBJECT *OutPdo1, IN OUT PDEVICE_OBJECT *OutPdo2)
NTSTATUS NTAPI USBH_GetConfigurationDescriptor(IN PDEVICE_OBJECT DeviceObject, IN PUSB_CONFIGURATION_DESCRIPTOR *pConfigurationDescriptor)
struct _USBHUB_PORT_DATA * PUSBHUB_PORT_DATA
NTSTATUS NTAPI USBH_Wait(IN ULONG Milliseconds)
struct _USBHUB_IDLE_HUB_CONTEXT * PUSBHUB_IDLE_HUB_CONTEXT
struct _USBHUB_IO_WORK_ITEM USBHUB_IO_WORK_ITEM
VOID NTAPI USBH_CheckIdleDeferred(IN PUSBHUB_FDO_EXTENSION HubExtension)
struct _USBHUB_PORT_DATA USBHUB_PORT_DATA
VOID NTAPI USBH_FreeWorkItem(IN PUSBHUB_IO_WORK_ITEM HubIoWorkItem)
struct _USBHUB_STATUS_CHANGE_CONTEXT USBHUB_STATUS_CHANGE_CONTEXT
struct _USBHUB_PORT_PDO_EXTENSION * PUSBHUB_PORT_PDO_EXTENSION
NTSTATUS NTAPI USBH_SyncSubmitUrb(IN PDEVICE_OBJECT DeviceObject, IN PURB Urb)
VOID NTAPI USBHUB_DumpingConfiguration(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigDescriptor)
NTSTATUS NTAPI USBH_SyncGetStringDescriptor(IN PDEVICE_OBJECT DeviceObject, IN UCHAR Index, IN USHORT LanguageId, IN PUSB_STRING_DESCRIPTOR Descriptor, IN ULONG NumberOfBytes, IN PULONG OutLength, IN BOOLEAN IsValidateLength)
PUSBHUB_PORT_PDO_EXTENSION NTAPI PdoExt(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI USBH_QueueWorkItem(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PUSBHUB_IO_WORK_ITEM HubIoWorkItem)
NTSTATUS NTAPI USBD_InitializeDeviceEx(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PUSB_DEVICE_HANDLE DeviceHandle, IN PUCHAR DeviceDescriptorBuffer, IN ULONG DeviceDescriptorBufferLength, IN PUCHAR ConfigDescriptorBuffer, IN ULONG ConfigDescriptorBufferLength)
NTSTATUS NTAPI USBH_SetPdoRegistryParameter(IN PDEVICE_OBJECT DeviceObject, IN PCWSTR SourceString, IN PVOID Data, IN ULONG DataSize, IN ULONG Type, IN ULONG DevInstKeyType)
struct _USBHUB_RESET_PORT_CONTEXT USBHUB_RESET_PORT_CONTEXT
VOID NTAPI USBH_HubCancelIdleIrp(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PIRP IdleIrp)
NTSTATUS NTAPI USBH_SyncGetPortStatus(IN PUSBHUB_FDO_EXTENSION HubExtension, IN USHORT Port, IN PUSB_PORT_STATUS_AND_CHANGE PortStatus, IN ULONG Length)
PUSB_DEVICE_HANDLE NTAPI USBH_SyncGetDeviceHandle(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI USBHUB_FlushAllTransfers(IN PUSBHUB_FDO_EXTENSION HubExtension)
struct _USBHUB_IO_WORK_ITEM * PUSBHUB_IO_WORK_ITEM
NTSTATUS NTAPI USBD_RegisterRootHubCallBack(IN PUSBHUB_FDO_EXTENSION HubExtension)
NTSTATUS NTAPI USBH_CreateDevice(IN PUSBHUB_FDO_EXTENSION HubExtension, IN USHORT Port, IN USB_PORT_STATUS UsbPortStatus, IN ULONG IsWait)
NTSTATUS NTAPI USBH_SyncDisablePort(IN PUSBHUB_FDO_EXTENSION HubExtension, IN USHORT Port)
NTSTATUS NTAPI USBH_WriteFailReasonID(IN PDEVICE_OBJECT DeviceObject, IN ULONG Data)
NTSTATUS NTAPI USBD_CreateDeviceEx(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PUSB_DEVICE_HANDLE *OutDeviceHandle, IN USB_PORT_STATUS UsbPortStatus, IN USHORT Port)
NTSTATUS NTAPI USBH_ResetDevice(IN PUSBHUB_FDO_EXTENSION HubExtension, IN USHORT Port, IN BOOLEAN IsKeepDeviceData, IN BOOLEAN IsWait)
NTSTATUS NTAPI USBD_RestoreDeviceEx(IN PUSBHUB_FDO_EXTENSION HubExtension, IN OUT PUSB_DEVICE_HANDLE OldDeviceHandle, IN OUT PUSB_DEVICE_HANDLE NewDeviceHandle)
VOID NTAPI USBH_IdleCancelPowerHubWorker(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PVOID Context)
NTSTATUS NTAPI USBH_GetDeviceType(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PUSB_DEVICE_HANDLE DeviceHandle, OUT USB_DEVICE_TYPE *OutDeviceType)
NTSTATUS NTAPI USBH_SyncResetPort(IN PUSBHUB_FDO_EXTENSION HubExtension, IN USHORT Port)
NTSTATUS NTAPI USBH_SyncGetHubCount(IN PDEVICE_OBJECT DeviceObject, IN OUT PULONG OutHubCount)
struct _COMMON_DEVICE_EXTENSION COMMON_DEVICE_EXTENSION
VOID NTAPI USBH_CompletePowerIrp(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PIRP Irp, IN NTSTATUS NtStatus)
struct _USBHUB_IDLE_PORT_CONTEXT * PUSBHUB_IDLE_PORT_CONTEXT
struct _USBHUB_IDLE_HUB_CONTEXT USBHUB_IDLE_HUB_CONTEXT
NTSTATUS NTAPI USBH_PdoPower(IN PUSBHUB_PORT_PDO_EXTENSION PortExtension, IN PIRP Irp, IN UCHAR Minor)
NTSTATUS NTAPI USBH_PdoInternalControl(IN PUSBHUB_PORT_PDO_EXTENSION PortExtension, IN PIRP Irp)
VOID NTAPI USBHUB_DumpingDeviceDescriptor(IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor)
struct _USBHUB_URB_TIMEOUT_CONTEXT USBHUB_URB_TIMEOUT_CONTEXT
NTSTATUS NTAPI USBH_FdoSyncSubmitUrb(IN PDEVICE_OBJECT FdoDevice, IN PURB Urb)
VOID(NTAPI * PUSBHUB_WORKER_ROUTINE)(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PVOID Context)
NTSTATUS NTAPI USBD_GetDeviceInformationEx(IN PUSBHUB_PORT_PDO_EXTENSION PortExtension, IN PUSBHUB_FDO_EXTENSION HubExtension, IN PUSB_NODE_CONNECTION_INFORMATION_EX Info, IN ULONG Length, IN PUSB_DEVICE_HANDLE DeviceHandle)
NTSTATUS NTAPI USBH_SyncPowerOnPorts(IN PUSBHUB_FDO_EXTENSION HubExtension)
NTSTATUS NTAPI USBH_FdoPnP(IN PUSBHUB_FDO_EXTENSION HubExtension, IN PIRP Irp, IN UCHAR Minor)
BOOLEAN NTAPI USBH_CheckIdleAbort(IN PUSBHUB_FDO_EXTENSION HubExtension, IN BOOLEAN IsWait, IN BOOLEAN IsExtCheck)
NTSTATUS NTAPI USBH_PassIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _USBHUB_IDLE_PORT_CANCEL_CONTEXT * PUSBHUB_IDLE_PORT_CANCEL_CONTEXT
struct _COMMON_DEVICE_EXTENSION * PCOMMON_DEVICE_EXTENSION
BOOLEAN NTAPI USBH_HubIsBusPowered(IN PDEVICE_OBJECT DeviceObject, IN PUSB_CONFIGURATION_DESCRIPTOR HubConfigDescriptor)
struct _USBHUB_STATUS_CHANGE_CONTEXT * PUSBHUB_STATUS_CHANGE_CONTEXT
NTSTATUS NTAPI USBH_SyncClearPortStatus(IN PUSBHUB_FDO_EXTENSION HubExtension, IN USHORT Port, IN USHORT RequestValue)
enum _USB_CONNECTION_STATUS USB_CONNECTION_STATUS
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFDEVICE _Out_ PWDF_DEVICE_STATE DeviceState
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING InstanceID
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_ WDFUSBDEVICE _Out_writes_bytes_to_opt_ ConfigDescriptorLength PVOID ConfigDescriptor
_Must_inspect_result_ _In_ ULONG Flags
enum _WORK_QUEUE_TYPE WORK_QUEUE_TYPE
_In_ ULONG DevInstKeyType
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes