101 WINPR_ATTR_NODISCARD int (*isoch_transfer)(
103 UINT32 EndpointAddress, UINT32 TransferFlags, UINT32 StartFrame, UINT32 ErrorCount,
104 BOOL NoAck,
const BYTE* packetDescriptorData, UINT32 NumberOfPackets, UINT32 BufferSize,
105 const BYTE* Buffer,
int transferDir, t_isoch_transfer_cb cb, UINT32 Timeout);
107 WINPR_ATTR_NODISCARD BOOL (*control_transfer)(IUDEVICE* idev, UINT32 RequestId,
108 UINT32 EndpointAddress, UINT32 TransferFlags,
109 BYTE bmRequestType, BYTE Request, UINT16 Value,
110 UINT16 Index, UINT32* UrbdStatus,
111 UINT32* BufferSize, BYTE* Buffer, UINT32 Timeout);
113 WINPR_ATTR_NODISCARD int (*bulk_or_interrupt_transfer)(
115 UINT32 EndpointAddress, UINT32 TransferFlags, BOOL NoAck, UINT32 BufferSize,
116 const BYTE* data,
int transferDir, t_isoch_transfer_cb cb, UINT32 Timeout);
118 WINPR_ATTR_NODISCARD int (*select_configuration)(IUDEVICE* idev, UINT32 bConfigurationValue);
120 WINPR_ATTR_NODISCARD int (*select_interface)(IUDEVICE* idev, BYTE InterfaceNumber,
121 BYTE AlternateSetting);
123 WINPR_ATTR_NODISCARD int (*control_pipe_request)(IUDEVICE* idev, UINT32 RequestId,
124 UINT32 EndpointAddress, UINT32* UsbdStatus,
127 WINPR_ATTR_NODISCARD UINT32 (*control_query_device_text)(IUDEVICE* idev, UINT32 TextType,
128 UINT16 LocaleId, UINT8* BufferSize,
131 WINPR_ATTR_NODISCARD int (*os_feature_descriptor_request)(
132 IUDEVICE* idev, UINT32 RequestId, BYTE Recipient, BYTE InterfaceNumber, BYTE Ms_PageIndex,
133 UINT16 Ms_featureDescIndex, UINT32* UsbdStatus, UINT32* BufferSize, BYTE* Buffer,
136 void (*cancel_all_transfer_request)(IUDEVICE* idev);
138 WINPR_ATTR_NODISCARD int (*cancel_transfer_request)(IUDEVICE* idev, UINT32 RequestId);
140 WINPR_ATTR_NODISCARD int (*query_device_descriptor)(IUDEVICE* idev,
int offset);
142 WINPR_ATTR_NODISCARD BOOL (*detach_kernel_driver)(IUDEVICE* idev);
144 WINPR_ATTR_NODISCARD BOOL (*attach_kernel_driver)(IUDEVICE* idev);
146 WINPR_ATTR_NODISCARD int (*query_device_port_status)(IUDEVICE* idev, UINT32* UsbdStatus,
147 UINT32* BufferSize, BYTE* Buffer);
152 WINPR_ATTR_NODISCARD int (*isCompositeDevice)(IUDEVICE* idev);
154 WINPR_ATTR_NODISCARD int (*isExist)(IUDEVICE* idev);
155 WINPR_ATTR_NODISCARD int (*isAlreadySend)(IUDEVICE* idev);
156 WINPR_ATTR_NODISCARD int (*isChannelClosed)(IUDEVICE* idev);
158 void (*setAlreadySend)(IUDEVICE* idev);
159 void (*setChannelClosed)(IUDEVICE* idev);
160 void (*markChannelClosed)(IUDEVICE* idev);
161 WINPR_ATTR_NODISCARD
char* (*getPath)(IUDEVICE* idev);
163 void (*free)(IUDEVICE* idev);
165 BASIC_DEV_STATE_DEFINED(channelManager, IWTSVirtualChannelManager*);
166 BASIC_DEV_STATE_DEFINED(channelID, UINT32);
167 BASIC_DEV_STATE_DEFINED(UsbDevice, UINT32);
168 BASIC_DEV_STATE_DEFINED(ReqCompletion, UINT32);
169 BASIC_DEV_STATE_DEFINED(bus_number, BYTE);
170 BASIC_DEV_STATE_DEFINED(dev_number, BYTE);
171 BASIC_DEV_STATE_DEFINED(port_number, UINT8);
174 BASIC_DEV_STATE_DEFINED(p_udev,
void*);
175 BASIC_DEV_STATE_DEFINED(p_prev,
void*);
176 BASIC_DEV_STATE_DEFINED(p_next,
void*);
182 void (*free)(IUDEVMAN* idevman);
185 void (*rewind)(IUDEVMAN* idevman);
186 WINPR_ATTR_NODISCARD BOOL (*has_next)(IUDEVMAN* idevman);
187 WINPR_ATTR_NODISCARD BOOL (*unregister_udevice)(IUDEVMAN* idevman, BYTE bus_number,
189 WINPR_ATTR_NODISCARD size_t (*register_udevice)(IUDEVMAN* idevman, BYTE bus_number,
190 BYTE dev_number, UINT16 idVendor,
191 UINT16 idProduct, UINT32 flag);
192 WINPR_ATTR_NODISCARD IUDEVICE* (*get_next)(IUDEVMAN* idevman);
193 WINPR_ATTR_NODISCARD IUDEVICE* (*get_udevice_by_UsbDevice)(IUDEVMAN* idevman, UINT32 UsbDevice);
194 WINPR_ATTR_NODISCARD IUDEVICE* (*get_udevice_by_ChannelID)(IUDEVMAN* idevman, UINT32 channelID);
197 WINPR_ATTR_NODISCARD int (*isAutoAdd)(IUDEVMAN* idevman);
200 BASIC_DEVMAN_STATE_DEFINED(device_num, UINT32);
201 BASIC_DEVMAN_STATE_DEFINED(next_device_id, UINT32);
204 void (*loading_lock)(IUDEVMAN* idevman);
205 void (*loading_unlock)(IUDEVMAN* idevman);
206 WINPR_ATTR_NODISCARD BOOL (*initialize)(IUDEVMAN* idevman, UINT32 channelId);
207 WINPR_ATTR_NODISCARD UINT (*listener_created_callback)(IUDEVMAN* idevman);
210 UINT32 controlChannelId;