FreeRDP
include/freerdp/client/channels.h
1 
20 #ifndef FREERDP_CHANNELS_CLIENT_H
21 #define FREERDP_CHANNELS_CLIENT_H
22 
23 #include <freerdp/api.h>
24 #include <freerdp/dvc.h>
25 #include <freerdp/config.h>
26 #include <freerdp/addin.h>
27 #include <freerdp/channels/channels.h>
28 
29 #ifdef __cplusplus
30 extern "C"
31 {
32 #endif
33 
34  typedef struct
35  {
36  IWTSVirtualChannelCallback iface;
37  IWTSPlugin* plugin;
38  IWTSVirtualChannelManager* channel_mgr;
39  IWTSVirtualChannel* channel;
41 
42  typedef struct
43  {
44  IWTSListenerCallback iface;
45  IWTSPlugin* plugin;
46  IWTSVirtualChannelManager* channel_mgr;
47  IWTSVirtualChannel* channel;
48  GENERIC_CHANNEL_CALLBACK* channel_callback;
50 
52  typedef UINT (*DYNVC_PLUGIN_INIT_FN)(GENERIC_DYNVC_PLUGIN* plugin, rdpContext* context,
53  rdpSettings* settings);
54  typedef void (*DYNVC_PLUGIN_TERMINATE_FN)(GENERIC_DYNVC_PLUGIN* plugin);
55 
57  {
58  IWTSPlugin iface;
59  GENERIC_LISTENER_CALLBACK* listener_callback;
60  IWTSListener* listener;
61  BOOL attached;
62  BOOL initialized;
63  wLog* log;
64  char* dynvc_name;
65  size_t channelCallbackSize;
66  const IWTSVirtualChannelCallback* channel_callbacks;
67  DYNVC_PLUGIN_TERMINATE_FN terminatePluginFn;
68  };
69 
70 #if defined(WITH_CHANNELS)
71  FREERDP_API void* freerdp_channels_client_find_static_entry(const char* name,
72  const char* identifier);
73  FREERDP_API PVIRTUALCHANNELENTRY freerdp_channels_load_static_addin_entry(LPCSTR pszName,
74  LPCSTR pszSubsystem,
75  LPCSTR pszType,
76  DWORD dwFlags);
77 
78  FREERDP_API FREERDP_ADDIN** freerdp_channels_list_addins(LPCSTR lpName, LPCSTR lpSubsystem,
79  LPCSTR lpType, DWORD dwFlags);
80  FREERDP_API void freerdp_channels_addin_list_free(FREERDP_ADDIN** ppAddins);
81 
82  FREERDP_API BOOL freerdp_initialize_generic_dynvc_plugin(GENERIC_DYNVC_PLUGIN* plugin);
83  FREERDP_API UINT freerdp_generic_DVCPluginEntry(
84  IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* logTag, const char* name,
85  size_t pluginSize, size_t channelCallbackSize,
86  const IWTSVirtualChannelCallback* channel_callbacks, DYNVC_PLUGIN_INIT_FN initPluginFn,
87  DYNVC_PLUGIN_TERMINATE_FN terminatePluginFn);
88 #endif
89 
90 #ifdef __cplusplus
91 }
92 #endif
93 
94 #endif /* FREERDP_CHANNELS_CLIENT_H */