FreeRDP
rail.h
1 
21 #ifndef FREERDP_RAIL_GLOBAL_H
22 #define FREERDP_RAIL_GLOBAL_H
23 
24 #include <winpr/windows.h>
25 
26 #include <freerdp/api.h>
27 #include <freerdp/types.h>
28 
29 #ifdef __cplusplus
30 extern "C"
31 {
32 #endif
33 
34 #define RAIL_SVC_CHANNEL_NAME "rail"
35 
36 /* DEPRECATED: RAIL PDU flags use the spec conformant naming with TS_ prefix */
37 #if defined(WITH_FREERDP_DEPRECATED)
38 #define RAIL_EXEC_FLAG_EXPAND_WORKINGDIRECTORY 0x0001
39 #define RAIL_EXEC_FLAG_TRANSLATE_FILES 0x0002
40 #define RAIL_EXEC_FLAG_FILE 0x0004
41 #define RAIL_EXEC_FLAG_EXPAND_ARGUMENTS 0x0008
42 #endif
43 
44 /* RAIL PDU flags */
45 #define TS_RAIL_EXEC_FLAG_EXPAND_WORKINGDIRECTORY 0x0001
46 #define TS_RAIL_EXEC_FLAG_TRANSLATE_FILES 0x0002
47 #define TS_RAIL_EXEC_FLAG_FILE 0x0004
48 #define TS_RAIL_EXEC_FLAG_EXPAND_ARGUMENTS 0x0008
49 #define TS_RAIL_EXEC_FLAG_APP_USER_MODEL_ID 0x0010
50 
51 /* Notification Icon Balloon Tooltip */
52 #define NIIF_NONE 0x00000000
53 #define NIIF_INFO 0x00000001
54 #define NIIF_WARNING 0x00000002
55 #define NIIF_ERROR 0x00000003
56 #define NIIF_NOSOUND 0x00000010
57 #define NIIF_LARGE_ICON 0x00000020
58 
59 /* Client Execute PDU Flags */
60 #define RAIL_EXEC_FLAG_EXPAND_WORKING_DIRECTORY 0x0001
61 #define RAIL_EXEC_FLAG_TRANSLATE_FILES 0x0002
62 #define RAIL_EXEC_FLAG_FILE 0x0004
63 #define RAIL_EXEC_FLAG_EXPAND_ARGUMENTS 0x0008
64 #define RAIL_EXEC_FLAG_APP_USER_MODEL_ID 0x0010
65 
66 /* Server Execute Result PDU */
67 #define RAIL_EXEC_S_OK 0x0000
68 #define RAIL_EXEC_E_HOOK_NOT_LOADED 0x0001
69 #define RAIL_EXEC_E_DECODE_FAILED 0x0002
70 #define RAIL_EXEC_E_NOT_IN_ALLOWLIST 0x0003
71 #define RAIL_EXEC_E_FILE_NOT_FOUND 0x0005
72 #define RAIL_EXEC_E_FAIL 0x0006
73 #define RAIL_EXEC_E_SESSION_LOCKED 0x0007
74 
75 /* DEPRECATED: Server System Parameters Update PDU
76  * use the spec conformant naming scheme from winpr/windows.h
77  */
78 #define SPI_SET_SCREEN_SAVE_ACTIVE 0x00000011
79 #define SPI_SET_SCREEN_SAVE_SECURE 0x00000077
80 
81 /*Bit mask values for SPI_ parameters*/
82 enum SPI_MASK
83 {
84  SPI_MASK_SET_DRAG_FULL_WINDOWS = 0x00000001,
85  SPI_MASK_SET_KEYBOARD_CUES = 0x00000002,
86  SPI_MASK_SET_KEYBOARD_PREF = 0x00000004,
87  SPI_MASK_SET_MOUSE_BUTTON_SWAP = 0x00000008,
88  SPI_MASK_SET_WORK_AREA = 0x00000010,
89  SPI_MASK_DISPLAY_CHANGE = 0x00000020,
90  SPI_MASK_TASKBAR_POS = 0x00000040,
91  SPI_MASK_SET_HIGH_CONTRAST = 0x00000080,
92  SPI_MASK_SET_SCREEN_SAVE_ACTIVE = 0x00000100,
93  SPI_MASK_SET_SET_SCREEN_SAVE_SECURE = 0x00000200,
94  SPI_MASK_SET_CARET_WIDTH = 0x00000400,
95  SPI_MASK_SET_STICKY_KEYS = 0x00000800,
96  SPI_MASK_SET_TOGGLE_KEYS = 0x00001000,
97  SPI_MASK_SET_FILTER_KEYS = 0x00002000
98 };
99 
100 /* Client System Parameters Update PDU
101  * some are defined in winuser.h (winpr/windows.h wrapper)
102  */
103 #define SPI_SET_DRAG_FULL_WINDOWS 0x00000025
104 #define SPI_SET_KEYBOARD_CUES 0x0000100B
105 #define SPI_SET_KEYBOARD_PREF 0x00000045
106 #define SPI_SET_MOUSE_BUTTON_SWAP 0x00000021
107 #define SPI_SET_WORK_AREA 0x0000002F
108 #define SPI_DISPLAY_CHANGE 0x0000F001
109 #define SPI_TASKBAR_POS 0x0000F000
110 #define SPI_SET_HIGH_CONTRAST 0x00000043
111 
112 /* Client System Command PDU */
113 #define SC_SIZE 0xF000
114 #define SC_MOVE 0xF010
115 #define SC_MINIMIZE 0xF020
116 #define SC_MAXIMIZE 0xF030
117 #define SC_CLOSE 0xF060
118 #define SC_KEYMENU 0xF100
119 #define SC_RESTORE 0xF120
120 #define SC_DEFAULT 0xF160
121 
122 /* Client Notify Event PDU */
123 #ifndef _WIN32
124 #define WM_LBUTTONDOWN 0x00000201
125 #define WM_LBUTTONUP 0x00000202
126 #define WM_RBUTTONDOWN 0x00000204
127 #define WM_RBUTTONUP 0x00000205
128 #define WM_CONTEXTMENU 0x0000007b
129 #define WM_LBUTTONDBLCLK 0x00000203
130 #define WM_RBUTTONDBLCLK 0x00000206
131 
132 #define NIN_SELECT 0x00000400
133 #define NIN_KEYSELECT 0x00000401
134 #define NIN_BALLOONSHOW 0x00000402
135 #define NIN_BALLOONHIDE 0x00000403
136 #define NIN_BALLOONTIMEOUT 0x00000404
137 #define NIN_BALLOONUSERCLICK 0x00000405
138 #else
139 #include <shellapi.h>
140 #endif
141 
142 /* DEPRECATED: Client Information PDU
143  * use the spec conformant naming scheme TS_ below
144  */
145 #define RAIL_CLIENTSTATUS_ALLOWLOCALMOVESIZE 0x00000001
146 #define RAIL_CLIENTSTATUS_AUTORECONNECT 0x00000002
147 
148 /* Client Information PDU */
149 typedef enum
150 {
151  TS_RAIL_CLIENTSTATUS_ALLOWLOCALMOVESIZE = 0x00000001,
152  TS_RAIL_CLIENTSTATUS_AUTORECONNECT = 0x00000002,
153  TS_RAIL_CLIENTSTATUS_ZORDER_SYNC = 0x00000004,
154  TS_RAIL_CLIENTSTATUS_WINDOW_RESIZE_MARGIN_SUPPORTED = 0x00000010,
155  TS_RAIL_CLIENTSTATUS_HIGH_DPI_ICONS_SUPPORTED = 0x00000020,
156  TS_RAIL_CLIENTSTATUS_APPBAR_REMOTING_SUPPORTED = 0x00000040,
157  TS_RAIL_CLIENTSTATUS_POWER_DISPLAY_REQUEST_SUPPORTED = 0x00000080,
158  TS_RAIL_CLIENTSTATUS_GET_APPID_RESPONSE_EX_SUPPORTED = 0x00000100,
159  TS_RAIL_CLIENTSTATUS_BIDIRECTIONAL_CLOAK_SUPPORTED = 0x00000200,
160  TS_RAIL_CLIENTSTATUS_SUPPRESS_ICON_ORDERS = 0x00000400
161 } CLIENT_INFO_PDU;
162 
163 /* Server Move/Size Start PDU */
164 #define RAIL_WMSZ_LEFT 0x0001
165 #define RAIL_WMSZ_RIGHT 0x0002
166 #define RAIL_WMSZ_TOP 0x0003
167 #define RAIL_WMSZ_TOPLEFT 0x0004
168 #define RAIL_WMSZ_TOPRIGHT 0x0005
169 #define RAIL_WMSZ_BOTTOM 0x0006
170 #define RAIL_WMSZ_BOTTOMLEFT 0x0007
171 #define RAIL_WMSZ_BOTTOMRIGHT 0x0008
172 #define RAIL_WMSZ_MOVE 0x0009
173 #define RAIL_WMSZ_KEYMOVE 0x000A
174 #define RAIL_WMSZ_KEYSIZE 0x000B
175 
176 /* Language Bar Information PDU */
177 #define TF_SFT_SHOWNORMAL 0x00000001
178 #define TF_SFT_DOCK 0x00000002
179 #define TF_SFT_MINIMIZED 0x00000004
180 #define TF_SFT_HIDDEN 0x00000008
181 #define TF_SFT_NOTRANSPARENCY 0x00000010
182 #define TF_SFT_LOWTRANSPARENCY 0x00000020
183 #define TF_SFT_HIGHTRANSPARENCY 0x00000040
184 #define TF_SFT_LABELS 0x00000080
185 #define TF_SFT_NOLABELS 0x00000100
186 #define TF_SFT_EXTRAICONSONMINIMIZED 0x00000200
187 #define TF_SFT_NOEXTRAICONSONMINIMIZED 0x00000400
188 #define TF_SFT_DESKBAND 0x00000800
189 
190 /* DEPRECATED: Extended Handshake Flags
191  * use the spec conformant naming scheme TS_ below
192  */
193 #define RAIL_ORDER_HANDSHAKEEX_FLAGS_HIDEF 0x00000001
194 #define RAIL_ORDER_HANDSHAKE_EX_FLAGS_EXTENDED_SPI_SUPPORTED 0x00000002
195 #define RAIL_ORDER_HANDSHAKE_EX_FLAGS_SNAP_ARRANGE_SUPPORTED 0x00000004
196 
197 /* Extended Handshake Flags */
198 typedef enum
199 {
200  TS_RAIL_ORDER_HANDSHAKEEX_FLAGS_HIDEF = 0x00000001,
201  TS_RAIL_ORDER_HANDSHAKE_EX_FLAGS_EXTENDED_SPI_SUPPORTED = 0x00000002,
202  TS_RAIL_ORDER_HANDSHAKE_EX_FLAGS_SNAP_ARRANGE_SUPPORTED = 0x00000004,
203  TS_RAIL_ORDER_HANDSHAKE_EX_FLAGS_TEXT_SCALE_SUPPORTED = 0x00000008,
204  TS_RAIL_ORDER_HANDSHAKE_EX_FLAGS_CARET_BLINK_SUPPORTED = 0x00000010,
205  TS_RAIL_ORDER_HANDSHAKE_EX_FLAGS_EXTENDED_SPI_2_SUPPORTED = 0x00000020
206 } EXTENDED_HANDSHAKE_FLAGS;
207 /* Language Profile Information Flags */
208 #define TF_PROFILETYPE_INPUTPROCESSOR 0x00000001
209 #define TF_PROFILETYPE_KEYBOARDLAYOUT 0x00000002
210 
211 /* LanguageProfileCLSID and ProfileGUID */
212 #ifndef _WIN32
213 #define GUID_NULL \
214  { \
215  0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 \
216  }
217 #else
218 #include <cguid.h>
219 #endif
220 #define GUID_MSIME_JPN \
221  { \
222  0x03B5835F, 0xF03C, 0x411B, 0x9C, 0xE2, 0xAA, 0x23, 0xE1, 0x17, 0x1E, 0x36 \
223  }
224 #define GUID_MSIME_KOR \
225  { \
226  0xA028AE76, 0x01B1, 0x46C2, 0x99, 0xC4, 0xAC, 0xD9, 0x85, 0x8A, 0xE0, 0x02 \
227  }
228 #define GUID_CHSIME \
229  { \
230  0x81D4E9C9, 0x1D3B, 0x41BC, 0x9E, 0x6C, 0x4B, 0x40, 0xBF, 0x79, 0xE3, 0x5E \
231  }
232 #define GUID_CHTIME \
233  { \
234  0x531FDEBF, 0x9B4C, 0x4A43, 0xA2, 0xAA, 0x96, 0x0E, 0x8F, 0xCD, 0xC7, 0x32 \
235  }
236 #define GUID_PROFILE_NEWPHONETIC \
237  { \
238  0xB2F9C502, 0x1742, 0x11D4, 0x97, 0x90, 0x00, 0x80, 0xC8, 0x82, 0x68, 0x7E \
239  }
240 #define GUID_PROFILE_CHANGJIE \
241  { \
242  0x4BDF9F03, 0xC7D3, 0x11D4, 0xB2, 0xAB, 0x00, 0x80, 0xC8, 0x82, 0x68, 0x7E \
243  }
244 #define GUID_PROFILE_QUICK \
245  { \
246  0x6024B45F, 0x5C54, 0x11D4, 0xB9, 0x21, 0x00, 0x80, 0xC8, 0x82, 0x68, 0x7E \
247  }
248 #define GUID_PROFILE_CANTONESE \
249  { \
250  0x0AEC109C, 0x7E96, 0x11D4, 0xB2, 0xEF, 0x00, 0x80, 0xC8, 0x82, 0x68, 0x7E \
251  }
252 #define GUID_PROFILE_PINYIN \
253  { \
254  0xF3BA9077, 0x6C7E, 0x11D4, 0x97, 0xFA, 0x00, 0x80, 0xC8, 0x82, 0x68, 0x7E \
255  }
256 #define GUID_PROFILE_SIMPLEFAST \
257  { \
258  0xFA550B04, 0x5AD7, 0x411F, 0xA5, 0xAC, 0xCA, 0x03, 0x8E, 0xC5, 0x15, 0xD7 \
259  }
260 #define GUID_GUID_PROFILE_MSIME_JPN \
261  { \
262  0xA76C93D9, 0x5523, 0x4E90, 0xAA, 0xFA, 0x4D, 0xB1, 0x12, 0xF9, 0xAC, 0x76 \
263  }
264 #define GUID_PROFILE_MSIME_KOR \
265  { \
266  0xB5FE1F02, 0xD5F2, 0x4445, 0x9C, 0x03, 0xC5, 0x68, 0xF2, 0x3C, 0x99, 0xA1 \
267  }
268 
269 /* ImeState */
270 #define IME_STATE_CLOSED 0x00000000
271 #define IME_STATE_OPEN 0x00000001
272 
273 /* ImeConvMode */
274 #if !defined(_IME_CMODES_) && !defined(__MINGW32__)
275 #define IME_CMODE_NATIVE 0x00000001
276 #define IME_CMODE_KATAKANA 0x00000002
277 #define IME_CMODE_FULLSHAPE 0x00000008
278 #define IME_CMODE_ROMAN 0x00000010
279 #define IME_CMODE_CHARCODE 0x00000020
280 #define IME_CMODE_HANJACONVERT 0x00000040
281 #define IME_CMODE_SOFTKBD 0x00000080
282 #define IME_CMODE_NOCONVERSION 0x00000100
283 #define IME_CMODE_EUDC 0x00000200
284 #define IME_CMODE_SYMBOL 0x00000400
285 #define IME_CMODE_FIXED 0x00000800
286 #endif
287 
288 /* ImeSentenceMode */
289 #ifndef _IMM_
290 #define IME_SMODE_NONE 0x00000000
291 #define IME_SMODE_PLURALCASE 0x00000001
292 #define IME_SMODE_SINGLECONVERT 0x00000002
293 #define IME_SMODE_AUTOMATIC 0x00000004
294 #define IME_SMODE_PHRASEPREDICT 0x00000008
295 #define IME_SMODE_CONVERSATION 0x00000010
296 #endif
297 
298 /* KANAMode */
299 #define KANA_MODE_OFF 0x00000000
300 #define KANA_MODE_ON 0x00000001
301 
302 /* Taskbar */
303 #define RAIL_TASKBAR_MSG_TAB_REGISTER 0x00000001
304 #define RAIL_TASKBAR_MSG_TAB_UNREGISTER 0x00000002
305 #define RAIL_TASKBAR_MSG_TAB_ORDER 0x00000003
306 #define RAIL_TASKBAR_MSG_TAB_ACTIVE 0x00000004
307 #define RAIL_TASKBAR_MSG_TAB_PROPERTIES 0x00000005
308 
309 /* Taskbar body */
310 #define RAIL_TASKBAR_MSG_TAB_REGISTER 0x00000001
311 #define RAIL_TASKBAR_MSG_TAB_UNREGISTER 0x00000002
312 #define RAIL_TASKBAR_MSG_TAB_ORDER 0x00000003
313 #define RAIL_TASKBAR_MSG_TAB_ACTIVE 0x00000004
314 #define RAIL_TASKBAR_MSG_TAB_PROPERTIES 0x00000005
315 
316 typedef struct
317 {
318  UINT16 length;
319  BYTE* string;
321 
322 typedef struct
323 {
324  UINT32 flags;
325  UINT32 colorSchemeLength;
326  RAIL_UNICODE_STRING colorScheme;
328 
329 /* RAIL Orders */
330 
331 typedef struct
332 {
333  UINT32 buildNumber;
335 
336 typedef struct
337 {
338  UINT32 buildNumber;
339  UINT32 railHandshakeFlags;
341 
342 typedef struct
343 {
344  UINT32 flags;
346 
347 typedef struct
348 {
349  UINT16 flags;
350  const char* RemoteApplicationProgram;
351  const char* RemoteApplicationWorkingDir;
352  const char* RemoteApplicationArguments;
354 
355 typedef struct
356 {
357  UINT16 flags;
358  UINT16 execResult;
359  UINT32 rawResult;
360  RAIL_UNICODE_STRING exeOrFile;
362 
363 typedef struct
364 {
365  UINT32 Flags;
366  UINT32 WaitTime;
367  UINT32 DelayTime;
368  UINT32 RepeatTime;
369  UINT32 BounceTime;
370 } TS_FILTERKEYS;
371 
372 typedef struct
373 {
374  UINT32 param;
375  UINT32 params;
376  BOOL dragFullWindows;
377  BOOL keyboardCues;
378  BOOL keyboardPref;
379  BOOL mouseButtonSwap;
380  RECTANGLE_16 workArea;
381  RECTANGLE_16 displayChange;
382  RECTANGLE_16 taskbarPos;
383  RAIL_HIGH_CONTRAST highContrast;
384  UINT32 caretWidth;
385  UINT32 stickyKeys;
386  UINT32 toggleKeys;
387  TS_FILTERKEYS filterKeys;
388  BOOL setScreenSaveActive;
389  BOOL setScreenSaveSecure;
391 
392 typedef struct
393 {
394  UINT32 windowId;
395  BOOL enabled;
397 
398 typedef struct
399 {
400  UINT32 windowId;
401  INT16 left;
402  INT16 top;
404 
405 typedef struct
406 {
407  UINT32 windowId;
408  UINT16 command;
410 
411 typedef struct
412 {
413  UINT32 windowId;
414  UINT32 notifyIconId;
415  UINT32 message;
417 
418 typedef struct
419 {
420  UINT32 windowId;
421  INT16 maxWidth;
422  INT16 maxHeight;
423  INT16 maxPosX;
424  INT16 maxPosY;
425  INT16 minTrackWidth;
426  INT16 minTrackHeight;
427  INT16 maxTrackWidth;
428  INT16 maxTrackHeight;
430 
431 typedef struct
432 {
433  UINT32 windowId;
434  BOOL isMoveSizeStart;
435  UINT16 moveSizeType;
436  INT16 posX;
437  INT16 posY;
439 
440 typedef struct
441 {
442  UINT32 windowId;
443  INT16 left;
444  INT16 top;
445  INT16 right;
446  INT16 bottom;
448 
449 typedef struct
450 {
451  UINT32 windowId;
453 
454 typedef struct
455 {
456  UINT32 windowId;
457  WCHAR applicationId[260];
459 
460 typedef struct
461 {
462  UINT32 languageBarStatus;
464 
465 typedef struct
466 {
467  UINT32 ImeState;
468  UINT32 ImeConvMode;
469  UINT32 ImeSentenceMode;
470  UINT32 KanaMode;
472 
473 typedef struct
474 {
475  UINT32 windowIdMarker;
477 
478 typedef struct
479 {
480  UINT32 windowId;
481  BOOL cloak;
482 } RAIL_CLOAK;
483 
484 typedef struct
485 {
486  UINT32 active;
488 
489 typedef struct
490 {
491  UINT32 TaskbarMessage;
492  UINT32 WindowIdTab;
493  UINT32 Body;
495 
496 typedef struct
497 {
498  UINT32 ProfileType;
499  UINT32 LanguageID;
500  GUID LanguageProfileCLSID;
501  GUID ProfileGUID;
502  UINT32 KeyboardLayout;
504 
505 typedef struct
506 {
507  UINT32 windowId;
508  INT16 left;
509  INT16 top;
510  INT16 right;
511  INT16 bottom;
513 
514 typedef struct
515 {
516  UINT32 windowID;
517  WCHAR applicationID[520 / sizeof(WCHAR)];
518  UINT32 processId;
519  WCHAR processImageName[520 / sizeof(WCHAR)];
521 
522 /* DEPRECATED: RAIL Constants
523  * use the spec conformant naming scheme TS_ below
524  */
525 
526 #define RDP_RAIL_ORDER_EXEC 0x0001
527 #define RDP_RAIL_ORDER_ACTIVATE 0x0002
528 #define RDP_RAIL_ORDER_SYSPARAM 0x0003
529 #define RDP_RAIL_ORDER_SYSCOMMAND 0x0004
530 #define RDP_RAIL_ORDER_HANDSHAKE 0x0005
531 #define RDP_RAIL_ORDER_NOTIFY_EVENT 0x0006
532 #define RDP_RAIL_ORDER_WINDOWMOVE 0x0008
533 #define RDP_RAIL_ORDER_LOCALMOVESIZE 0x0009
534 #define RDP_RAIL_ORDER_MINMAXINFO 0x000A
535 #define RDP_RAIL_ORDER_CLIENTSTATUS 0x000B
536 #define RDP_RAIL_ORDER_SYSMENU 0x000C
537 #define RDP_RAIL_ORDER_LANGBARINFO 0x000D
538 #define RDP_RAIL_ORDER_EXEC_RESULT 0x0080
539 #define RDP_RAIL_ORDER_GET_APPID_REQ 0x000E
540 #define RDP_RAIL_ORDER_GET_APPID_RESP 0x000F
541 #define RDP_RAIL_ORDER_LANGUAGEIMEINFO 0x0011
542 #define RDP_RAIL_ORDER_COMPARTMENTINFO 0x0012
543 #define RDP_RAIL_ORDER_HANDSHAKE_EX 0x0013
544 #define RDP_RAIL_ORDER_ZORDER_SYNC 0x0014
545 #define RDP_RAIL_ORDER_CLOAK 0x0015
546 #define RDP_RAIL_ORDER_POWER_DISPLAY_REQUEST 0x0016
547 #define RDP_RAIL_ORDER_SNAP_ARRANGE 0x0017
548 #define RDP_RAIL_ORDER_GET_APPID_RESP_EX 0x0018
549 
550 /* RAIL Constants */
551 
552 typedef enum
553 {
554  TS_RAIL_ORDER_EXEC = 0x0001,
555  TS_RAIL_ORDER_ACTIVATE = 0x0002,
556  TS_RAIL_ORDER_SYSPARAM = 0x0003,
557  TS_RAIL_ORDER_SYSCOMMAND = 0x0004,
558  TS_RAIL_ORDER_HANDSHAKE = 0x0005,
559  TS_RAIL_ORDER_NOTIFY_EVENT = 0x0006,
560  TS_RAIL_ORDER_WINDOWMOVE = 0x0008,
561  TS_RAIL_ORDER_LOCALMOVESIZE = 0x0009,
562  TS_RAIL_ORDER_MINMAXINFO = 0x000A,
563  TS_RAIL_ORDER_CLIENTSTATUS = 0x000B,
564  TS_RAIL_ORDER_SYSMENU = 0x000C,
565  TS_RAIL_ORDER_LANGBARINFO = 0x000D,
566  TS_RAIL_ORDER_GET_APPID_REQ = 0x000E,
567  TS_RAIL_ORDER_GET_APPID_RESP = 0x000F,
568  TS_RAIL_ORDER_TASKBARINFO = 0x0010,
569  TS_RAIL_ORDER_LANGUAGEIMEINFO = 0x0011,
570  TS_RAIL_ORDER_COMPARTMENTINFO = 0x0012,
571  TS_RAIL_ORDER_HANDSHAKE_EX = 0x0013,
572  TS_RAIL_ORDER_ZORDER_SYNC = 0x0014,
573  TS_RAIL_ORDER_CLOAK = 0x0015,
574  TS_RAIL_ORDER_POWER_DISPLAY_REQUEST = 0x0016,
575  TS_RAIL_ORDER_SNAP_ARRANGE = 0x0017,
576  TS_RAIL_ORDER_GET_APPID_RESP_EX = 0x0018,
577  TS_RAIL_ORDER_TEXTSCALEINFO = 0x0019,
578  TS_RAIL_ORDER_CARETBLINKINFO = 0x001A,
579  TS_RAIL_ORDER_EXEC_RESULT = 0x0080
580 } ORDER_TYPE;
581 
582  FREERDP_API BOOL rail_read_unicode_string(wStream* s, RAIL_UNICODE_STRING* unicode_string);
583  FREERDP_API BOOL utf8_string_to_rail_string(const char* string,
584  RAIL_UNICODE_STRING* unicode_string);
585 
595  FREERDP_API const char* rail_handshake_ex_flags_to_string(UINT32 flags, char* buffer,
596  size_t len);
597 
598 #ifdef __cplusplus
599 }
600 #endif
601 
602 #endif /* FREERDP_RAIL_GLOBAL_H */