FreeRDP
Loading...
Searching...
No Matches
dvc.h
1
53#ifndef FREERDP_DVC_H
54#define FREERDP_DVC_H
55
56#include <freerdp/types.h>
57#include <freerdp/addin.h>
58#include <freerdp/settings.h>
59
60#ifdef __cplusplus
61extern "C"
62{
63#endif
64
65 typedef struct s_IWTSVirtualChannelManager IWTSVirtualChannelManager;
66 typedef struct s_IWTSListener IWTSListener;
67 typedef struct s_IWTSVirtualChannel IWTSVirtualChannel;
68
69 typedef struct s_IWTSPlugin IWTSPlugin;
70 typedef struct s_IWTSListenerCallback IWTSListenerCallback;
71 typedef struct s_IWTSVirtualChannelCallback IWTSVirtualChannelCallback;
72
74 {
75 /* Retrieves the listener-specific configuration. */
76 WINPR_ATTR_NODISCARD UINT (*GetConfiguration)(IWTSListener* pListener,
77 void** ppPropertyBag);
78
79 void* pInterface;
80 };
81
83 {
84 /* Starts a write request on the channel. */
85 WINPR_ATTR_NODISCARD UINT (*Write)(IWTSVirtualChannel* pChannel, ULONG cbSize,
86 const BYTE* pBuffer, void* pReserved);
87 /* Closes the channel. */
88 WINPR_ATTR_NODISCARD UINT (*Close)(IWTSVirtualChannel* pChannel);
89 };
90
92 {
93 /* Returns an instance of a listener object that listens on a specific
94 endpoint, or creates a static channel. */
95 WINPR_ATTR_NODISCARD UINT (*CreateListener)(IWTSVirtualChannelManager* pChannelMgr,
96 const char* pszChannelName, ULONG ulFlags,
97 IWTSListenerCallback* pListenerCallback,
98 IWTSListener** ppListener);
99 /* Find the channel or ID to send data to a specific endpoint. */
100 WINPR_ATTR_NODISCARD UINT32 (*GetChannelId)(IWTSVirtualChannel* channel);
101 WINPR_ATTR_NODISCARD IWTSVirtualChannel* (*FindChannelById)(
102 IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId);
103 WINPR_ATTR_NODISCARD const char* (*GetChannelName)(IWTSVirtualChannel* channel);
104 UINT (*DestroyListener)(IWTSVirtualChannelManager* pChannelMgr, IWTSListener* ppListener);
105 };
106
108 {
109 /* Used for the first call that is made from the client to the plug-in. */
110 WINPR_ATTR_NODISCARD UINT (*Initialize)(IWTSPlugin* pPlugin,
111 IWTSVirtualChannelManager* pChannelMgr);
112 /* Notifies the plug-in that the Remote Desktop Connection (RDC) client
113 has successfully connected to the Remote Desktop Session Host (RD
114 Session Host) server. */
115 WINPR_ATTR_NODISCARD UINT (*Connected)(IWTSPlugin* pPlugin);
116 /* Notifies the plug-in that the Remote Desktop Connection (RDC) client
117 has disconnected from the RD Session Host server. */
118 WINPR_ATTR_NODISCARD UINT (*Disconnected)(IWTSPlugin* pPlugin, DWORD dwDisconnectCode);
119 /* Notifies the plug-in that the Remote Desktop Connection (RDC) client
120 has terminated. */
121 WINPR_ATTR_NODISCARD UINT (*Terminated)(IWTSPlugin* pPlugin);
122
123 WINPR_ATTR_NODISCARD UINT (*Attached)(IWTSPlugin* pPlugin);
124
125 WINPR_ATTR_NODISCARD UINT (*Detached)(IWTSPlugin* pPlugin);
126
127 /* Extended */
128
129 void* pInterface;
130 };
131
133 {
134 /* Accepts or denies a connection request for an incoming connection to
135 the associated listener. */
136 WINPR_ATTR_NODISCARD
137 UINT (*OnNewChannelConnection)(IWTSListenerCallback* pListenerCallback,
138 IWTSVirtualChannel* pChannel, BYTE* Data, BOOL* pbAccept,
139 IWTSVirtualChannelCallback** ppCallback);
140
141 void* pInterface;
142 };
143
145 {
146 WINPR_ATTR_NODISCARD UINT (*OnDataReceived)(
147 IWTSVirtualChannelCallback* pChannelCallback,
148 wStream* data);
149 WINPR_ATTR_NODISCARD UINT (*OnOpen)(
150 IWTSVirtualChannelCallback*
151 pChannelCallback);
152 WINPR_ATTR_NODISCARD UINT (*OnClose)(
153 IWTSVirtualChannelCallback*
154 pChannelCallback);
156 void* pInterface;
157 };
158
159 /* The DVC Plugin entry points */
160 typedef struct rdp_context rdpContext; /* forward declaration, necessary to avoid
161 * circular includes */
162
163 typedef struct S_IDRDYNVC_ENTRY_POINTS IDRDYNVC_ENTRY_POINTS;
165 {
166 WINPR_ATTR_NODISCARD UINT (*RegisterPlugin)(IDRDYNVC_ENTRY_POINTS* pEntryPoints,
167 const char* name, IWTSPlugin* pPlugin);
168 IWTSPlugin* (*GetPlugin)(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name);
169 const ADDIN_ARGV* (*GetPluginData)(IDRDYNVC_ENTRY_POINTS* pEntryPoints);
170 WINPR_ATTR_NODISCARD rdpSettings* (*GetRdpSettings)(IDRDYNVC_ENTRY_POINTS* pEntryPoints);
171 WINPR_ATTR_NODISCARD rdpContext* (*GetRdpContext)(IDRDYNVC_ENTRY_POINTS* pEntryPoints);
172 };
173
174 typedef UINT(VCAPITYPE* PDVC_PLUGIN_ENTRY)(IDRDYNVC_ENTRY_POINTS*);
175
176 WINPR_ATTR_NODISCARD
177 FREERDP_API void* get_callback_by_name(const char* name, void** context);
178 FREERDP_API void add_callback_by_name(const char* name, void* fkt, void* context);
179 FREERDP_API void remove_callback_by_name(const char* name, void* context);
180
181#ifdef __cplusplus
182}
183#endif
184
185#endif /* FREERDP_DVC_H */
Definition dvc.h:165
WINPR_ATTR_NODISCARD UINT(* OnOpen)(IWTSVirtualChannelCallback *pChannelCallback)
Definition dvc.h:149
WINPR_ATTR_NODISCARD UINT(* OnDataReceived)(IWTSVirtualChannelCallback *pChannelCallback, wStream *data)
Definition dvc.h:146
WINPR_ATTR_NODISCARD UINT(* OnClose)(IWTSVirtualChannelCallback *pChannelCallback)
Definition dvc.h:152