2 * FreeRDP: A Remote Desktop Protocol Client
3 * Remote Applications Integrated Locally (RAIL)
5 * Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6 * Copyright 2011 Roman Barabanov <romanbarabanov@gmail.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #ifndef __RAIL_GLOBAL_H
22 #define __RAIL_GLOBAL_H
24 #include <freerdp/types.h>
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
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
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
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
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
65 /* Server System Parameters Update PDU */
66 #define SPI_SET_SCREEN_SAVE_ACTIVE 0x00000011
67 #define SPI_SET_SCREEN_SAVE_SECURE 0x00000077
69 /*Bit mask values for SPI_ parameters*/
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
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
95 /* Client Notify Event PDU */
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
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
113 /* Client Information PDU */
114 #define RAIL_CLIENTSTATUS_ALLOWLOCALMOVESIZE 0x00000001
115 #define RAIL_CLIENTSTATUS_AUTORECONNECT 0x00000002
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
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
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
153 struct _UNICODE_STRING
158 typedef struct _UNICODE_STRING UNICODE_STRING;
160 struct _HIGH_CONTRAST
163 uint32 colorSchemeLength;
164 UNICODE_STRING colorScheme;
166 typedef struct _HIGH_CONTRAST HIGH_CONTRAST;
170 struct _RAIL_HANDSHAKE_ORDER
174 typedef struct _RAIL_HANDSHAKE_ORDER RAIL_HANDSHAKE_ORDER;
176 struct _RAIL_CLIENT_STATUS_ORDER
180 typedef struct _RAIL_CLIENT_STATUS_ORDER RAIL_CLIENT_STATUS_ORDER;
182 struct _RAIL_EXEC_ORDER
185 UNICODE_STRING exeOrFile;
186 UNICODE_STRING workingDir;
187 UNICODE_STRING arguments;
189 typedef struct _RAIL_EXEC_ORDER RAIL_EXEC_ORDER;
191 struct _RAIL_EXEC_RESULT_ORDER
196 UNICODE_STRING exeOrFile;
198 typedef struct _RAIL_EXEC_RESULT_ORDER RAIL_EXEC_RESULT_ORDER;
200 struct _RAIL_SYSPARAM_ORDER
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;
215 typedef struct _RAIL_SYSPARAM_ORDER RAIL_SYSPARAM_ORDER;
217 struct _RAIL_ACTIVATE_ORDER
222 typedef struct _RAIL_ACTIVATE_ORDER RAIL_ACTIVATE_ORDER;
224 struct _RAIL_SYSMENU_ORDER
230 typedef struct _RAIL_SYSMENU_ORDER RAIL_SYSMENU_ORDER;
232 struct _RAIL_SYSCOMMAND_ORDER
237 typedef struct _RAIL_SYSCOMMAND_ORDER RAIL_SYSCOMMAND_ORDER;
239 struct _RAIL_NOTIFY_EVENT_ORDER
245 typedef struct _RAIL_NOTIFY_EVENT_ORDER RAIL_NOTIFY_EVENT_ORDER;
247 struct _RAIL_MINMAXINFO_ORDER
254 uint16 minTrackWidth;
255 uint16 minTrackHeight;
256 uint16 maxTrackWidth;
257 uint16 maxTrackHeight;
259 typedef struct _RAIL_MINMAXINFO_ORDER RAIL_MINMAXINFO_ORDER;
261 struct _RAIL_LOCALMOVESIZE_ORDER
264 boolean isMoveSizeStart;
269 typedef struct _RAIL_LOCALMOVESIZE_ORDER RAIL_LOCALMOVESIZE_ORDER;
271 struct _RAIL_WINDOWMOVE_ORDER
279 typedef struct _RAIL_WINDOWMOVE_ORDER RAIL_WINDOW_MOVE_ORDER;
281 struct _RAIL_GET_APPID_REQ_ORDER
285 typedef struct _RAIL_GET_APPID_REQ_ORDER RAIL_GET_APPID_REQ_ORDER;
287 struct _RAIL_GET_APPID_RESP_ORDER
290 UNICODE_STRING applicationId;
291 uint8 applicationIdBuffer[512];
293 typedef struct _RAIL_GET_APPID_RESP_ORDER RAIL_GET_APPID_RESP_ORDER;
295 struct _RAIL_LANGBARINFO_ORDER
297 uint32 languageBarStatus;
299 typedef struct _RAIL_LANGBARINFO_ORDER RAIL_LANGBAR_INFO_ORDER;
303 enum RDP_RAIL_PDU_TYPE
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
322 enum RDP_EVENT_TYPE_RAIL
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,
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
343 #endif /* __RAIL_GLOBAL_H */