- IUDEVMAN Interface UDEV Manager
classDiagram IUDEVMAN --|> urbdrc_main_C IWTSListenerCallback --> URBDRC_LISTENER_CALLBACK URBDRC_LISTENER_CALLBACK --> URBDRC_PLUGIN IWTSPlugin --|> URBDRC_PLUGIN IWTSListener --|> URBDRC_PLUGIN IUDEVMAN o-- IWTSPlugin urbdrc_main_C o-- URBDRC_PLUGIN
classDiagram
class drdynvcPlugin{
+drdynvc_virtual_channel_init_event_ex()
+drdynvc_virtual_channel_event_connected()
+dvcman_load_addin()
}
drdynvcPlugin -- DVCMAN_ENTRY_POINTS
class DVCMAN_ENTRY_POINTS{
+DVCMAN* dvcman
}
DVCMAN_ENTRY_POINTS -- DVCMAN
class IWTSVirtualChannelManager{
CreateListener()*
}
IWTSVirtualChannelManager --|> DVCMAN
class DVCMAN{
+CreateListener> dvcman_create_listener()
}
_IWTSPlugin --|> URBDRC_PLUGIN
class URBDRC_PLUGIN{
+IUDEVMAN* udevman
+urbdrc_load_udevman_addin()
+urbdrc_plugin_initialize()
+udev_init()
+udev_new_by_addr()
+udev_new_by_id()
}
URBDRC_PLUGIN o-- IUDEVMAN
URBDRC_PLUGIN -- IWTSVirtualChannelManager
class IUDEVMAN{
listener_created_callback()*
register_udevice()*
}
IUDEVMAN --|> UDEVMAN
UDEVMAN --|> libusb_udevman
class libusb_udevman{
+udevman_listener_created_callback()
+udevman_register_udevice()
+urbdrc_udevman_register_devices()
+add_device()
}
class IUDEVICE {
+attach_kernel_driver()*
+detach_kernel_driver()*
+query_device_descriptor()*
}
IUDEVICE --|> UDEVICE
UDEVICE --|> libusb_udevice
class libusb_udevice{
+attach_kernel_driver> libusb_udev_attach_kernel_driver()
+detach_kernel_driver> libusb_udev_detach_kernel_driver()
+query_device_descriptor> libusb_udev_query_device_descriptor()
}
rdpContext o-- rdpChannels
class rdpChannels{
+CHANNEL_CLIENT_DATA clientDataList[CHANNEL_MAX_COUNT]
+freerdp_client_load_static_channel_addin()
+freerdp_channels_load_plugin()
+freerdp_channels_client_load()
}
rdpChannels o-- pChannelClientData
class pChannelClientData{
+entry()*
}
pChannelClientData --|> urbdrc_main
_IWTSPlugin --|> urbdrc_main
_IWTSVirtualChannelManager --|> urbdrc_main
_IWTSListenerCallback --|> urbdrc_main
class _IWTSListenerCallback{
+OnNewChannelConnection()*
}
class urbdrc_main{
+DVCPluginEntry()
+OnNewChannelConnection> urbdrc_on_new_channel_connection()
+urbdrc_on_data_received()
}
urbdrc_main -- URBDRC_PLUGIN
- 本文作者: crazyboy
- 本文链接: http://crazyboy.www.crazyboy.info/blog/blog/2022/07/27/it/linux/xfreerdp/urbdrc/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!