18#define UCX_MGMT_HEADER_MEMBER USBDEVICE_MGMT_HEADER Header
19#define UCX_ANONYMOUS_FLAGS Flags
21#define UCX_MGMT_HEADER_MEMBER USBDEVICE_MGMT_HEADER
22#define UCX_ANONYMOUS_FLAGS
163#define MAX_USB_DEVICE_DEPTH 6
208EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE(
209 _In_ UCXCONTROLLER UcxController,
219EVT_UCX_USBDEVICE_ENABLE(
220 _In_ UCXCONTROLLER UcxController,
230EVT_UCX_USBDEVICE_DISABLE(
231 _In_ UCXCONTROLLER UcxController,
241EVT_UCX_USBDEVICE_RESET(
242 _In_ UCXCONTROLLER UcxController,
252EVT_UCX_USBDEVICE_ADDRESS(
253 _In_ UCXCONTROLLER UcxController,
263EVT_UCX_USBDEVICE_UPDATE(
264 _In_ UCXCONTROLLER UcxController,
274EVT_UCX_USBDEVICE_HUB_INFO(
275 _In_ UCXCONTROLLER UcxController,
285EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD(
286 _In_ UCXCONTROLLER UcxController,
298EVT_UCX_USBDEVICE_ENDPOINT_ADD(
299 _In_ UCXCONTROLLER UcxController,
315EVT_UCX_USBDEVICE_SUSPEND(
316 _In_ UCXCONTROLLER UcxController,
326EVT_UCX_USBDEVICE_RESUME(
327 _In_ UCXCONTROLLER UcxController,
337EVT_UCX_USBDEVICE_GET_CHARACTERISTIC(
338 _In_ UCXCONTROLLER UcxController,
379 Callbacks->EvtUsbDeviceEnable = EvtUsbDeviceEnable;
380 Callbacks->EvtUsbDeviceDisable = EvtUsbDeviceDisable;
381 Callbacks->EvtUsbDeviceReset = EvtUsbDeviceReset;
382 Callbacks->EvtUsbDeviceAddress = EvtUsbDeviceAddress;
383 Callbacks->EvtUsbDeviceUpdate = EvtUsbDeviceUpdate;
384 Callbacks->EvtUsbDeviceHubInfo = EvtUsbDeviceHubInfo;
385 Callbacks->EvtUsbDeviceEndpointsConfigure = EvtUsbDeviceEndpointsConfigure;
386 Callbacks->EvtUsbDeviceDefaultEndpointAdd = EvtUsbDeviceDefaultEndpointAdd;
387 Callbacks->EvtUsbDeviceEndpointAdd = EvtUsbDeviceEndpointAdd;
408(
NTAPI *PFN_UCXUSBDEVICECREATE)(
425(
NTAPI *PFN_UCXUSBDEVICEREMOTEWAKENOTIFICATION)(
441 PFN_UCXUSBDEVICECREATE
Create;
465UcxUsbDeviceRemoteWakeNotification(
469 PFN_UCXUSBDEVICEREMOTEWAKENOTIFICATION
Notify;
const struct winhelp_callbacks Callbacks
_Check_return_ _In_ ULONG _Inout_ PDXGK_DEVICE_DESCRIPTOR DeviceDescriptor
#define _IRQL_requires_same_
#define _IRQL_requires_max_(irql)
_Must_inspect_result_ _In_ UCXUSBDEVICE _In_ ULONG MaxPacketSize
#define _Must_inspect_result_
#define _Function_class_(n)
USB_DEVICE_PORT_PATH PortPath
USB_DEVICE_SPEED DeviceSpeed
ULONG MaximumSendPathDelayInMilliSeconds
ULONG MaximumCompletionPathDelayInMilliSeconds
UCX_USBDEVICE_CHARACTERISTIC_PATH_DELAY PathDelay
UCX_USBDEVICE_CHARACTERISTIC_TYPE CharacteristicType
PFN_UCX_USBDEVICE_ADDRESS EvtUsbDeviceAddress
PFN_UCX_USBDEVICE_DISABLE EvtUsbDeviceDisable
PFN_UCX_USBDEVICE_ENDPOINTS_CONFIGURE EvtUsbDeviceEndpointsConfigure
PFN_UCX_USBDEVICE_ENDPOINT_ADD EvtUsbDeviceEndpointAdd
PFN_UCX_USBDEVICE_ENABLE EvtUsbDeviceEnable
PFN_UCX_USBDEVICE_UPDATE EvtUsbDeviceUpdate
PFN_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD EvtUsbDeviceDefaultEndpointAdd
PFN_UCX_USBDEVICE_SUSPEND EvtUsbDeviceSuspend
PFN_UCX_USBDEVICE_RESUME EvtUsbDeviceResume
PFN_UCX_USBDEVICE_HUB_INFO EvtUsbDeviceHubInfo
PFN_UCX_USBDEVICE_GET_CHARACTERISTIC EvtUsbDeviceGetCharacteristic
PFN_UCX_USBDEVICE_RESET EvtUsbDeviceReset
UCXENDPOINT DefaultEndpoint
UCX_USBDEVICE_RECOVERY_ACTION UsbDeviceRecoveryAction
ULONG InsufficientHardwareResourcesForDevice
ULONG InsufficientHardwareResourcesForDefaultEndpoint
UCXENDPOINT DefaultEndpoint
USBDEVICE_ENABLE_FAILURE_FLAGS FailureFlags
_Field_size_(EndpointsToDisableCount) UCXENDPOINT *EndpointsToDisable
ULONG EndpointsToDisableCount
UCXENDPOINT DefaultEndpoint
ULONG BestEffortServiceLatency
ULONG HostInitiatedResumeDurationMode
ULONG BestEffortServiceLatencyDeep
ULONG MaxExitLatencyTooLarge
ULONG Update20HardwareLpmParameters
ULONG UpdateRootPortResumeTime
ULONG UpdateMaxExitLatency
ULONG UpdateDeviceDescriptor
ULONG UpdateBosDescriptor
ULONG UpdateAllowIoOnInvalidPipeHandles
PUSB_DEVICE_DESCRIPTOR DeviceDescriptor
USBDEVICE_UPDATE_FLAGS Flags
USBDEVICE_UPDATE_20_HARDWARE_LPM_PARAMETERS Usb20HardwareLpmParameters
USBDEVICE_UPDATE_FAILURE_FLAGS FailureFlags
PUSB_BOS_DESCRIPTOR BosDescriptor
USHORT RootPortResumeTime
ULONG PortPath[MAX_USB_DEVICE_DEPTH]
#define FIELD_OFFSET(t, f)
#define RtlZeroMemory(Destination, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller
_In_ PUCXUSBDEVICE_INFO _In_ PUCXUSBDEVICE_INIT UsbDeviceInit
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
_Must_inspect_result_ _In_ UCXUSBDEVICE UsbDevice
@ UcxUsbDeviceRemoteWakeNotificationTableIndex
@ UcxUsbDeviceCreateTableIndex
@ UcxUsbDeviceInitSetEventCallbacksTableIndex
#define UCX_BOUND_FUNCTION(PfnType, Slot)
WDF_EXTERN_C_START struct _UCX_DRIVER_GLOBALS * PUCX_DRIVER_GLOBALS
PUCX_DRIVER_GLOBALS UcxDriverGlobals
struct _UCXENDPOINT_INIT * PUCXENDPOINT_INIT
struct _UCXUSBDEVICE_INIT * PUCXUSBDEVICE_INIT
struct _UCX_USBDEVICE_CHARACTERISTIC_PATH_DELAY * PUCX_USBDEVICE_CHARACTERISTIC_PATH_DELAY
PFN_UCX_USBDEVICE_HUB_INFO PEVT_UCX_USBDEVICE_HUB_INFO
struct _UCX_USBDEVICE_CHARACTERISTIC UCX_USBDEVICE_CHARACTERISTIC
_In_ UCXUSBDEVICE _In_ ULONG Interface
struct _USBDEVICE_RESET USBDEVICE_RESET
VOID(NTAPI * PFN_UCXUSBDEVICEINITSETEVENTCALLBACKS)(_In_ PUCX_DRIVER_GLOBALS DriverGlobals, _Inout_ PUCXUSBDEVICE_INIT UsbDeviceInit, _In_ PUCX_USBDEVICE_EVENT_CALLBACKS EventCallbacks)
PFN_UCX_USBDEVICE_ENABLE PEVT_UCX_USBDEVICE_ENABLE
enum _UCX_USBDEVICE_RECOVERY_ACTION UCX_USBDEVICE_RECOVERY_ACTION
_In_ UCXUSBDEVICE _In_ ULONG _In_opt_ PUSB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR SuperSpeedEndpointCompanionDescriptor
_In_ UCXUSBDEVICE _In_reads_bytes_(UsbEndpointDescriptorBufferLength) PUSB_ENDPOINT_DESCRIPTOR UsbEndpointDescriptor
_In_ UCXUSBDEVICE _In_ ULONG UsbEndpointDescriptorBufferLength
struct _ADDRESS0_OWNERSHIP_ACQUIRE * PADDRESS0_OWNERSHIP_ACQUIRE
struct _UCXUSBDEVICE_INFO UCXUSBDEVICE_INFO
struct _USBDEVICE_ABORTIO * PUSBDEVICE_ABORTIO
EVT_UCX_USBDEVICE_HUB_INFO * PFN_UCX_USBDEVICE_HUB_INFO
EVT_UCX_USBDEVICE_ADDRESS * PFN_UCX_USBDEVICE_ADDRESS
PFN_UCX_USBDEVICE_ADDRESS PEVT_UCX_USBDEVICE_ADDRESS
struct _USBDEVICE_PURGEIO USBDEVICE_PURGEIO
struct _USBDEVICE_ABORTIO USBDEVICE_ABORTIO
struct _USBDEVICE_STARTIO USBDEVICE_STARTIO
EVT_UCX_USBDEVICE_RESET * PFN_UCX_USBDEVICE_RESET
struct _ADDRESS0_OWNERSHIP_ACQUIRE ADDRESS0_OWNERSHIP_ACQUIRE
struct _USBDEVICE_DISABLE * PUSBDEVICE_DISABLE
_Must_inspect_result_ _In_ UCXCONTROLLER Controller
EVT_UCX_USBDEVICE_GET_CHARACTERISTIC * PFN_UCX_USBDEVICE_GET_CHARACTERISTIC
EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD * PFN_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD
EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE * PFN_UCX_USBDEVICE_ENDPOINTS_CONFIGURE
struct _USBDEVICE_PURGEIO * PUSBDEVICE_PURGEIO
struct _USBDEVICE_HUB_INFO * PUSBDEVICE_HUB_INFO
PFN_UCX_USBDEVICE_ENDPOINTS_CONFIGURE PEVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE
struct _USBDEVICE_RESET * PUSBDEVICE_RESET
PFN_UCX_USBDEVICE_RESET PEVT_UCX_USBDEVICE_RESET
_In_ UCXUSBDEVICE _In_ ULONG _In_ PUCXENDPOINT_INIT UcxEndpointInit
struct _UCX_USBDEVICE_EVENT_CALLBACKS UCX_USBDEVICE_EVENT_CALLBACKS
struct _USBDEVICE_ADDRESS * PUSBDEVICE_ADDRESS
struct _UCXUSBDEVICE_INFO * PUCXUSBDEVICE_INFO
_In_ UCXUSBDEVICE _Inout_ PUCX_USBDEVICE_CHARACTERISTIC UcxUsbDeviceCharacteristic
_UCX_USBDEVICE_CHARACTERISTIC_TYPE
@ UCX_USBDEVICE_CHARACTERISTIC_TYPE_PATH_DELAY
#define MAX_USB_DEVICE_DEPTH
struct _USBDEVICE_UPDATE_FLAGS USBDEVICE_UPDATE_FLAGS
_Must_inspect_result_ _In_ UCXCONTROLLER _Inout_ PUCXUSBDEVICE_INIT _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ UCXCONTROLLER _Inout_ PUCXUSBDEVICE_INIT _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXUSBDEVICE * UsbDevice
_Must_inspect_result_ _IRQL_requires_(PASSIVE_LEVEL) NTSTATUS(NTAPI *PFN_UCXUSBDEVICECREATE)(_In_ PUCX_DRIVER_GLOBALS DriverGlobals
enum _UCX_USBDEVICE_CHARACTERISTIC_TYPE UCX_USBDEVICE_CHARACTERISTIC_TYPE
struct _UCX_USBDEVICE_CHARACTERISTIC * PUCX_USBDEVICE_CHARACTERISTIC
EVT_UCX_USBDEVICE_RESUME * PFN_UCX_USBDEVICE_RESUME
struct _USBDEVICE_MGMT_HEADER USBDEVICE_MGMT_HEADER
FORCEINLINE VOID NTAPI UcxUsbDeviceInitSetEventCallbacks(_Inout_ PUCXUSBDEVICE_INIT UsbDeviceInit, _In_ PUCX_USBDEVICE_EVENT_CALLBACKS EventCallbacks)
PFN_UCX_USBDEVICE_DISABLE PEVT_UCX_USBDEVICE_DISABLE
_Must_inspect_result_ _In_ UCXCONTROLLER _Inout_ PUCXUSBDEVICE_INIT * UsbDeviceInit
_In_ UCXUSBDEVICE UcxUsbDevice
PFN_UCX_USBDEVICE_GET_CHARACTERISTIC PEVT_UCX_USBDEVICE_GET_CHARACTERISTIC
struct _USBDEVICE_UPDATE_FAILURE_FLAGS USBDEVICE_UPDATE_FAILURE_FLAGS
_UCX_USBDEVICE_RECOVERY_ACTION
@ UcxUsbDeviceRecoverActionFunctionLevelDeviceReset
@ UcxUsbDeviceRecoverActionNone
@ UcxUsbDeviceRecoverActionPlatformLevelDeviceReset
struct _USBDEVICE_MGMT_HEADER * PUSBDEVICE_MGMT_HEADER
struct _USBDEVICE_TREE_PURGEIO USBDEVICE_TREE_PURGEIO
struct _UCX_USBDEVICE_EVENT_CALLBACKS * PUCX_USBDEVICE_EVENT_CALLBACKS
struct _USBDEVICE_UPDATE * PUSBDEVICE_UPDATE
EVT_UCX_USBDEVICE_ENABLE * PFN_UCX_USBDEVICE_ENABLE
PFN_UCX_USBDEVICE_ENDPOINT_ADD PEVT_UCX_USBDEVICE_ENDPOINT_ADD
struct _USBDEVICE_UPDATE_20_HARDWARE_LPM_PARAMETERS USBDEVICE_UPDATE_20_HARDWARE_LPM_PARAMETERS
struct _USBDEVICE_ADDRESS USBDEVICE_ADDRESS
struct _USB_DEVICE_PORT_PATH * PUSB_DEVICE_PORT_PATH
struct _USB_DEVICE_PORT_PATH USB_DEVICE_PORT_PATH
EVT_UCX_USBDEVICE_ENDPOINT_ADD * PFN_UCX_USBDEVICE_ENDPOINT_ADD
struct _USBDEVICE_HUB_INFO USBDEVICE_HUB_INFO
struct _USBDEVICE_STARTIO * PUSBDEVICE_STARTIO
struct _USBDEVICE_ENABLE_FAILURE_FLAGS USBDEVICE_ENABLE_FAILURE_FLAGS
EVT_UCX_USBDEVICE_UPDATE * PFN_UCX_USBDEVICE_UPDATE
FORCEINLINE VOID NTAPI UCX_USBDEVICE_EVENT_CALLBACKS_INIT(_Out_ PUCX_USBDEVICE_EVENT_CALLBACKS Callbacks, _In_ PFN_UCX_USBDEVICE_ENDPOINTS_CONFIGURE EvtUsbDeviceEndpointsConfigure, _In_ PFN_UCX_USBDEVICE_ENABLE EvtUsbDeviceEnable, _In_ PFN_UCX_USBDEVICE_DISABLE EvtUsbDeviceDisable, _In_ PFN_UCX_USBDEVICE_RESET EvtUsbDeviceReset, _In_ PFN_UCX_USBDEVICE_ADDRESS EvtUsbDeviceAddress, _In_ PFN_UCX_USBDEVICE_UPDATE EvtUsbDeviceUpdate, _In_ PFN_UCX_USBDEVICE_HUB_INFO EvtUsbDeviceHubInfo, _In_ PFN_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD EvtUsbDeviceDefaultEndpointAdd, _In_ PFN_UCX_USBDEVICE_ENDPOINT_ADD EvtUsbDeviceEndpointAdd)
struct _USBDEVICE_ENABLE * PUSBDEVICE_ENABLE
EVT_UCX_USBDEVICE_DISABLE * PFN_UCX_USBDEVICE_DISABLE
PFN_UCX_USBDEVICE_UPDATE PEVT_UCX_USBDEVICE_UPDATE
struct _USBDEVICE_TREE_PURGEIO * PUSBDEVICE_TREE_PURGEIO
struct _USBDEVICE_ENABLE USBDEVICE_ENABLE
struct _USBDEVICE_DISABLE USBDEVICE_DISABLE
PFN_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD PEVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD
struct _UCX_USBDEVICE_CHARACTERISTIC_PATH_DELAY UCX_USBDEVICE_CHARACTERISTIC_PATH_DELAY
struct _USBDEVICE_UPDATE USBDEVICE_UPDATE
EVT_UCX_USBDEVICE_SUSPEND * PFN_UCX_USBDEVICE_SUSPEND
enum _USB_DEVICE_SPEED USB_DEVICE_SPEED
#define WDF_EXTERN_C_START