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