FreeRDP
Loading...
Searching...
No Matches
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
30extern "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*/
82enum 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 */
149typedef 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 */
198typedef 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
316typedef struct
317{
318 UINT16 length;
319 BYTE* string;
321
322typedef struct
323{
324 UINT32 flags;
325 UINT32 colorSchemeLength;
326 RAIL_UNICODE_STRING colorScheme;
328
329/* RAIL Orders */
330
331typedef struct
332{
333 UINT32 buildNumber;
335
336typedef struct
337{
338 UINT32 buildNumber;
339 UINT32 railHandshakeFlags;
341
342typedef struct
343{
344 UINT32 flags;
346
347typedef struct
348{
349 UINT16 flags;
350 const char* RemoteApplicationProgram;
351 const char* RemoteApplicationWorkingDir;
352 const char* RemoteApplicationArguments;
354
355typedef struct
356{
357 UINT16 flags;
358 UINT16 execResult;
359 UINT32 rawResult;
360 RAIL_UNICODE_STRING exeOrFile;
362
363typedef struct
364{
365 UINT32 Flags;
366 UINT32 WaitTime;
367 UINT32 DelayTime;
368 UINT32 RepeatTime;
369 UINT32 BounceTime;
371
372typedef 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
392typedef struct
393{
394 UINT32 windowId;
395 BOOL enabled;
397
398typedef struct
399{
400 UINT32 windowId;
401 INT16 left;
402 INT16 top;
404
405typedef struct
406{
407 UINT32 windowId;
408 UINT16 command;
410
411typedef struct
412{
413 UINT32 windowId;
414 UINT32 notifyIconId;
415 UINT32 message;
417
418typedef 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
431typedef struct
432{
433 UINT32 windowId;
434 BOOL isMoveSizeStart;
435 UINT16 moveSizeType;
436 INT16 posX;
437 INT16 posY;
439
440typedef struct
441{
442 UINT32 windowId;
443 INT16 left;
444 INT16 top;
445 INT16 right;
446 INT16 bottom;
448
449typedef struct
450{
451 UINT32 windowId;
453
454typedef struct
455{
456 UINT32 windowId;
457 WCHAR applicationId[260];
459
460typedef struct
461{
462 UINT32 languageBarStatus;
464
465typedef struct
466{
467 UINT32 ImeState;
468 UINT32 ImeConvMode;
469 UINT32 ImeSentenceMode;
470 UINT32 KanaMode;
472
473typedef struct
474{
475 UINT32 windowIdMarker;
477
478typedef struct
479{
480 UINT32 windowId;
481 BOOL cloak;
482} RAIL_CLOAK;
483
484typedef struct
485{
486 UINT32 active;
488
489typedef struct
490{
491 UINT32 TaskbarMessage;
492 UINT32 WindowIdTab;
493 UINT32 Body;
495
496typedef struct
497{
498 UINT32 ProfileType;
499 UINT32 LanguageID;
500 GUID LanguageProfileCLSID;
501 GUID ProfileGUID;
502 UINT32 KeyboardLayout;
504
505typedef struct
506{
507 UINT32 windowId;
508 INT16 left;
509 INT16 top;
510 INT16 right;
511 INT16 bottom;
513
514typedef 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
552typedef 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 */