4 #define USBPORT_HCI_MN 0x10000001 7 #define USBPORT_TRANSFER_TYPE_ISOCHRONOUS 0 8 #define USBPORT_TRANSFER_TYPE_CONTROL 1 9 #define USBPORT_TRANSFER_TYPE_BULK 2 10 #define USBPORT_TRANSFER_TYPE_INTERRUPT 3 13 #define USBPORT_ENDPOINT_UNKNOWN 0 14 #define USBPORT_ENDPOINT_PAUSED 2 15 #define USBPORT_ENDPOINT_ACTIVE 3 16 #define USBPORT_ENDPOINT_REMOVE 4 17 #define USBPORT_ENDPOINT_CLOSED 5 20 #define USBPORT_ENDPOINT_RUN 0 21 #define USBPORT_ENDPOINT_HALT 1 22 #define USBPORT_ENDPOINT_CONTROL 4 25 #define ENDPOINT_INTERRUPT_1ms 1 26 #define ENDPOINT_INTERRUPT_2ms 2 27 #define ENDPOINT_INTERRUPT_4ms 4 28 #define ENDPOINT_INTERRUPT_8ms 8 29 #define ENDPOINT_INTERRUPT_16ms 16 30 #define ENDPOINT_INTERRUPT_32ms 32 32 #define INTERRUPT_ENDPOINTs (ENDPOINT_INTERRUPT_32ms + \ 33 ENDPOINT_INTERRUPT_16ms + \ 34 ENDPOINT_INTERRUPT_8ms + \ 35 ENDPOINT_INTERRUPT_4ms + \ 36 ENDPOINT_INTERRUPT_2ms + \ 37 ENDPOINT_INTERRUPT_1ms) 40 #define USBPORT_RESOURCES_PORT 1 41 #define USBPORT_RESOURCES_INTERRUPT 2 42 #define USBPORT_RESOURCES_MEMORY 4 134 #define MP_STATUS_SUCCESS 0 135 #define MP_STATUS_FAILURE 1 136 #define MP_STATUS_NO_RESOURCES 2 137 #define MP_STATUS_NO_BANDWIDTH 3 138 #define MP_STATUS_ERROR 4 139 #define MP_STATUS_RESERVED1 5 140 #define MP_STATUS_NOT_SUPPORTED 6 141 #define MP_STATUS_HW_ERROR 7 142 #define MP_STATUS_UNSUCCESSFUL 8 144 #define RH_STATUS_SUCCESS 0 145 #define RH_STATUS_NO_CHANGES 1 146 #define RH_STATUS_UNSUCCESSFUL 2 149 #define USBC_DEVICE_CLASS_TYPE_C_BRIDGE 0x12 288 #define USB20_PORT_STATUS_RESERVED1_OWNED_BY_COMPANION (1 << 2) 464 (
NTAPI ASYNC_TIMER_CALLBACK)(
474 ASYNC_TIMER_CALLBACK *);
489 #define USBPORT_INVALIDATE_CONTROLLER_RESET 1 490 #define USBPORT_INVALIDATE_CONTROLLER_SURPRISE_REMOVE 2 491 #define USBPORT_INVALIDATE_CONTROLLER_SOFT_INTERRUPT 3 526 #define USB_MINIPORT_VERSION_OHCI 0x01 527 #define USB_MINIPORT_VERSION_UHCI 0x02 528 #define USB_MINIPORT_VERSION_EHCI 0x03 529 #define USB_MINIPORT_VERSION_XHCI 0x04 531 #define USB_MINIPORT_FLAGS_INTERRUPT 0x0001 532 #define USB_MINIPORT_FLAGS_PORT_IO 0x0002 533 #define USB_MINIPORT_FLAGS_MEMORY_IO 0x0004 534 #define USB_MINIPORT_FLAGS_USB2 0x0010 535 #define USB_MINIPORT_FLAGS_DISABLE_SS 0x0020 536 #define USB_MINIPORT_FLAGS_NOT_LOCK_INT 0x0040 537 #define USB_MINIPORT_FLAGS_POLLING 0x0080 538 #define USB_MINIPORT_FLAGS_NO_DMA 0x0100 539 #define USB_MINIPORT_FLAGS_WAKE_SUPPORT 0x0200 541 #define TOTAL_USB11_BUS_BANDWIDTH 12000 542 #define TOTAL_USB20_BUS_BANDWIDTH 400000 636 #define USB10_MINIPORT_INTERFACE_VERSION 100 637 #define USB20_MINIPORT_INTERFACE_VERSION 200 649 #define USBPORT_TRANSFER_DIRECTION_OUT 1 // From host to device 650 #define USBPORT_MAX_DEVICE_ADDRESS 127 ULONG TransferBufferLength
VOID(NTAPI * PHCI_POLL_ENDPOINT)(PVOID, PVOID)
PHCI_RH_GET_STATUS RH_GetStatus
PHCI_RH_GET_PORT_STATUS RH_GetPortStatus
ULONG(NTAPI * PHCI_GET_32BIT_FRAME_NUMBER)(PVOID)
PHCI_RH_CLEAR_FEATURE_PORT_POWER RH_ClearFeaturePortPower
USHORT OverCurrentProtectionMode
ULONG(NTAPI * PUSBPORT_LOG_ENTRY)(PVOID, ULONG, ULONG, ULONG, ULONG, ULONG)
PHCI_SUBMIT_TRANSFER SubmitTransfer
union _USB_PORT_STATUS_AND_CHANGE * PUSB_PORT_STATUS_AND_CHANGE
struct _USBPORT_TRANSFER_PARAMETERS USBPORT_TRANSFER_PARAMETERS
VOID(NTAPI * PHCI_STOP_CONTROLLER)(PVOID, BOOLEAN)
PHCI_RH_SET_FEATURE_PORT_ENABLE RH_SetFeaturePortEnable
MPSTATUS(NTAPI * PHCI_RH_SET_FEATURE_PORT_ENABLE)(PVOID, USHORT)
PUSBPORT_TEST_DEBUG_BREAK UsbPortTestDebugBreak
PUSBPORT_GET_MAPPED_VIRTUAL_ADDRESS UsbPortGetMappedVirtualAddress
MPSTATUS(NTAPI * PHCI_RH_CHIRP_ROOT_PORT)(PVOID, USHORT)
USBPORT_HUB_30_CHARACTERISTICS Usb30HubCharacteristics
PUSBPORT_ASSERT_FAILURE UsbPortAssertFailure
PUSBPORT_COMPLETE_ISO_TRANSFER UsbPortCompleteIsoTransfer
MPSTATUS(NTAPI * PHCI_START_SEND_ONE_PACKET)(PVOID, PVOID, PVOID, PULONG, PVOID, PVOID, ULONG, USBD_STATUS *)
USHORT PartOfCompoundDevice
PHCI_RH_SET_FEATURE_PORT_POWER RH_SetFeaturePortPower
PHCI_DISABLE_INTERRUPTS DisableInterrupts
PUSBPORT_INVALIDATE_ENDPOINT UsbPortInvalidateEndpoint
PHCI_RESUME_CONTROLLER ResumeController
VOID(NTAPI * PHCI_INTERRUPT_NEXT_SOF)(PVOID)
MPSTATUS(NTAPI * PHCI_RH_GET_PORT_STATUS)(PVOID, USHORT, PUSB_PORT_STATUS_AND_CHANGE)
PUSBPORT_COMPLETE_TRANSFER UsbPortCompleteTransfer
USBPORT_REGISTRATION_PACKET Packet
struct _USBPORT_ENDPOINT_PROPERTIES USBPORT_ENDPOINT_PROPERTIES
MPSTATUS(NTAPI * PHCI_RH_CLEAR_FEATURE_PORT_SUSPEND_CHANGE)(PVOID, USHORT)
PDRIVER_OBJECT DriverObject
ULONG(NTAPI * PUSBPORT_INVALIDATE_CONTROLLER)(PVOID, ULONG)
MPSTATUS(NTAPI * PHCI_RESUME_CONTROLLER)(PVOID)
PHCI_RH_SET_FEATURE_PORT_RESET RH_SetFeaturePortReset
KAFFINITY InterruptAffinity
PHYSICAL_ADDRESS SgPhysicalAddress
USHORT NoOverCurrentProtection
PHCI_ENABLE_INTERRUPTS EnableInterrupts
PDRIVER_UNLOAD DriverUnload
UCHAR InterruptScheduleMask
PHCI_RH_GET_ROOT_HUB_DATA RH_GetRootHubData
PUSBPORT_NOTIFY_DOUBLE_BUFFER UsbPortNotifyDoubleBuffer
USB_DEVICE_SPEED DeviceSpeed
USB_DEFAULT_PIPE_SETUP_PACKET SetupPacket
struct _USBPORT_SCATTER_GATHER_LIST USBPORT_SCATTER_GATHER_LIST
PUSBPORT_READ_WRITE_CONFIG_SPACE UsbPortReadWriteConfigSpace
MPSTATUS(NTAPI * PHCI_RH_GET_STATUS)(PVOID, PUSHORT)
MPSTATUS(NTAPI * PHCI_RH_CLEAR_FEATURE_PORT_OVERCURRENT_CHANGE)(PVOID, USHORT)
MPSTATUS(NTAPI * PHCI_RH_SET_FEATURE_PORT_RESET)(PVOID, USHORT)
DRIVER_UNLOAD * PDRIVER_UNLOAD
PVOID(NTAPI * PUSBPORT_GET_MAPPED_VIRTUAL_ADDRESS)(ULONG, PVOID, PVOID)
ULONG(NTAPI * PUSBPORT_COMPLETE_ISO_TRANSFER)(PVOID, PVOID, PVOID, ULONG)
struct _USBPORT_REGISTRATION_PACKET * PUSBPORT_REGISTRATION_PACKET
MPSTATUS(NTAPI * PHCI_SUBMIT_ISO_TRANSFER)(PVOID, PVOID, PUSBPORT_TRANSFER_PARAMETERS, PVOID, PVOID)
struct _USBPORT_TRANSFER_PARAMETERS * PUSBPORT_TRANSFER_PARAMETERS
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PHCI_SET_ENDPOINT_STATE SetEndpointState
ULONG(NTAPI * PUSBPORT_TEST_DEBUG_BREAK)(PVOID)
PHCI_END_SEND_ONE_PACKET EndSendOnePacket
USB_CONTROLLER_FLAVOR HcFlavor
MPSTATUS(NTAPI * PUSBPORT_GET_MINIPORT_REGISTRY_KEY_VALUE)(PVOID, BOOL, PCWSTR, SIZE_T, PVOID, SIZE_T)
ULONG NTAPI USBPORT_GetHciMn(VOID)
PUSBPORT_DBG_PRINT UsbPortDbgPrint
PUSBPORT_LOG_ENTRY UsbPortLogEntry
USBPORT_HUB_CHARACTERISTICS HubCharacteristics
PHCI_CLOSE_ENDPOINT CloseEndpoint
PHCI_RH_CLEAR_FEATURE_PORT_ENABLE_CHANGE RH_ClearFeaturePortEnableChange
PHCI_RH_CLEAR_FEATURE_PORT_SUSPEND_CHANGE RH_ClearFeaturePortSuspendChange
VOID(NTAPI * PHCI_TAKE_PORT_CONTROL)(PVOID)
PUSBPORT_REQUEST_ASYNC_CALLBACK UsbPortRequestAsyncCallback
USHORT PartOfCompoundDevice
struct _USBPORT_SCATTER_GATHER_ELEMENT USBPORT_SCATTER_GATHER_ELEMENT
enum _KINTERRUPT_MODE KINTERRUPT_MODE
PHCI_START_CONTROLLER StartController
PHCI_RH_GET_HUB_STATUS RH_GetHubStatus
VOID(NTAPI * PHCI_SET_ENDPOINT_STATE)(PVOID, PVOID, ULONG)
union _USB_HUB_STATUS_AND_CHANGE * PUSB_HUB_STATUS_AND_CHANGE
VOID(NTAPI * PHCI_POLL_CONTROLLER)(PVOID)
PHCI_SUBMIT_ISO_TRANSFER SubmitIsoTransfer
PHCI_POLL_CONTROLLER PollController
PHCI_RH_CLEAR_FEATURE_PORT_SUSPEND RH_ClearFeaturePortSuspend
VOID(NTAPI * PHCI_RESET_CONTROLLER)(PVOID)
PHCI_INTERRUPT_SERVICE InterruptService
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
PHCI_OPEN_ENDPOINT OpenEndpoint
enum _USB_DEVICE_SPEED USB_DEVICE_SPEED
VOID(NTAPI * PHCI_CLOSE_ENDPOINT)(PVOID, PVOID, BOOLEAN)
ULONG(NTAPI * PUSBPORT_DBG_PRINT)(PVOID, ULONG, PCH,...)
PHCI_SET_ENDPOINT_STATUS SetEndpointStatus
MPSTATUS(NTAPI * PHCI_RH_SET_FEATURE_PORT_POWER)(PVOID, USHORT)
ULONG(NTAPI * PUSBPORT_NOTIFY_DOUBLE_BUFFER)(PVOID, PVOID, PVOID, SIZE_T)
MPSTATUS(NTAPI * PHCI_RH_CLEAR_FEATURE_PORT_RESET_CHANGE)(PVOID, USHORT)
PHCI_GET_ENDPOINT_STATE GetEndpointState
PHCI_RH_CLEAR_FEATURE_PORT_RESET_CHANGE RH_ClearFeaturePortResetChange
PUSBPORT_INVALIDATE_ROOT_HUB UsbPortInvalidateRootHub
MPSTATUS(NTAPI * PHCI_SUBMIT_TRANSFER)(PVOID, PVOID, PUSBPORT_TRANSFER_PARAMETERS, PVOID, PUSBPORT_SCATTER_GATHER_LIST)
VOID(NTAPI * PHCI_RH_DISABLE_IRQ)(PVOID)
PHCI_ABORT_TRANSFER AbortTransfer
VOID(NTAPI * PHCI_RH_ENABLE_IRQ)(PVOID)
VOID(NTAPI * PHCI_ABORT_TRANSFER)(PVOID, PVOID, PVOID, PULONG)
SIZE_T MiniPortExtensionSize
enum _USB_CONTROLLER_FLAVOR USB_CONTROLLER_FLAVOR
struct _USBPORT_SCATTER_GATHER_ELEMENT * PUSBPORT_SCATTER_GATHER_ELEMENT
PHCI_RH_CHIRP_ROOT_PORT RH_ChirpRootPort
PHCI_REBALANCE_ENDPOINT RebalanceEndpoint
PHCI_RH_SET_FEATURE_PORT_SUSPEND RH_SetFeaturePortSuspend
IN PVOID IN PVOID IN USHORT Version
MPSTATUS(NTAPI * PHCI_OPEN_ENDPOINT)(PVOID, PUSBPORT_ENDPOINT_PROPERTIES, PVOID)
NTSTATUS NTAPI USBPORT_RegisterUSBPortDriver(IN PDRIVER_OBJECT DriverObject, IN ULONG Version, IN PUSBPORT_REGISTRATION_PACKET RegistrationPacket)
PUSBPORT_INVALIDATE_CONTROLLER UsbPortInvalidateController
struct _USBPORT_ENDPOINT_PROPERTIES * PUSBPORT_ENDPOINT_PROPERTIES
union _USBPORT_HUB_20_CHARACTERISTICS USBPORT_HUB_20_CHARACTERISTICS
PHCI_CHECK_CONTROLLER CheckController
SIZE_T MiniPortEndpointSize
KINTERRUPT_MODE InterruptMode
SIZE_T MiniPortTransferSize
PHCI_RH_DISABLE_IRQ RH_DisableIrq
struct _USBPORT_SCATTER_GATHER_LIST * PUSBPORT_SCATTER_GATHER_LIST
MPSTATUS(NTAPI * PHCI_PASS_THRU)(PVOID, PVOID, ULONG, PVOID)
union _USBPORT_HUB_11_CHARACTERISTICS USBPORT_HUB_11_CHARACTERISTICS
USBPORT_HUB_11_CHARACTERISTICS Usb11HubCharacteristics
MPSTATUS(NTAPI * PHCI_END_SEND_ONE_PACKET)(PVOID, PVOID, PVOID, PULONG, PVOID, PVOID, ULONG, USBD_STATUS *)
PHCI_START_SEND_ONE_PACKET StartSendOnePacket
UCHAR TransactionPerMicroframe
PHCI_POLL_ENDPOINT PollEndpoint
USHORT TotalMaxPacketSize
VOID(NTAPI * PHCI_RH_GET_ROOT_HUB_DATA)(PVOID, PVOID)
VOID(NTAPI * PHCI_QUERY_ENDPOINT_REQUIREMENTS)(PVOID, PUSBPORT_ENDPOINT_PROPERTIES, PUSBPORT_ENDPOINT_REQUIREMENTS)
PHCI_SET_ENDPOINT_DATA_TOGGLE SetEndpointDataToggle
ULONG(NTAPI * PUSBPORT_ASSERT_FAILURE)(PVOID, PVOID, PVOID, ULONG, PCHAR)
ULONG(NTAPI * PUSBPORT_INVALIDATE_ROOT_HUB)(PVOID)
PHCI_TAKE_PORT_CONTROL TakePortControl
MPSTATUS(NTAPI * PHCI_RH_SET_FEATURE_PORT_SUSPEND)(PVOID, USHORT)
C_ASSERT(sizeof(USBPORT_RESOURCES)==32+5 *sizeof(PVOID))
PHCI_STOP_CONTROLLER StopController
PHCI_GET_ENDPOINT_STATUS GetEndpointStatus
VOID(NTAPI * PHCI_ENABLE_INTERRUPTS)(PVOID)
PHCI_INTERRUPT_NEXT_SOF InterruptNextSOF
PHCI_RH_CLEAR_FEATURE_PORT_ENABLE RH_ClearFeaturePortEnable
USBPORT_HUB_20_CHARACTERISTICS Usb20HubCharacteristics
struct _USBPORT_RESOURCES USBPORT_RESOURCES
NTSTATUS(NTAPI * PUSBPORT_WAIT)(PVOID, ULONG)
PHCI_SUSPEND_CONTROLLER SuspendController
VOID(NTAPI * PHCI_CHECK_CONTROLLER)(PVOID)
MPSTATUS(NTAPI * PHCI_RH_CLEAR_FEATURE_PORT_POWER)(PVOID, USHORT)
BOOLEAN(NTAPI * PHCI_INTERRUPT_SERVICE)(PVOID)
MPSTATUS(NTAPI * PHCI_RH_CLEAR_FEATURE_PORT_CONNECT_CHANGE)(PVOID, USHORT)
PHCI_INTERRUPT_DPC InterruptDpc
VOID(NTAPI * PHCI_SET_ENDPOINT_DATA_TOGGLE)(PVOID, PVOID, ULONG)
VOID(NTAPI * PHCI_FLUSH_INTERRUPTS)(PVOID)
USBPORT_SCATTER_GATHER_ELEMENT SgElement[2]
ULONG MiniPortBusBandwidth
USHORT NoOverCurrentProtection
PUSBPORT_GET_MINIPORT_REGISTRY_KEY_VALUE UsbPortGetMiniportRegistryKeyValue
MPSTATUS(NTAPI * PHCI_START_CONTROLLER)(PVOID, PUSBPORT_RESOURCES)
PHCI_RH_CLEAR_FEATURE_PORT_CONNECT_CHANGE RH_ClearFeaturePortConnectChange
struct _USBPORT_MINIPORT_INTERFACE * PUSBPORT_MINIPORT_INTERFACE
struct _USBPORT_ROOT_HUB_DATA USBPORT_ROOT_HUB_DATA
UCHAR SplitCompletionMask
USBPORT_HUB_11_CHARACTERISTICS USBPORT_HUB_30_CHARACTERISTICS
MPSTATUS(NTAPI * PHCI_RH_GET_HUB_STATUS)(PVOID, PUSB_HUB_STATUS_AND_CHANGE)
struct _USBPORT_ROOT_HUB_DATA * PUSBPORT_ROOT_HUB_DATA
MPSTATUS(NTAPI * PHCI_RH_CLEAR_FEATURE_PORT_ENABLE)(PVOID, USHORT)
struct _USBPORT_REGISTRATION_PACKET USBPORT_REGISTRATION_PACKET
VOID(NTAPI * PUSBPORT_BUG_CHECK)(PVOID)
struct _USBPORT_ENDPOINT_REQUIREMENTS * PUSBPORT_ENDPOINT_REQUIREMENTS
PHCI_QUERY_ENDPOINT_REQUIREMENTS QueryEndpointRequirements
PHCI_RH_ENABLE_IRQ RH_EnableIrq
PHCI_REOPEN_ENDPOINT ReopenEndpoint
MPSTATUS(NTAPI * PHCI_REOPEN_ENDPOINT)(PVOID, PUSBPORT_ENDPOINT_PROPERTIES, PVOID)
MPSTATUS(NTAPI * PHCI_RH_CLEAR_FEATURE_PORT_ENABLE_CHANGE)(PVOID, USHORT)
struct _USBPORT_ENDPOINT_REQUIREMENTS USBPORT_ENDPOINT_REQUIREMENTS
VOID(NTAPI * PHCI_DISABLE_INTERRUPTS)(PVOID)
VOID(NTAPI * PHCI_REBALANCE_ENDPOINT)(PVOID, PUSBPORT_ENDPOINT_PROPERTIES, PVOID)
ULONG(NTAPI * PUSBPORT_REQUEST_ASYNC_CALLBACK)(PVOID, ULONG, PVOID, SIZE_T, ASYNC_TIMER_CALLBACK *)
MPSTATUS(NTAPI * PUSBPORT_READ_WRITE_CONFIG_SPACE)(PVOID, BOOLEAN, PVOID, ULONG, ULONG)
ULONG(NTAPI * PUSBPORT_INVALIDATE_ENDPOINT)(PVOID, PVOID)
VOID(NTAPI * PHCI_SET_ENDPOINT_STATUS)(PVOID, PVOID, ULONG)
typedef VOID(NTAPI ASYNC_TIMER_CALLBACK)(IN PVOID MiniportExtension
PUSBPORT_WAIT UsbPortWait
struct _USBPORT_RESOURCES * PUSBPORT_RESOURCES
PHCI_GET_32BIT_FRAME_NUMBER Get32BitFrameNumber
SIZE_T MiniPortResourcesSize
union _USBPORT_HUB_CHARACTERISTICS USBPORT_HUB_CHARACTERISTICS
PUSBPORT_BUG_CHECK UsbPortBugCheck
ULONG(NTAPI * PHCI_GET_ENDPOINT_STATE)(PVOID, PVOID)
VOID(NTAPI * PUSBPORT_COMPLETE_TRANSFER)(PVOID, PVOID, PVOID, USBD_STATUS, ULONG)
VOID(NTAPI * PHCI_SUSPEND_CONTROLLER)(PVOID)
ULONG(NTAPI * PHCI_GET_ENDPOINT_STATUS)(PVOID, PVOID)
PHCI_FLUSH_INTERRUPTS FlushInterrupts
VOID(NTAPI * PHCI_INTERRUPT_DPC)(PVOID, BOOLEAN)
struct _USBPORT_MINIPORT_INTERFACE USBPORT_MINIPORT_INTERFACE
MPSTATUS(NTAPI * PHCI_RH_CLEAR_FEATURE_PORT_SUSPEND)(PVOID, USHORT)
PHCI_RH_CLEAR_FEATURE_PORT_OVERCURRENT_CHANGE RH_ClearFeaturePortOvercurrentChange
PHCI_RESET_CONTROLLER ResetController
USHORT PortIndicatorsSupported
USHORT OverCurrentProtectionMode