FreeRDP
Loading...
Searching...
No Matches
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
30extern "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 WINPR_ATTR_NODISCARD
72 FREERDP_API void* freerdp_channels_client_find_static_entry(const char* name,
73 const char* identifier);
74
75 WINPR_ATTR_NODISCARD
76 FREERDP_API PVIRTUALCHANNELENTRY freerdp_channels_load_static_addin_entry(LPCSTR pszName,
77 LPCSTR pszSubsystem,
78 LPCSTR pszType,
79 DWORD dwFlags);
80
81 WINPR_ATTR_NODISCARD
82 FREERDP_API FREERDP_ADDIN** freerdp_channels_list_addins(LPCSTR pszName, LPCSTR pszSubsystem,
83 LPCSTR pszType, DWORD dwFlags);
84 FREERDP_API void freerdp_channels_addin_list_free(FREERDP_ADDIN** ppAddins);
85
86 WINPR_ATTR_NODISCARD
87 FREERDP_API BOOL freerdp_initialize_generic_dynvc_plugin(GENERIC_DYNVC_PLUGIN* plugin);
88
89 WINPR_ATTR_NODISCARD
90 FREERDP_API UINT freerdp_generic_DVCPluginEntry(
91 IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* logTag, const char* name,
92 size_t pluginSize, size_t channelCallbackSize,
93 const IWTSVirtualChannelCallback* channel_callbacks, DYNVC_PLUGIN_INIT_FN initPluginFn,
94 DYNVC_PLUGIN_TERMINATE_FN terminatePluginFn);
95#endif
96
97#ifdef __cplusplus
98}
99#endif
100
101#endif /* FREERDP_CHANNELS_CLIENT_H */