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 <winpr/wtypes.h>
24
25#include <freerdp/api.h>
26#include <freerdp/dvc.h>
27#include <freerdp/config.h>
28#include <freerdp/addin.h>
29#include <freerdp/channels/channels.h>
30
31#ifdef __cplusplus
32extern "C"
33{
34#endif
35
39 typedef enum WINPR_C23_ENUM_TYPE(uint32_t)
40 {
41 GENERIC_CHANNEL_ENTRY_OPTION_NONE = 0,
42 GENERIC_CHANNEL_ENTRY_OPTION_MULTI_INSTANCE = 1
43 } GENERIC_CHANNEL_ENTRY_OPTIONS;
44
45 typedef struct
46 {
47 IWTSVirtualChannelCallback iface;
48 IWTSPlugin* plugin;
49 IWTSVirtualChannelManager* channel_mgr;
50 IWTSVirtualChannel* channel;
52
53 typedef struct
54 {
55 IWTSListenerCallback iface;
56 IWTSPlugin* plugin;
57 IWTSVirtualChannelManager* channel_mgr;
58 IWTSVirtualChannel* channel;
59 GENERIC_CHANNEL_CALLBACK* channel_callback;
61
63 typedef UINT (*DYNVC_PLUGIN_INIT_FN)(GENERIC_DYNVC_PLUGIN* plugin, rdpContext* context,
64 rdpSettings* settings);
65 typedef void (*DYNVC_PLUGIN_TERMINATE_FN)(GENERIC_DYNVC_PLUGIN* plugin);
66
68 {
69 IWTSPlugin iface;
70 GENERIC_LISTENER_CALLBACK* listener_callback;
71 IWTSListener* listener;
72 BOOL attached;
73 BOOL initialized;
74 wLog* log;
75 char* dynvc_name;
76 size_t channelCallbackSize;
77 const IWTSVirtualChannelCallback* channel_callbacks;
78 DYNVC_PLUGIN_TERMINATE_FN terminatePluginFn;
79 };
80
81#if defined(WITH_CHANNELS)
82 WINPR_ATTR_NODISCARD
83 FREERDP_API void* freerdp_channels_client_find_static_entry(const char* name,
84 const char* identifier);
85
86 WINPR_ATTR_NODISCARD
87 FREERDP_API PVIRTUALCHANNELENTRY freerdp_channels_load_static_addin_entry(LPCSTR pszName,
88 LPCSTR pszSubsystem,
89 LPCSTR pszType,
90 DWORD dwFlags);
91
92 WINPR_ATTR_NODISCARD
93 FREERDP_API FREERDP_ADDIN** freerdp_channels_list_addins(LPCSTR pszName, LPCSTR pszSubsystem,
94 LPCSTR pszType, DWORD dwFlags);
95 FREERDP_API void freerdp_channels_addin_list_free(FREERDP_ADDIN** ppAddins);
96
97 WINPR_ATTR_NODISCARD
98 FREERDP_API BOOL freerdp_initialize_generic_dynvc_plugin(GENERIC_DYNVC_PLUGIN* plugin);
99
100 WINPR_ATTR_NODISCARD
101 FREERDP_API UINT freerdp_generic_DVCPluginEntry(
102 IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* logTag, const char* name,
103 size_t pluginSize, size_t channelCallbackSize,
104 const IWTSVirtualChannelCallback* channel_callbacks, DYNVC_PLUGIN_INIT_FN initPluginFn,
105 DYNVC_PLUGIN_TERMINATE_FN terminatePluginFn);
106
125 WINPR_ATTR_NODISCARD
126 FREERDP_API UINT freerdp_generic_DVCPluginEntryWithOptions(
127 IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* logTag, const char* name,
128 size_t pluginSize, size_t channelCallbackSize,
129 const IWTSVirtualChannelCallback* channel_callbacks, DYNVC_PLUGIN_INIT_FN initPluginFn,
130 DYNVC_PLUGIN_TERMINATE_FN terminatePluginFn, UINT32 flags);
131#endif
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif /* FREERDP_CHANNELS_CLIENT_H */