Fix changelog email address
[freerdp-ubuntu-pcb-backport.git] / include / freerdp / rail.h
1 /**
2  * FreeRDP: A Remote Desktop Protocol Client
3  * Remote Applications Integrated Locally (RAIL)
4  *
5  * Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6  * Copyright 2011 Roman Barabanov <romanbarabanov@gmail.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20
21 #ifndef __RAIL_GLOBAL_H
22 #define __RAIL_GLOBAL_H
23
24 #include <freerdp/types.h>
25
26 /* RAIL PDU flags */
27 #define RAIL_EXEC_FLAG_EXPAND_WORKINGDIRECTORY          0x0001
28 #define RAIL_EXEC_FLAG_TRANSLATE_FILES                  0x0002
29 #define RAIL_EXEC_FLAG_FILE                             0x0004
30 #define RAIL_EXEC_FLAG_EXPAND_ARGUMENTS                 0x0008
31
32 /* Notification Icon Balloon Tooltip */
33 #define NIIF_NONE                                       0x00000000
34 #define NIIF_INFO                                       0x00000001
35 #define NIIF_WARNING                                    0x00000002
36 #define NIIF_ERROR                                      0x00000003
37 #define NIIF_NOSOUND                                    0x00000010
38 #define NIIF_LARGE_ICON                                 0x00000020
39
40 /* Client Execute PDU Flags */
41 #define RAIL_EXEC_FLAG_EXPAND_WORKING_DIRECTORY         0x0001
42 #define RAIL_EXEC_FLAG_TRANSLATE_FILES                  0x0002
43 #define RAIL_EXEC_FLAG_FILE                             0x0004
44 #define RAIL_EXEC_FLAG_EXPAND_ARGUMENTS                 0x0008
45
46 /* Server Execute Result PDU */
47 #define RAIL_EXEC_S_OK                                  0x0000
48 #define RAIL_EXEC_E_HOOK_NOT_LOADED                     0x0001
49 #define RAIL_EXEC_E_DECODE_FAILED                       0x0002
50 #define RAIL_EXEC_E_NOT_IN_ALLOWLIST                    0x0003
51 #define RAIL_EXEC_E_FILE_NOT_FOUND                      0x0005
52 #define RAIL_EXEC_E_FAIL                                0x0006
53 #define RAIL_EXEC_E_SESSION_LOCKED                      0x0007
54
55 /* Client System Parameters Update PDU */
56 #define SPI_SET_DRAG_FULL_WINDOWS                       0x00000025
57 #define SPI_SET_KEYBOARD_CUES                           0x0000100B
58 #define SPI_SET_KEYBOARD_PREF                           0x00000045
59 #define SPI_SET_MOUSE_BUTTON_SWAP                       0x00000021
60 #define SPI_SET_WORK_AREA                               0x0000002F
61 #define SPI_DISPLAY_CHANGE                              0x0000F001
62 #define SPI_TASKBAR_POS                                 0x0000F000
63 #define SPI_SET_HIGH_CONTRAST                           0x00000043
64
65 /* Server System Parameters Update PDU */
66 #define SPI_SET_SCREEN_SAVE_ACTIVE                      0x00000011
67 #define SPI_SET_SCREEN_SAVE_SECURE                      0x00000077
68
69 /*Bit mask values for SPI_ parameters*/
70 enum SPI_MASK
71 {
72         SPI_MASK_SET_DRAG_FULL_WINDOWS          = 0x00000001,
73         SPI_MASK_SET_KEYBOARD_CUES                      = 0x00000002,
74         SPI_MASK_SET_KEYBOARD_PREF                      = 0x00000004,
75         SPI_MASK_SET_MOUSE_BUTTON_SWAP          = 0x00000008,
76         SPI_MASK_SET_WORK_AREA                          = 0x00000010,
77         SPI_MASK_DISPLAY_CHANGE                         = 0x00000020,
78         SPI_MASK_TASKBAR_POS                            = 0x00000040,
79         SPI_MASK_SET_HIGH_CONTRAST                      = 0x00000080,
80         SPI_MASK_SET_SCREEN_SAVE_ACTIVE         = 0x00000100,
81         SPI_MASK_SET_SET_SCREEN_SAVE_SECURE = 0x00000200
82 };
83
84
85 /* Client System Command PDU */
86 #define SC_SIZE                                         0xF000
87 #define SC_MOVE                                         0xF010
88 #define SC_MINIMIZE                                     0xF020
89 #define SC_MAXIMIZE                                     0xF030
90 #define SC_CLOSE                                        0xF060
91 #define SC_KEYMENU                                      0xF100
92 #define SC_RESTORE                                      0xF120
93 #define SC_DEFAULT                                      0xF160
94
95 /* Client Notify Event PDU */
96 #ifndef _WIN32
97 #define WM_LBUTTONDOWN                                  0x00000201
98 #define WM_LBUTTONUP                                    0x00000202
99 #define WM_RBUTTONDOWN                                  0x00000204
100 #define WM_RBUTTONUP                                    0x00000205
101 #define WM_CONTEXTMENU                                  0x0000007B
102 #define WM_LBUTTONDBLCLK                                0x00000203
103 #define WM_RBUTTONDBLCLK                                0x00000206
104
105 #define NIN_SELECT                                      0x00000400
106 #define NIN_KEYSELECT                                   0x00000401
107 #define NIN_BALLOONSHOW                                 0x00000402
108 #define NIN_BALLOONHIDE                                 0x00000403
109 #define NIN_BALLOONTIMEOUT                              0x00000404
110 #define NIN_BALLOONUSERCLICK                            0x00000405
111 #endif
112
113 /* Client Information PDU */
114 #define RAIL_CLIENTSTATUS_ALLOWLOCALMOVESIZE            0x00000001
115 #define RAIL_CLIENTSTATUS_AUTORECONNECT                 0x00000002
116
117 /* HIGHCONTRAST flags values */
118 #define HCF_AVAILABLE                                   0x00000002
119 #define HCF_CONFIRMHOTKEY                               0x00000008
120 #define HCF_HIGHCONTRASTON                              0x00000001
121 #define HCF_HOTKEYACTIVE                                0x00000004
122 #define HCF_HOTKEYAVAILABLE                             0x00000040
123 #define HCF_HOTKEYSOUND                                 0x00000010
124 #define HCF_INDICATOR                                   0x00000020
125
126 /* Server Move/Size Start PDU */
127 #define RAIL_WMSZ_LEFT                                  0x0001
128 #define RAIL_WMSZ_RIGHT                                 0x0002
129 #define RAIL_WMSZ_TOP                                   0x0003
130 #define RAIL_WMSZ_TOPLEFT                               0x0004
131 #define RAIL_WMSZ_TOPRIGHT                              0x0005
132 #define RAIL_WMSZ_BOTTOM                                0x0006
133 #define RAIL_WMSZ_BOTTOMLEFT                            0x0007
134 #define RAIL_WMSZ_BOTTOMRIGHT                           0x0008
135 #define RAIL_WMSZ_MOVE                                  0x0009
136 #define RAIL_WMSZ_KEYMOVE                               0x000A
137 #define RAIL_WMSZ_KEYSIZE                               0x000B
138
139 /* Language Bar Information PDU */
140 #define TF_SFT_SHOWNORMAL                               0x00000001
141 #define TF_SFT_DOCK                                     0x00000002
142 #define TF_SFT_MINIMIZED                                0x00000004
143 #define TF_SFT_HIDDEN                                   0x00000008
144 #define TF_SFT_NOTRANSPARENCY                           0x00000010
145 #define TF_SFT_LOWTRANSPARENCY                          0x00000020
146 #define TF_SFT_HIGHTRANSPARENCY                         0x00000040
147 #define TF_SFT_LABELS                                   0x00000080
148 #define TF_SFT_NOLABELS                                 0x00000100
149 #define TF_SFT_EXTRAICONSONMINIMIZED                    0x00000200
150 #define TF_SFT_NOEXTRAICONSONMINIMIZED                  0x00000400
151 #define TF_SFT_DESKBAND                                 0x00000800
152
153 struct _UNICODE_STRING
154 {
155         uint16 length;
156         uint8* string;
157 };
158 typedef struct _UNICODE_STRING UNICODE_STRING;
159
160 struct _HIGH_CONTRAST
161 {
162         uint32 flags;
163         uint32 colorSchemeLength;
164         UNICODE_STRING colorScheme;
165 };
166 typedef struct _HIGH_CONTRAST HIGH_CONTRAST;
167
168 /* RAIL Orders */
169
170 struct _RAIL_HANDSHAKE_ORDER
171 {
172         uint32 buildNumber;
173 };
174 typedef struct _RAIL_HANDSHAKE_ORDER RAIL_HANDSHAKE_ORDER;
175
176 struct _RAIL_CLIENT_STATUS_ORDER
177 {
178         uint32 flags;
179 };
180 typedef struct _RAIL_CLIENT_STATUS_ORDER RAIL_CLIENT_STATUS_ORDER;
181
182 struct _RAIL_EXEC_ORDER
183 {
184         uint16 flags;
185         UNICODE_STRING exeOrFile;
186         UNICODE_STRING workingDir;
187         UNICODE_STRING arguments;
188 };
189 typedef struct _RAIL_EXEC_ORDER RAIL_EXEC_ORDER;
190
191 struct _RAIL_EXEC_RESULT_ORDER
192 {
193         uint16 flags;
194         uint16 execResult;
195         uint32 rawResult;
196         UNICODE_STRING exeOrFile;
197 };
198 typedef struct _RAIL_EXEC_RESULT_ORDER RAIL_EXEC_RESULT_ORDER;
199
200 struct _RAIL_SYSPARAM_ORDER
201 {
202         uint32 param;
203         uint32 params;
204         boolean dragFullWindows;
205         boolean keyboardCues;
206         boolean keyboardPref;
207         boolean mouseButtonSwap;
208         RECTANGLE_16 workArea;
209         RECTANGLE_16 displayChange;
210         RECTANGLE_16 taskbarPos;
211         HIGH_CONTRAST highContrast;
212         boolean setScreenSaveActive;
213         boolean setScreenSaveSecure;
214 };
215 typedef struct _RAIL_SYSPARAM_ORDER RAIL_SYSPARAM_ORDER;
216
217 struct _RAIL_ACTIVATE_ORDER
218 {
219         uint32 windowId;
220         boolean enabled;
221 };
222 typedef struct _RAIL_ACTIVATE_ORDER RAIL_ACTIVATE_ORDER;
223
224 struct _RAIL_SYSMENU_ORDER
225 {
226         uint32 windowId;
227         uint16 left;
228         uint16 top;
229 };
230 typedef struct _RAIL_SYSMENU_ORDER RAIL_SYSMENU_ORDER;
231
232 struct _RAIL_SYSCOMMAND_ORDER
233 {
234         uint32 windowId;
235         uint16 command;
236 };
237 typedef struct _RAIL_SYSCOMMAND_ORDER RAIL_SYSCOMMAND_ORDER;
238
239 struct _RAIL_NOTIFY_EVENT_ORDER
240 {
241         uint32 windowId;
242         uint32 notifyIconId;
243         uint32 message;
244 };
245 typedef struct _RAIL_NOTIFY_EVENT_ORDER RAIL_NOTIFY_EVENT_ORDER;
246
247 struct _RAIL_MINMAXINFO_ORDER
248 {
249         uint32 windowId;
250         uint16 maxWidth;
251         uint16 maxHeight;
252         uint16 maxPosX;
253         uint16 maxPosY;
254         uint16 minTrackWidth;
255         uint16 minTrackHeight;
256         uint16 maxTrackWidth;
257         uint16 maxTrackHeight;
258 };
259 typedef struct _RAIL_MINMAXINFO_ORDER RAIL_MINMAXINFO_ORDER;
260
261 struct _RAIL_LOCALMOVESIZE_ORDER
262 {
263         uint32 windowId;
264         boolean isMoveSizeStart;
265         uint16 moveSizeType;
266         uint16 posX;
267         uint16 posY;
268 };
269 typedef struct _RAIL_LOCALMOVESIZE_ORDER RAIL_LOCALMOVESIZE_ORDER;
270
271 struct _RAIL_WINDOWMOVE_ORDER
272 {
273         uint32 windowId;
274         uint16 left;
275         uint16 top;
276         uint16 right;
277         uint16 bottom;
278 };
279 typedef struct _RAIL_WINDOWMOVE_ORDER RAIL_WINDOW_MOVE_ORDER;
280
281 struct _RAIL_GET_APPID_REQ_ORDER
282 {
283         uint32 windowId;
284 };
285 typedef struct _RAIL_GET_APPID_REQ_ORDER RAIL_GET_APPID_REQ_ORDER;
286
287 struct _RAIL_GET_APPID_RESP_ORDER
288 {
289         uint32 windowId;
290         UNICODE_STRING applicationId;
291         uint8 applicationIdBuffer[512];
292 };
293 typedef struct _RAIL_GET_APPID_RESP_ORDER RAIL_GET_APPID_RESP_ORDER;
294
295 struct _RAIL_LANGBARINFO_ORDER
296 {
297         uint32 languageBarStatus;
298 };
299 typedef struct _RAIL_LANGBARINFO_ORDER RAIL_LANGBAR_INFO_ORDER;
300
301 /* RAIL Constants */
302
303 enum RDP_RAIL_PDU_TYPE
304 {
305         RDP_RAIL_ORDER_EXEC             = 0x0001,
306         RDP_RAIL_ORDER_ACTIVATE         = 0x0002,
307         RDP_RAIL_ORDER_SYSPARAM         = 0x0003,
308         RDP_RAIL_ORDER_SYSCOMMAND       = 0x0004,
309         RDP_RAIL_ORDER_HANDSHAKE        = 0x0005,
310         RDP_RAIL_ORDER_NOTIFY_EVENT     = 0x0006,
311         RDP_RAIL_ORDER_WINDOWMOVE       = 0x0008,
312         RDP_RAIL_ORDER_LOCALMOVESIZE    = 0x0009,
313         RDP_RAIL_ORDER_MINMAXINFO       = 0x000A,
314         RDP_RAIL_ORDER_CLIENTSTATUS     = 0x000B,
315         RDP_RAIL_ORDER_SYSMENU          = 0x000C,
316         RDP_RAIL_ORDER_LANGBARINFO      = 0x000D,
317         RDP_RAIL_ORDER_EXEC_RESULT      = 0x0080,
318         RDP_RAIL_ORDER_GET_APPID_REQ    = 0x000E,
319         RDP_RAIL_ORDER_GET_APPID_RESP   = 0x000F
320 };
321
322 enum RDP_EVENT_TYPE_RAIL
323 {
324         RDP_EVENT_TYPE_RAIL_CHANNEL_GET_SYSPARAMS = 1,
325         RDP_EVENT_TYPE_RAIL_CHANNEL_EXEC_RESULTS,
326         RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_SYSPARAM,
327         RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_MINMAXINFO,
328         RDP_EVENT_TYPE_RAIL_CHANNEL_SERVER_LOCALMOVESIZE,
329         RDP_EVENT_TYPE_RAIL_CHANNEL_APPID_RESP,
330         RDP_EVENT_TYPE_RAIL_CHANNEL_LANGBARINFO,
331
332         RDP_EVENT_TYPE_RAIL_CLIENT_SET_SYSPARAMS,
333         RDP_EVENT_TYPE_RAIL_CLIENT_EXEC_REMOTE_APP,
334         RDP_EVENT_TYPE_RAIL_CLIENT_ACTIVATE,
335         RDP_EVENT_TYPE_RAIL_CLIENT_SYSMENU,
336         RDP_EVENT_TYPE_RAIL_CLIENT_SYSCOMMAND,
337         RDP_EVENT_TYPE_RAIL_CLIENT_NOTIFY_EVENT,
338         RDP_EVENT_TYPE_RAIL_CLIENT_WINDOW_MOVE,
339         RDP_EVENT_TYPE_RAIL_CLIENT_APPID_REQ,
340         RDP_EVENT_TYPE_RAIL_CLIENT_LANGBARINFO
341 };
342
343 #endif /* __RAIL_GLOBAL_H */
344