1 /* 2 rdesktop: A Remote Desktop Protocol client. 3 Miscellaneous protocol constants 4 Copyright (C) Matthew Chapman 1999-2008 5 Copyright 2016 Alexander Zakharov <uglym8@gmail.com> 6 Copyright 2017-2018 Henrik Andersson <hean01@cendio.se> for Cendio AB 7 8 This program is free software: you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation, either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program. If not, see <http://www.gnu.org/licenses/>. 20 */ 21 22 #ifndef _CONSTANTS_H 23 #define _CONSTANTS_H 24 25 /* TCP port for Remote Desktop Protocol */ 26 #define TCP_PORT_RDP 3389 27 28 #define DEFAULT_CODEPAGE "UTF-8" 29 #define WINDOWS_CODEPAGE "UTF-16LE" 30 31 /* T-REC-T.123-200701, section 8 */ 32 #define T123_HEADER_VERSION 0x3 33 34 /* [MS-RDPBCGR] 2.2.9.1.2 */ 35 #define FASTPATH_OUTPUT_ACTION_FASTPATH 0x0 36 #define FASTPATH_OUTPUT_ACTION_X224 T123_HEADER_VERSION 37 38 #define FASTPATH_OUTPUT_SECURE_CHECKSUM 0x1 39 #define FASTPATH_OUTPUT_ENCRYPTED 0x2 40 41 /* [MS-RDPBCGR] 2.2.9.1.2.1 */ 42 /* adjusted for position in updateHeader */ 43 #define FASTPATH_UPDATETYPE_ORDERS 0x0 44 #define FASTPATH_UPDATETYPE_BITMAP 0x1 45 #define FASTPATH_UPDATETYPE_PALETTE 0x2 46 #define FASTPATH_UPDATETYPE_SYNCHRONIZE 0x3 47 #define FASTPATH_UPDATETYPE_SURFCMDS 0x4 48 #define FASTPATH_UPDATETYPE_PTR_NULL 0x5 49 #define FASTPATH_UPDATETYPE_PTR_DEFAULT 0x6 50 #define FASTPATH_UPDATETYPE_PTR_POSITION 0x8 51 #define FASTPATH_UPDATETYPE_COLOR 0x9 52 #define FASTPATH_UPDATETYPE_CACHED 0xA 53 #define FASTPATH_UPDATETYPE_POINTER 0xB 54 55 #define FASTPATH_FRAGMENT_SINGLE (0x0 << 4) 56 #define FASTPATH_FRAGMENT_LAST (0x1 << 4) 57 #define FASTPATH_FRAGMENT_FIRST (0x2 << 4) 58 #define FASTPATH_FRAGMENT_NEXT (0x3 << 4) 59 60 #define FASTPATH_OUTPUT_COMPRESSION_USED (0x2 << 6) 61 62 #define RDESKTOP_FASTPATH_MULTIFRAGMENT_MAX_SIZE 65535 63 64 /* ISO PDU codes */ 65 enum ISO_PDU_CODE 66 { 67 ISO_PDU_CR = 0xE0, /* Connection Request */ 68 ISO_PDU_CC = 0xD0, /* Connection Confirm */ 69 ISO_PDU_DR = 0x80, /* Disconnect Request */ 70 ISO_PDU_DT = 0xF0, /* Data */ 71 ISO_PDU_ER = 0x70 /* Error */ 72 }; 73 74 /* RDP protocol negotiating constants */ 75 enum RDP_NEG_TYPE_CODE 76 { 77 RDP_NEG_REQ = 1, 78 RDP_NEG_RSP = 2, 79 RDP_NEG_FAILURE = 3 80 }; 81 82 enum RDP_NEG_REQ_CODE 83 { 84 PROTOCOL_RDP = 0, 85 PROTOCOL_SSL = 1, 86 PROTOCOL_HYBRID = 2 87 }; 88 89 enum RDP_NEG_FAILURE_CODE 90 { 91 SSL_REQUIRED_BY_SERVER = 1, 92 SSL_NOT_ALLOWED_BY_SERVER = 2, 93 SSL_CERT_NOT_ON_SERVER = 3, 94 INCONSISTENT_FLAGS = 4, 95 HYBRID_REQUIRED_BY_SERVER = 5, 96 SSL_WITH_USER_AUTH_REQUIRED_BY_SERVER = 6 97 }; 98 99 /* MCS PDU codes */ 100 enum MCS_PDU_TYPE 101 { 102 MCS_EDRQ = 1, /* Erect Domain Request */ 103 MCS_DPUM = 8, /* Disconnect Provider Ultimatum */ 104 MCS_AURQ = 10, /* Attach User Request */ 105 MCS_AUCF = 11, /* Attach User Confirm */ 106 MCS_CJRQ = 14, /* Channel Join Request */ 107 MCS_CJCF = 15, /* Channel Join Confirm */ 108 MCS_SDRQ = 25, /* Send Data Request */ 109 MCS_SDIN = 26 /* Send Data Indication */ 110 }; 111 112 #define MCS_CONNECT_INITIAL 0x7f65 113 #define MCS_CONNECT_RESPONSE 0x7f66 114 115 #define BER_TAG_BOOLEAN 1 116 #define BER_TAG_INTEGER 2 117 #define BER_TAG_OCTET_STRING 4 118 #define BER_TAG_RESULT 10 119 #define BER_TAG_SEQUENCE 16 120 #define BER_TAG_CONSTRUCTED 0x20 121 #define BER_TAG_CTXT_SPECIFIC 0x80 122 123 #define MCS_TAG_DOMAIN_PARAMS 0x30 124 125 #define MCS_GLOBAL_CHANNEL 1003 126 #define MCS_USERCHANNEL_BASE 1001 127 128 /* ITU-T Rec. T.125, Reason enumeration used with Disconnect Provider 129 Ultimatum, see mcs_send_dpu(reason) */ 130 enum MCS_DPU_REASON 131 { 132 RN_DOMAIN_DISCONNECTED = 0, 133 RN_PROVIDER_INITIATED, 134 RN_TOKEN_PURGED, 135 RN_USER_REQUESTED, 136 RN_CHANNEL_PURGED, 137 }; 138 139 /* RDP secure transport constants */ 140 #define SEC_RANDOM_SIZE 32 141 #define SEC_MODULUS_SIZE 64 142 #define SEC_MAX_MODULUS_SIZE 256 143 #define SEC_PADDING_SIZE 8 144 #define SEC_EXPONENT_SIZE 4 145 146 /* TS_SECURITY_HEADER.flags */ 147 #define SEC_EXCHANGE_PKT 0x0001 148 #define SEC_TRANSPORT_REQ 0x0002 149 #define RDP_SEC_TRANSPORT_RSP 0x0004 150 #define SEC_ENCRYPT 0x0008 151 #define SEC_RESET_SEQNO 0x0010 152 #define SEC_IGNORE_SEQNO 0x0020 153 #define SEC_INFO_PKT 0x0040 154 #define SEC_LICENSE_PKT 0x0080 155 #define SEC_LICENSE_ENCRYPT_CS 0x0200 156 #define SEC_LICENSE_ENCRYPT_SC 0x0200 157 #define SEC_REDIRECTION_PKT 0x0400 158 #define SEC_SECURE_CHECKSUM 0x0800 159 #define SEC_AUTODETECT_REQ 0x1000 160 #define SEC_AUTODETECT_RSP 0x2000 161 #define SEC_HEARTBEAT 0x4000 162 #define SEC_FLAGSHI_VALID 0x8000 163 164 #define SEC_TAG_SRV_INFO 0x0c01 165 #define SEC_TAG_SRV_CRYPT 0x0c02 166 #define SEC_TAG_SRV_CHANNELS 0x0c03 167 168 #define CS_CORE 0xc001 169 #define CS_SECURITY 0xc002 170 #define CS_NET 0xc003 171 #define CS_CLUSTER 0xc004 172 173 #define SEC_TAG_PUBKEY 0x0006 174 #define SEC_TAG_KEYSIG 0x0008 175 176 #define SEC_RSA_MAGIC 0x31415352 /* RSA1 */ 177 178 /* Client cluster constants */ 179 #define SEC_CC_REDIRECTION_SUPPORTED 0x00000001 180 #define SEC_CC_REDIRECT_SESSIONID_FIELD_VALID 0x00000002 181 #define SEC_CC_REDIRECTED_SMARTCARD 0x00000040 182 #define SEC_CC_REDIRECT_VERSION_MASK 0x0000003c 183 184 #define SEC_CC_REDIRECT_VERSION_3 0x02 185 #define SEC_CC_REDIRECT_VERSION_4 0x03 186 #define SEC_CC_REDIRECT_VERSION_5 0x04 187 #define SEC_CC_REDIRECT_VERSION_6 0x05 188 189 /* RDP licensing constants */ 190 #define LICENCE_TOKEN_SIZE 10 191 #define LICENCE_HWID_SIZE 20 192 #define LICENCE_SIGNATURE_SIZE 16 193 194 #define LICENCE_TAG_REQUEST 0x01 195 #define LICENCE_TAG_PLATFORM_CHALLENGE 0x02 196 #define LICENCE_TAG_NEW_LICENCE 0x03 197 #define LICENCE_TAG_UPGRADE_LICENCE 0x04 198 #define LICENCE_TAG_LICENCE_INFO 0x12 199 #define LICENCE_TAG_NEW_LICENCE_REQUEST 0x13 200 #define LICENCE_TAG_PLATFORM_CHALLENGE_RESPONSE 0x15 201 #define LICENCE_TAG_ERROR_ALERT 0xff 202 203 #define BB_CLIENT_USER_NAME_BLOB 0x000f 204 #define BB_CLIENT_MACHINE_NAME_BLOB 0x0010 205 206 /* RDP PDU codes */ 207 enum RDP_PDU_TYPE 208 { 209 RDP_PDU_DEMAND_ACTIVE = 1, 210 RDP_PDU_CONFIRM_ACTIVE = 3, 211 RDP_PDU_REDIRECT = 4, /* Standard Server Redirect */ 212 RDP_PDU_DEACTIVATE = 6, 213 RDP_PDU_DATA = 7, 214 RDP_PDU_ENHANCED_REDIRECT = 10 /* Enhanced Server Redirect */ 215 }; 216 217 enum RDP_DATA_PDU_TYPE 218 { 219 RDP_DATA_PDU_UPDATE = 0x02, /* PDUTYPE2_UPDATE */ 220 RDP_DATA_PDU_CONTROL = 0x14, /* PDUTYPE2_CONTROL */ 221 RDP_DATA_PDU_POINTER = 0x1b, /* PDUTYPE2_POINTER */ 222 RDP_DATA_PDU_INPUT = 0x1c, /* PDUTYPE2_INPUT */ 223 RDP_DATA_PDU_SYNCHRONISE = 0x1f, /* PDUTYPE2_SYNCHRONIZE */ 224 RDP_DATA_PDU_BELL = 0x22, /* PDUTYPE2_PLAY_SOUND */ 225 RDP_DATA_PDU_CLIENT_WINDOW_STATUS = 0x23, /* PDUTYPE2_SUPRESS_OUTPUT */ 226 RDP_DATA_PDU_LOGON = 0x26, /* PDUTYPE2_SAVE_SESSION_INFO */ 227 RDP_DATA_PDU_FONT2 = 0x27, /* PDUTYPE2_FONTLIST */ 228 RDP_DATA_PDU_KEYBOARD_INDICATORS = 0x29, /* PDUTYPE2_SET_KEYBOARD_INDICATORS */ 229 RDP_DATA_PDU_SET_ERROR_INFO = 0x2f, /* PDUTYPE2_SET_ERROR_INFO */ 230 RDP_DATA_PDU_AUTORECONNECT_STATUS = 0x32, /* PDUTYPE2_ARC_STATUS_PDU */ 231 }; 232 233 enum RDP_SAVE_SESSION_PDU_TYPE 234 { 235 INFOTYPE_LOGON = 0, 236 INFOTYPE_LOGON_LONG = 1, 237 INFOTYPE_LOGON_PLAINNOTIFY = 2, 238 INFOTYPE_LOGON_EXTENDED_INF = 3 239 }; 240 241 enum RDP_LOGON_INFO_EXTENDED_TYPE 242 { 243 LOGON_EX_AUTORECONNECTCOOKIE = 1, 244 LOGON_EX_LOGONERRORS = 2 245 }; 246 247 enum RDP_CONTROL_PDU_TYPE 248 { 249 RDP_CTL_REQUEST_CONTROL = 1, 250 RDP_CTL_GRANT_CONTROL = 2, 251 RDP_CTL_DETACH = 3, 252 RDP_CTL_COOPERATE = 4 253 }; 254 255 enum RDP_UPDATE_PDU_TYPE 256 { 257 RDP_UPDATE_ORDERS = 0, 258 RDP_UPDATE_BITMAP = 1, 259 RDP_UPDATE_PALETTE = 2, 260 RDP_UPDATE_SYNCHRONIZE = 3 261 }; 262 263 enum RDP_POINTER_PDU_TYPE 264 { 265 RDP_POINTER_SYSTEM = 1, 266 RDP_POINTER_MOVE = 3, 267 RDP_POINTER_COLOR = 6, 268 RDP_POINTER_CACHED = 7, 269 RDP_POINTER_NEW = 8 270 }; 271 272 /* [MS-RDPBCGR] 2.2.9.1.1.4.3 */ 273 enum RDP_SYSTEM_POINTER_TYPE 274 { 275 SYSPTR_NULL = 0x00000000, 276 SYSPTR_DEFAULT = 0x00007F00 277 }; 278 279 enum RDP_INPUT_DEVICE 280 { 281 RDP_INPUT_SYNCHRONIZE = 0, 282 RDP_INPUT_CODEPOINT = 1, 283 RDP_INPUT_VIRTKEY = 2, 284 RDP_INPUT_SCANCODE = 4, 285 RDP_INPUT_MOUSE = 0x8001, 286 RDP_INPUT_MOUSEX = 0x8002 287 }; 288 289 /* Device flags */ 290 #define KBD_FLAG_RIGHT 0x0001 291 #define KBD_FLAG_EXT 0x0100 292 #define KBD_FLAG_EXT1 0x0200 293 #define KBD_FLAG_QUIET 0x1000 294 #define KBD_FLAG_DOWN 0x4000 295 #define KBD_FLAG_UP 0x8000 296 297 /* These are for synchronization; not for keystrokes */ 298 #define KBD_FLAG_SCROLL 0x0001 299 #define KBD_FLAG_NUMLOCK 0x0002 300 #define KBD_FLAG_CAPITAL 0x0004 301 302 /* See T.128 */ 303 #define RDP_KEYPRESS 0 304 #define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP) 305 306 #define MOUSE_FLAG_MOVE 0x0800 307 #define MOUSE_FLAG_BUTTON1 0x1000 308 #define MOUSE_FLAG_BUTTON2 0x2000 309 #define MOUSE_FLAG_BUTTON3 0x4000 310 #define MOUSE_FLAG_BUTTON4 0x0280 311 #define MOUSE_FLAG_BUTTON5 0x0380 312 #define MOUSEX_FLAG_BUTTON1 0x0001 313 #define MOUSEX_FLAG_BUTTON2 0x0002 314 #define MOUSE_FLAG_DOWN 0x8000 315 316 /* Raster operation masks */ 317 #define ROP2_S(rop3) (rop3 & 0xf) 318 #define ROP2_P(rop3) ((rop3 & 0x3) | ((rop3 & 0x30) >> 2)) 319 320 #define ROP2_COPY 0xc 321 #define ROP2_XOR 0x6 322 #define ROP2_AND 0x8 323 #define ROP2_NXOR 0x9 324 #define ROP2_OR 0xe 325 326 #define MIX_TRANSPARENT 0 327 #define MIX_OPAQUE 1 328 329 #define TEXT2_VERTICAL 0x04 330 #define TEXT2_IMPLICIT_X 0x20 331 332 #define ALTERNATE 1 333 #define WINDING 2 334 335 /* RDP bitmap cache (version 2) constants */ 336 #define BMPCACHE2_C0_CELLS 0x78 337 #define BMPCACHE2_C1_CELLS 0x78 338 #define BMPCACHE2_C2_CELLS 0x150 339 #define BMPCACHE2_NUM_PSTCELLS 0x9f6 340 341 #define PDU_FLAG_FIRST 0x01 342 #define PDU_FLAG_LAST 0x02 343 344 /* RDP capabilities */ 345 #define RDP_CAPSET_GENERAL 1 /* Maps to generalCapabilitySet in T.128 page 138 */ 346 #define RDP_CAPLEN_GENERAL 0x18 347 #define OS_MAJOR_TYPE_UNIX 4 348 #define OS_MINOR_TYPE_XSERVER 7 349 350 #define RDP_CAPSET_BITMAP 2 351 #define RDP_CAPLEN_BITMAP 0x1C 352 353 #define RDP_CAPSET_ORDER 3 354 #define RDP_CAPLEN_ORDER 0x58 355 #define ORDER_CAP_NEGOTIATE 2 356 #define ORDER_CAP_NOSUPPORT 4 357 358 #define RDP_CAPSET_BMPCACHE 4 359 #define RDP_CAPLEN_BMPCACHE 0x28 360 361 #define RDP_CAPSET_CONTROL 5 362 #define RDP_CAPLEN_CONTROL 0x0C 363 364 #define RDP_CAPSET_ACTIVATE 7 365 #define RDP_CAPLEN_ACTIVATE 0x0C 366 367 #define RDP_CAPSET_POINTER 8 368 #define RDP_CAPLEN_POINTER 0x08 369 #define RDP_CAPLEN_NEWPOINTER 0x0a 370 371 #define RDP_CAPSET_SHARE 9 372 #define RDP_CAPLEN_SHARE 0x08 373 374 #define RDP_CAPSET_COLCACHE 10 375 #define RDP_CAPLEN_COLCACHE 0x08 376 377 #define RDP_CAPSET_SOUND 12 378 #define RDP_CAPLEN_SOUND 8 379 380 #define RDP_CAPSET_INPUT 13 381 #define RDP_CAPLEN_INPUT 88 382 383 #define RDP_CAPSET_FONT 14 384 #define RDP_CAPLEN_FONT 8 385 386 #define RDP_CAPSET_BRUSHCACHE 15 387 #define RDP_CAPLEN_BRUSHCACHE 0x08 388 389 #define RDP_CAPSET_GLYPHCACHE 16 390 #define RDP_CAPLEN_GLYPHCACHE 52 391 392 #define RDP_CAPSET_BMPCACHE2 19 393 #define RDP_CAPLEN_BMPCACHE2 0x28 394 #define BMPCACHE2_FLAG_PERSIST ((uint32)1<<31) 395 396 #define RDP_CAPSET_MULTIFRAGMENTUPDATE 26 397 #define RDP_CAPLEN_MULTIFRAGMENTUPDATE 8 398 399 #define RDP_CAPSET_LARGE_POINTER 27 400 #define RDP_CAPLEN_LARGE_POINTER 6 401 402 #define RDP_CAPSET_VC 20 403 #define RDP_CAPLEN_VC 0x08 404 405 #define RDP_SOURCE "MSTSC" 406 407 /* Logon flags */ 408 #define RDP_INFO_MOUSE 0x00000001 409 #define RDP_INFO_DISABLECTRLALTDEL 0x00000002 410 #define RDP_INFO_AUTOLOGON 0x00000008 411 #define RDP_INFO_UNICODE 0x00000010 412 #define RDP_INFO_MAXIMIZESHELL 0x00000020 413 #define RDP_INFO_COMPRESSION 0x00000080 /* mppc compression with 8kB history buffer */ 414 #define RDP_INFO_ENABLEWINDOWSKEY 0x00000100 415 #define RDP_INFO_COMPRESSION2 0x00000200 /* rdp5 mppc compression with 64kB history buffer */ 416 #define RDP_INFO_REMOTE_CONSOLE_AUDIO 0x00002000 417 #define RDP_INFO_PASSWORD_IS_SC_PIN 0x00040000 418 419 /* TS_EXTENDED_INFO_PACKET.performanceFlags */ 420 #define PERF_DISABLE_WALLPAPER 0x01 421 #define PERF_DISABLE_FULLWINDOWDRAG 0x02 422 #define PERF_DISABLE_MENUANIMATIONS 0x04 423 #define PERF_DISABLE_THEMING 0x08 424 #define PERF_DISABLE_CURSOR_SHADOW 0x20 425 #define PERF_DISABLE_CURSORSETTINGS 0x40 /* disables cursor blinking */ 426 #define PERF_ENABLE_FONT_SMOOTHING 0x80 427 428 /* compression types */ 429 #define RDP_MPPC_BIG 0x01 430 #define RDP_MPPC_COMPRESSED 0x20 431 #define RDP_MPPC_RESET 0x40 432 #define RDP_MPPC_FLUSH 0x80 433 #define RDP_MPPC_DICT_SIZE 65536 434 435 #define RDP5_COMPRESSED 0x80 436 437 /* Keymap flags */ 438 #define MapRightShiftMask (1<<0) 439 #define MapLeftShiftMask (1<<1) 440 #define MapShiftMask (MapRightShiftMask | MapLeftShiftMask) 441 442 #define MapRightAltMask (1<<2) 443 #define MapLeftAltMask (1<<3) 444 #define MapAltGrMask MapRightAltMask 445 446 #define MapRightCtrlMask (1<<4) 447 #define MapLeftCtrlMask (1<<5) 448 #define MapCtrlMask (MapRightCtrlMask | MapLeftCtrlMask) 449 450 #define MapRightWinMask (1<<6) 451 #define MapLeftWinMask (1<<7) 452 #define MapWinMask (MapRightWinMask | MapLeftWinMask) 453 454 #define MapNumLockMask (1<<8) 455 #define MapCapsLockMask (1<<9) 456 457 #define MapLocalStateMask (1<<10) 458 459 #define MapInhibitMask (1<<11) 460 461 #define MASK_ADD_BITS(var, mask) (var |= mask) 462 #define MASK_REMOVE_BITS(var, mask) (var &= ~mask) 463 #define MASK_HAS_BITS(var, mask) ((var & mask)>0) 464 #define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask : 0))) 465 466 /* Clipboard constants, "borrowed" from GCC system headers in 467 the w32 cross compiler 468 this is the CF_ set when WINVER is 0x0400 */ 469 470 #ifndef CF_TEXT 471 #define CF_TEXT 1 472 #define CF_BITMAP 2 473 #define CF_METAFILEPICT 3 474 #define CF_SYLK 4 475 #define CF_DIF 5 476 #define CF_TIFF 6 477 #define CF_OEMTEXT 7 478 #define CF_DIB 8 479 #define CF_PALETTE 9 480 #define CF_PENDATA 10 481 #define CF_RIFF 11 482 #define CF_WAVE 12 483 #define CF_UNICODETEXT 13 484 #define CF_ENHMETAFILE 14 485 #define CF_HDROP 15 486 #define CF_LOCALE 16 487 #define CF_MAX 17 488 #define CF_OWNERDISPLAY 128 489 #define CF_DSPTEXT 129 490 #define CF_DSPBITMAP 130 491 #define CF_DSPMETAFILEPICT 131 492 #define CF_DSPENHMETAFILE 142 493 #define CF_PRIVATEFIRST 512 494 #define CF_PRIVATELAST 767 495 #define CF_GDIOBJFIRST 768 496 #define CF_GDIOBJLAST 1023 497 #endif 498 499 /* Sound format constants */ 500 #define WAVE_FORMAT_PCM 1 501 #define WAVE_FORMAT_ADPCM 2 502 #define WAVE_FORMAT_ALAW 6 503 #define WAVE_FORMAT_MULAW 7 504 505 /* Virtual channel options */ 506 #define CHANNEL_OPTION_INITIALIZED 0x80000000 507 #define CHANNEL_OPTION_ENCRYPT_RDP 0x40000000 508 #define CHANNEL_OPTION_COMPRESS_RDP 0x00800000 509 #define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000 510 511 /* NT status codes for RDPDR */ 512 #define RD_STATUS_SUCCESS 0x00000000 513 #define RD_STATUS_NOT_IMPLEMENTED 0x00000001 514 #define RD_STATUS_PENDING 0x00000103 515 516 #define RD_STATUS_NO_MORE_FILES 0x80000006 517 #define RD_STATUS_DEVICE_PAPER_EMPTY 0x8000000e 518 #define RD_STATUS_DEVICE_POWERED_OFF 0x8000000f 519 #define RD_STATUS_DEVICE_OFF_LINE 0x80000010 520 #define RD_STATUS_DEVICE_BUSY 0x80000011 521 522 #define RD_STATUS_INVALID_HANDLE 0xc0000008 523 #define RD_STATUS_INVALID_PARAMETER 0xc000000d 524 #define RD_STATUS_NO_SUCH_FILE 0xc000000f 525 #define RD_STATUS_INVALID_DEVICE_REQUEST 0xc0000010 526 #define RD_STATUS_ACCESS_DENIED 0xc0000022 527 #define RD_STATUS_BUFFER_TOO_SMALL 0xc0000023 528 #define RD_STATUS_OBJECT_NAME_COLLISION 0xc0000035 529 #define RD_STATUS_DISK_FULL 0xc000007f 530 #define RD_STATUS_FILE_IS_A_DIRECTORY 0xc00000ba 531 #define RD_STATUS_NOT_SUPPORTED 0xc00000bb 532 #define RD_STATUS_TIMEOUT 0xc0000102 533 #define RD_STATUS_NOTIFY_ENUM_DIR 0xc000010c 534 #define RD_STATUS_CANCELLED 0xc0000120 535 #define RD_STATUS_DIRECTORY_NOT_EMPTY 0xc0000101 536 537 /* RDPSND constants */ 538 #define TSSNDCAPS_ALIVE 0x00000001 539 #define TSSNDCAPS_VOLUME 0x00000002 540 541 /* RDPDR constants */ 542 543 #define RDPDR_CTYP_CORE 0x4472 544 #define RDPDR_CTYP_PRN 0x5052 545 546 #define PAKID_CORE_SERVER_ANNOUNCE 0x496e 547 #define PAKID_CORE_CLIENTID_CONFIRM 0x4343 548 #define PAKID_CORE_CLIENT_NAME 0x434e 549 #define PAKID_CORE_DEVICE_LIST_ANNOUNCE 0x4441 550 #define PAKID_CORE_DEVICE_REPLY 0x6472 551 #define PAKID_CORE_DEVICE_IOREQUEST 0x4952 552 #define PAKID_CORE_DEVICE_IOCOMPLETION 0x4943 553 #define PAKID_CORE_SERVER_CAPABILITY 0x5350 554 #define PAKID_CORE_CLIENT_CAPABILITY 0x4350 555 #define PAKID_CORE_DEVICELIST_REMOVE 0x444d 556 #define PAKID_PRN_CACHE_DATA 0x5043 557 #define PAKID_CORE_USER_LOGGEDON 0x554c 558 #define PAKID_PRN_USING_XPS 0x5543 559 560 #define RDPDR_MAX_DEVICES 0x10 561 #define DEVICE_TYPE_SERIAL 0x01 562 #define DEVICE_TYPE_PARALLEL 0x02 563 #define DEVICE_TYPE_PRINTER 0x04 564 #define DEVICE_TYPE_DISK 0x08 565 #define DEVICE_TYPE_SCARD 0x20 566 567 #define FILE_DIRECTORY_FILE 0x00000001 568 #define FILE_NON_DIRECTORY_FILE 0x00000040 569 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100 570 #define FILE_DELETE_ON_CLOSE 0x00001000 571 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 572 573 #define CAP_GENERAL_TYPE 0x0001 574 #define CAP_PRINTER_TYPE 0x0002 575 #define CAP_PORT_TYPE 0x0003 576 #define CAP_DRIVE_TYPE 0x0004 577 #define CAP_SMARTCARD_TYPE 0x0005 578 579 #define GENERAL_CAPABILITY_VERSION_01 0x00000001 580 #define GENERAL_CAPABILITY_VERSION_02 0x00000002 581 #define PRINT_CAPABILITY_VERSION_01 0x00000001 582 #define PORT_CAPABILITY_VERSION_01 0x00000001 583 #define DRIVE_CAPABILITY_VERSION_01 0x00000001 584 #define DRIVE_CAPABILITY_VERSION_02 0x00000002 585 #define SMARTCARD_CAPABILITY_VERSION_01 0x00000001 586 587 #define RDPDR_IRP_MJ_CREATE 0x00000001 588 #define RDPDR_IRP_MJ_CLEANUP 0x00000002 589 #define RDPDR_IRP_MJ_CLOSE 0x00000004 590 #define RDPDR_IRP_MJ_READ 0x00000008 591 #define RDPDR_IRP_MJ_WRITE 0x00000010 592 #define RDPDR_IRP_MJ_FLUSH_BUFFERS 0x00000020 593 #define RDPDR_IRP_MJ_SHUTDOWN 0x00000040 594 #define RDPDR_IRP_MJ_DEVICE_CONTROL 0x00000080 595 #define RDPDR_IRP_MJ_QUERY_VOLUME_INFORMATION 0x00000100 596 #define RDPDR_IRP_MJ_SET_VOLUME_INFORMATION 0x00000200 597 #define RDPDR_IRP_MJ_QUERY_INFORMATION 0x00000400 598 #define RDPDR_IRP_MJ_SET_INFORMATION 0x00000800 599 #define RDPDR_IRP_MJ_DIRECTORY_CONTROL 0x00001000 600 #define RDPDR_IRP_MJ_LOCK_CONTROL 0x00002000 601 #define RDPDR_IRP_MJ_QUERY_SECURITY 0x00004000 602 #define RDPDR_IRP_MJ_SET_SECURITY 0x00008000 603 #define ALL_RDPDR_IRP_MJ 0x0000FFFF 604 605 #define RDPDR_PRINTER_ANNOUNCE_FLAG_ASCII 0x00000001 606 #define RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER 0x00000002 607 #define RDPDR_PRINTER_ANNOUNCE_FLAG_NETWORKPRINTER 0x00000004 608 #define RDPDR_PRINTER_ANNOUNCE_FLAG_TSPRINTER 0x00000008 609 #define RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT 0x00000010 610 611 #define RDPDR_DEVICE_REMOVE_PDUS 0x00000001 612 #define RDPDR_CLIENT_DISPLAY_NAME_PDU 0x00000002 613 #define RDPDR_USER_LOGGEDON_PDU 0x00000004 614 615 /* RDP5 disconnect PDU 616 * 617 * Named after the corresponding names on the server side: 618 * https://msdn.microsoft.com/en-us/library/cc240544.aspx 619 */ 620 #define ERRINFO_UNSET (unsigned)(-1) 621 #define ERRINFO_NO_INFO 0x0000 622 #define ERRINFO_RPC_INITIATED_DISCONNECT 0x0001 623 #define ERRINFO_RPC_INITIATED_LOGOFF 0x0002 624 #define ERRINFO_IDLE_TIMEOUT 0x0003 625 #define ERRINFO_LOGON_TIMEOUT 0x0004 626 #define ERRINFO_DISCONNECTED_BY_OTHERCONNECTION 0x0005 627 #define ERRINFO_OUT_OF_MEMORY 0x0006 628 #define ERRINFO_SERVER_DENIED_CONNECTION 0x0007 629 #define ERRINFO_SERVER_DENIED_CONNECTION_FIPS 0x0008 630 #define ERRINFO_SERVER_INSUFFICIENT_PRIVILEGES 0x0009 631 #define ERRINFO_SERVER_FRESH_CREDENTIALS_REQUIRED 0x000a 632 #define ERRINFO_RPC_INITIATED_DISCONNECT_BYUSER 0x000b 633 #define ERRINFO_LOGOFF_BYUSER 0x000c 634 #define ERRINFO_LICENSE_INTERNAL 0x0100 635 #define ERRINFO_LICENSE_NO_LICENSE_SERVER 0x0101 636 #define ERRINFO_LICENSE_NO_LICENSE 0x0102 637 #define ERRINFO_LICENSE_BAD_CLIENT_MSG 0x0103 638 #define ERRINFO_LICENSE_HWID_DOESNT_MATCH_LICENSE 0x0104 639 #define ERRINFO_LICENSE_BAD_CLIENT_LICENSE 0x0105 640 #define ERRINFO_LICENSE_CANT_FINISH_PROTOCOL 0x0106 641 #define ERRINFO_LICENSE_CLIENT_ENDED_PROTOCOL 0x0107 642 #define ERRINFO_LICENSE_BAD_CLIENT_ENCRYPTION 0x0108 643 #define ERRINFO_LICENSE_CANT_UPGRADE_LICENSE 0x0109 644 #define ERRINFO_LICENSE_NO_REMOTE_CONNECTIONS 0x010a 645 #define ERRINFO_CB_DESTINATION_NOT_FOUND 0x0400 646 #define ERRINFO_CB_LOADING_DESTINATION 0x0402 647 #define ERRINFO_CB_REDIRECTING_TO_DESTINATION 0x0404 648 #define ERRINFO_CB_SESSION_ONLINE_VM_WAKE 0x0405 649 #define ERRINFO_CB_SESSION_ONLINE_VM_BOOT 0x0406 650 #define ERRINFO_CB_SESSION_ONLINE_VM_NO_DNS 0x0407 651 #define ERRINFO_CB_DESTINATION_POOL_NOT_FREE 0x0408 652 #define ERRINFO_CB_CONNECTION_CANCELLED 0x0409 653 #define ERRINFO_CB_CONNECTION_ERROR_INVALID_SETTINGS 0x0410 654 #define ERRINFO_CB_SESSION_ONLINE_VM_BOOT_TIMEOUT 0x0411 655 #define ERRINFO_CB_SESSION_ONLINE_VM_SESSMON_FAILED 0x0412 656 #define ERRINFO_REMOTEAPPSNOTENABLED 0x10f3 657 #define ERRINFO_UPDATESESSIONKEYFAILED 0x1191 658 #define ERRINFO_DECRYPTFAILED 0x1192 659 #define ERRINFO_ENCRYPTFAILED 0x1193 660 661 /* SeamlessRDP constants */ 662 #define SEAMLESSRDP_NOTYETMAPPED -1 663 #define SEAMLESSRDP_NORMAL 0 664 #define SEAMLESSRDP_MINIMIZED 1 665 #define SEAMLESSRDP_MAXIMIZED 2 666 #define SEAMLESSRDP_POSITION_TIMER 200000 667 668 #define SEAMLESSRDP_CREATE_MODAL 0x0001 669 #define SEAMLESSRDP_CREATE_TOPMOST 0x0002 670 671 #define SEAMLESSRDP_HELLO_RECONNECT 0x0001 672 #define SEAMLESSRDP_HELLO_HIDDEN 0x0002 673 674 /* Smartcard constants */ 675 #define SCARD_LOCK_TCP 0 676 #define SCARD_LOCK_SEC 1 677 #define SCARD_LOCK_CHANNEL 2 678 #define SCARD_LOCK_RDPDR 3 679 #define SCARD_LOCK_LAST 4 680 681 682 /* redirect flags, from [MS-RDPBCGR] 2.2.13.1 */ 683 enum RDP_PDU_REDIRECT_FLAGS 684 { 685 LB_TARGET_NET_ADDRESS = 0x1, 686 LB_LOAD_BALANCE_INFO = 0x2, 687 LB_USERNAME = 0x4, 688 LB_DOMAIN = 0x8, 689 LB_PASSWORD = 0x10, 690 LB_DONTSTOREUSERNAME = 0x20, 691 LB_SMARTCARD_LOGON = 0x40, 692 LB_NOREDIRECT = 0x80, 693 LB_TARGET_FQDN = 0x100, 694 LB_TARGET_NETBIOS = 0x200, 695 LB_TARGET_NET_ADDRESSES = 0x800, 696 LB_CLIENT_TSV_URL = 0x1000, 697 LB_SERVER_TSV_CAPABLE = 0x2000, 698 LB_PASSWORD_IS_PK_ENCRYPTED = 0x4000, 699 LB_REDIRECTION_GUID = 0x8000, 700 LB_TARGET_CERTIFICATE = 0x10000 701 }; 702 703 /* desktop orientation */ 704 enum RDP_DESKTOP_ORIENTATION 705 { 706 ORIENTATION_LANDSCAPE = 0, 707 ORIENTATION_PORTRAIT = 90, 708 ORIENTATION_LANDSCAPE_FLIPPED = 180, 709 ORIENTATION_PORTRAIT_FLIPPED = 270 710 }; 711 /* color depths, from [MS-RDPBCGR] 2.2.1.3.2 */ 712 #define RNS_UD_COLOR_4BPP 0xCA00 713 #define RNS_UD_COLOR_8BPP 0xCA01 714 #define RNS_UD_COLOR_16BPP_555 0xCA02 715 #define RNS_UD_COLOR_16BPP_565 0xCA03 716 #define RNS_UD_COLOR_24BPP 0xCA04 717 718 #define RNS_UD_SAS_DEL 0xAA03 719 720 /* version, [MS-RDPBCGR] 2.2.1.3.2 */ 721 #define RDP_40 0x00080001 /* RDP 4.0 clients */ 722 #define RDP_50 0x00080004 /* RDP 5.0, 5.1, 5.2, 6.0, 6.1, 7.0, 7.1, 8.0, and 8.1 clients */ 723 #define RDP_10_0 0x00080005 /* RDP 10.0 clients */ 724 #define RDP_10_1 0x00080006 /* RDP 10.1 clients */ 725 #define RDP_10_2 0x00080007 /* RDP 10.2 clients */ 726 #define RDP_10_3 0x00080008 /* RDP 10.3 clients */ 727 728 /* supportedColorDepths, [MS-RDPBCGR] 2.2.1.3.2 */ 729 #define RNS_UD_24BPP_SUPPORT 0x0001 730 #define RNS_UD_16BPP_SUPPORT 0x0002 731 #define RNS_UD_15BPP_SUPPORT 0x0004 732 #define RNS_UD_32BPP_SUPPORT 0x0008 733 734 /* earlyCapabilityFlags, [MS-RDPBCGR] 2.2.1.3.2 */ 735 #define RNS_UD_CS_SUPPORT_ERRINFO_PDU 0x0001 736 #define RNS_UD_CS_WANT_32BPP_SESSION 0x0002 737 #define RNS_UD_CS_SUPPORT_STATUSINFO_PDU 0x0004 738 #define RNS_UD_CS_STRONG_ASYMMETRIC_KEYS 0x0008 739 #define RNS_UD_CS_UNUSED 0x0010 740 #define RNS_UD_CS_VALID_CONNECTION_TYPE 0x0020 741 #define RNS_UD_CS_SUPPORT_MONITOR_LAYOUT_PDU 0x0040 742 #define RNS_UD_CS_SUPPORT_NETCHAR_AUTODETECT 0x0080 743 #define RNS_UD_CS_SUPPORT_DYNVC_GFX_PROTOCOL 0x0100 744 #define RNS_UD_CS_SUPPORT_DYNAMIC_TIME_ZONE 0x0200 745 #define RNS_UD_CS_SUPPORT_HEARTBEAT_PDU 0x0400 746 747 /* [MS-RDPBCGR] 2.2.7.1.1 */ 748 #define OSMAJORTYPE_WINDOWS 0x0001 749 #define OSMINORTYPE_WINDOWSNT 0x0003 750 #define TS_CAPS_PROTOCOLVERSION 0x0200 751 752 /* extraFlags, [MS-RDPBCGR] 2.2.7.1.1 */ 753 #define FASTPATH_OUTPUT_SUPPORTED 0x0001 754 #define LONG_CREDENTIALS_SUPPORTED 0x0004 755 #define AUTORECONNECT_SUPPORTED 0x0008 756 #define ENC_SALTED_CHECKSUM 0x0010 757 #define NO_BITMAP_COMPRESSION_HDR 0x0400 758 759 /* [MS-RDPBCGR], TS_BITMAP_DATA, flags */ 760 #define BITMAP_COMPRESSION 0x0001 761 762 /* orderFlags, [MS-RDPBCGR] 2.2.7.1.3 */ 763 #define NEGOTIATEORDERSUPPORT 0x0002 764 #define ZEROBOUNDSDELTASSUPPORT 0x0008 765 #define COLORINDEXSUPPORT 0x0020 766 #define SOLIDPATTERNBRUSHONLY 0x0040 767 #define ORDERFLAGS_EXTRA_FLAGS 0x0080 768 769 /* orderSupport index, [MS-RDPBCGR] 2.2.7.1.3 */ 770 #define TS_NEG_DSTBLT_INDEX 0x00 771 #define TS_NEG_PATBLT_INDEX 0x01 772 #define TS_NEG_SCRBLT_INDEX 0x02 773 #define TS_NEG_MEMBLT_INDEX 0x03 774 #define TS_NEG_MEM3BLT_INDEX 0x04 775 #define TS_NEG_DRAWNINEGRID_INDEX 0x07 776 #define TS_NEG_LINETO_INDEX 0x08 777 #define TS_NEG_MULTI_DRAWNINEGRID_INDEX 0x09 778 #define TS_NEG_SAVEBITMAP_INDEX 0x0B 779 #define TS_NEG_MULTIDSTBLT_INDEX 0x0F 780 #define TS_NEG_MULTIPATBLT_INDEX 0x10 781 #define TS_NEG_MULTISCRBLT_INDEX 0x11 782 #define TS_NEG_MULTIOPAQUERECT_INDEX 0x12 783 #define TS_NEG_FAST_INDEX_INDEX 0x13 784 #define TS_NEG_POLYGON_SC_INDEX 0x14 785 #define TS_NEG_POLYGON_CB_INDEX 0x15 786 #define TS_NEG_POLYLINE_INDEX 0x16 787 #define TS_NEG_FAST_GLYPH_INDEX 0x18 788 #define TS_NEG_ELLIPSE_SC_INDEX 0x19 789 #define TS_NEG_ELLIPSE_CB_INDEX 0x1A 790 #define TS_NEG_INDEX_INDEX 0x1B 791 792 /* [MS-RDPBCGR] 2.2.7.1.6 */ 793 #define INPUT_FLAG_SCANCODES 0x0001 794 #define INPUT_FLAG_MOUSEX 0x0004 795 #define INPUT_FLAG_FASTPATH_INPUT 0x0008 796 #define INPUT_FLAG_UNICODE 0x0010 797 #define INPUT_FLAG_FASTPATH_INPUT2 0x0020 798 #define INPUT_FLAG_UNUSED1 0x0040 799 #define INPUT_FLAG_UNUSED2 0x0080 800 #define TS_INPUT_FLAG_MOUSE_HWHEEL 0x0100 801 #define TS_INPUT_FLAG_QOE_TIMESTAMPS 0x0200 802 803 /* [MS-RDPBCGR] 2.2.7.1.8 */ 804 #define GLYPH_SUPPORT_NONE 0x0000 805 #define GLYPH_SUPPORT_PARTIAL 0x0001 806 #define GLYPH_SUPPORT_FULL 0x0002 807 #define GLYPH_SUPPORT_ENCODE 0x0003 808 809 /* [MS-RDPBCGR] 2.2.7.1.11 */ 810 #define SOUND_BEEPS_FLAG 0x0001 811 812 /* [MS-RDPBCGR] 2.2.7.2.5 */ 813 #define FONTSUPPORT_FONTLIST 0x0001 814 815 /* [MS-RDPBCGR] 2.2.7.2.7 */ 816 #define LARGE_POINTER_FLAG_96x96 1 817 818 /* [MS-RDPBCGR] TS_SUPPRESS_OUTPUT_PDU allowDisplayUpdates */ 819 enum RDP_SUPPRESS_STATUS 820 { 821 SUPPRESS_DISPLAY_UPDATES = 0x00, 822 ALLOW_DISPLAY_UPDATES = 0x01 823 }; 824 825 #endif /* _CONSTANTS_H */ 826