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