FreeRDP
Loading...
Searching...
No Matches
libusb_udevice.h
1
21#ifndef FREERDP_CHANNEL_URBDRC_CLIENT_LIBUSB_UDEVICE_H
22#define FREERDP_CHANNEL_URBDRC_CLIENT_LIBUSB_UDEVICE_H
23
24#include <winpr/windows.h>
25#include <libusb.h>
26
27#include "urbdrc_types.h"
28#include "urbdrc_main.h"
29#include "msusb.h"
30
31typedef struct libusb_device LIBUSB_DEVICE;
32typedef struct libusb_device_handle LIBUSB_DEVICE_HANDLE;
33typedef struct libusb_device_descriptor LIBUSB_DEVICE_DESCRIPTOR;
34typedef struct libusb_config_descriptor LIBUSB_CONFIG_DESCRIPTOR;
35typedef struct libusb_interface LIBUSB_INTERFACE;
36typedef struct libusb_interface_descriptor LIBUSB_INTERFACE_DESCRIPTOR;
37typedef struct libusb_endpoint_descriptor LIBUSB_ENDPOINT_DESCEIPTOR;
38
39typedef struct
40{
41 IUDEVICE iface;
42
43 void* udev;
44 void* prev;
45 void* next;
46
47 UINT32 UsbDevice; /* An unique interface ID */
48 UINT32 ReqCompletion; /* An unique interface ID */
49 IWTSVirtualChannelManager* channelManager;
50 UINT32 channelID;
51 GENERIC_CHANNEL_CALLBACK* channelCallback;
52 UINT16 status;
53 BYTE bus_number;
54 BYTE dev_number;
55 char path[17];
56 UINT8 port_number;
57 int isCompositeDevice;
58
59 LIBUSB_DEVICE_HANDLE* libusb_handle;
60 LIBUSB_DEVICE_HANDLE* hub_handle;
61 LIBUSB_DEVICE* libusb_dev;
62 LIBUSB_DEVICE_DESCRIPTOR* devDescriptor;
64 LIBUSB_CONFIG_DESCRIPTOR* LibusbConfig;
65
66 wArrayList* request_queue;
67
68 URBDRC_PLUGIN* urbdrc;
69} UDEVICE;
70typedef UDEVICE* PUDEVICE;
71
72WINPR_ATTR_NODISCARD
73FREERDP_LOCAL size_t udev_new_by_id(URBDRC_PLUGIN* urbdrc, libusb_context* ctx, UINT16 idVendor,
74 UINT16 idProduct, IUDEVICE*** devArray);
75
76WINPR_ATTR_NODISCARD
77FREERDP_LOCAL IUDEVICE* udev_new_by_addr(URBDRC_PLUGIN* urbdrc, libusb_context* context,
78 BYTE bus_number, BYTE dev_number);
79
80WINPR_ATTR_NODISCARD
81FREERDP_LOCAL const char* usb_interface_class_to_string(uint8_t c_class);
82
83#endif /* FREERDP_CHANNEL_URBDRC_CLIENT_LIBUSB_UDEVICE_H */