1 /* 2 rdesktop: A Remote Desktop Protocol client. 3 Miscellaneous protocol constants 4 Copyright (C) Matthew Chapman 1999-2008 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 /* TCP port for Remote Desktop Protocol */ 21 #define TCP_PORT_RDP 3389 22 23 #define DEFAULT_CODEPAGE "UTF-8" 24 #define WINDOWS_CODEPAGE "UTF-16LE" 25 26 /* ISO PDU codes */ 27 enum ISO_PDU_CODE 28 { 29 ISO_PDU_CR = 0xE0, /* Connection Request */ 30 ISO_PDU_CC = 0xD0, /* Connection Confirm */ 31 ISO_PDU_DR = 0x80, /* Disconnect Request */ 32 ISO_PDU_DT = 0xF0, /* Data */ 33 ISO_PDU_ER = 0x70 /* Error */ 34 }; 35 36 /* RDP protocol negotiating constants */ 37 enum RDP_NEG_TYPE_CODE 38 { 39 RDP_NEG_REQ = 1, 40 RDP_NEG_RSP = 2, 41 RDP_NEG_FAILURE = 3 42 }; 43 44 enum RDP_NEG_REQ_CODE 45 { 46 PROTOCOL_RDP = 0, 47 PROTOCOL_SSL = 1, 48 PROTOCOL_HYBRID = 2 49 }; 50 51 enum RDP_NEG_FAILURE_CODE 52 { 53 SSL_REQUIRED_BY_SERVER = 1, 54 SSL_NOT_ALLOWED_BY_SERVER = 2, 55 SSL_CERT_NOT_ON_SERVER = 3, 56 INCONSISTENT_FLAGS = 4, 57 HYBRID_REQUIRED_BY_SERVER = 5, 58 SSL_WITH_USER_AUTH_REQUIRED_BY_SERVER = 6 59 }; 60 61 /* MCS PDU codes */ 62 enum MCS_PDU_TYPE 63 { 64 MCS_EDRQ = 1, /* Erect Domain Request */ 65 MCS_DPUM = 8, /* Disconnect Provider Ultimatum */ 66 MCS_AURQ = 10, /* Attach User Request */ 67 MCS_AUCF = 11, /* Attach User Confirm */ 68 MCS_CJRQ = 14, /* Channel Join Request */ 69 MCS_CJCF = 15, /* Channel Join Confirm */ 70 MCS_SDRQ = 25, /* Send Data Request */ 71 MCS_SDIN = 26 /* Send Data Indication */ 72 }; 73 74 #define MCS_CONNECT_INITIAL 0x7f65 75 #define MCS_CONNECT_RESPONSE 0x7f66 76 77 #define BER_TAG_BOOLEAN 1 78 #define BER_TAG_INTEGER 2 79 #define BER_TAG_OCTET_STRING 4 80 #define BER_TAG_RESULT 10 81 #define BER_TAG_SEQUENCE 16 82 #define BER_TAG_CONSTRUCTED 0x20 83 #define BER_TAG_CTXT_SPECIFIC 0x80 84 85 #define MCS_TAG_DOMAIN_PARAMS 0x30 86 87 #define MCS_GLOBAL_CHANNEL 1003 88 #define MCS_USERCHANNEL_BASE 1001 89 90 /* RDP secure transport constants */ 91 #define SEC_RANDOM_SIZE 32 92 #define SEC_MODULUS_SIZE 64 93 #define SEC_MAX_MODULUS_SIZE 256 94 #define SEC_PADDING_SIZE 8 95 #define SEC_EXPONENT_SIZE 4 96 97 /* TS_SECURITY_HEADER.flags */ 98 #define SEC_EXCHANGE_PKT 0x0001 99 #define SEC_TRANSPORT_REQ 0x0002 100 #define RDP_SEC_TRANSPORT_RSP 0x0004 101 #define SEC_ENCRYPT 0x0008 102 #define SEC_RESET_SEQNO 0x0010 103 #define SEC_IGNORE_SEQNO 0x0020 104 #define SEC_INFO_PKT 0x0040 105 #define SEC_LICENSE_PKT 0x0080 106 #define SEC_LICENSE_ENCRYPT_CS 0x0200 107 #define SEC_LICENSE_ENCRYPT_SC 0x0200 108 #define SEC_REDIRECTION_PKT 0x0400 109 #define SEC_SECURE_CHECKSUM 0x0800 110 #define SEC_AUTODETECT_REQ 0x1000 111 #define SEC_AUTODETECT_RSP 0x2000 112 #define SEC_HEARTBEAT 0x4000 113 #define SEC_FLAGSHI_VALID 0x8000 114 115 #define SEC_TAG_SRV_INFO 0x0c01 116 #define SEC_TAG_SRV_CRYPT 0x0c02 117 #define SEC_TAG_SRV_CHANNELS 0x0c03 118 119 #define SEC_TAG_CLI_INFO 0xc001 120 #define SEC_TAG_CLI_CRYPT 0xc002 121 #define SEC_TAG_CLI_CHANNELS 0xc003 122 #define SEC_TAG_CLI_CLUSTER 0xc004 123 124 #define SEC_TAG_PUBKEY 0x0006 125 #define SEC_TAG_KEYSIG 0x0008 126 127 #define SEC_RSA_MAGIC 0x31415352 /* RSA1 */ 128 129 /* Client cluster constants */ 130 #define SEC_CC_REDIRECTION_SUPPORTED 0x00000001 131 #define SEC_CC_REDIRECT_SESSIONID_FIELD_VALID 0x00000002 132 #define SEC_CC_REDIRECTED_SMARTCARD 0x00000040 133 #define SEC_CC_REDIRECT_VERSION_MASK 0x0000003c 134 135 #define SEC_CC_REDIRECT_VERSION_3 0x02 136 #define SEC_CC_REDIRECT_VERSION_4 0x03 137 #define SEC_CC_REDIRECT_VERSION_5 0x04 138 #define SEC_CC_REDIRECT_VERSION_6 0x05 139 140 /* RDP licensing constants */ 141 #define LICENCE_TOKEN_SIZE 10 142 #define LICENCE_HWID_SIZE 20 143 #define LICENCE_SIGNATURE_SIZE 16 144 145 #define LICENCE_TAG_REQUEST 0x01 146 #define LICENCE_TAG_PLATFORM_CHALLANGE 0x02 147 #define LICENCE_TAG_NEW_LICENCE 0x03 148 #define LICENCE_TAG_UPGRADE_LICENCE 0x04 149 #define LICENCE_TAG_LICENCE_INFO 0x12 150 #define LICENCE_TAG_NEW_LICENCE_REQUEST 0x13 151 #define LICENCE_TAG_PLATFORM_CHALLANGE_RESPONSE 0x15 152 #define LICENCE_TAG_ERROR_ALERT 0xff 153 154 #define BB_CLIENT_USER_NAME_BLOB 0x000f 155 #define BB_CLIENT_MACHINE_NAME_BLOB 0x0010 156 157 /* RDP PDU codes */ 158 enum RDP_PDU_TYPE 159 { 160 RDP_PDU_DEMAND_ACTIVE = 1, 161 RDP_PDU_CONFIRM_ACTIVE = 3, 162 RDP_PDU_REDIRECT = 4, /* Standard Server Redirect */ 163 RDP_PDU_DEACTIVATE = 6, 164 RDP_PDU_DATA = 7, 165 RDP_PDU_ENHANCED_REDIRECT = 10 /* Enhanced Server Redirect */ 166 }; 167 168 enum RDP_DATA_PDU_TYPE 169 { 170 RDP_DATA_PDU_UPDATE = 2, 171 RDP_DATA_PDU_CONTROL = 20, 172 RDP_DATA_PDU_POINTER = 27, 173 RDP_DATA_PDU_INPUT = 28, 174 RDP_DATA_PDU_SYNCHRONISE = 31, 175 RDP_DATA_PDU_BELL = 34, 176 RDP_DATA_PDU_CLIENT_WINDOW_STATUS = 35, 177 RDP_DATA_PDU_LOGON = 38, /* PDUTYPE2_SAVE_SESSION_INFO */ 178 RDP_DATA_PDU_FONT2 = 39, 179 RDP_DATA_PDU_KEYBOARD_INDICATORS = 41, 180 RDP_DATA_PDU_DISCONNECT = 47, 181 RDP_DATA_PDU_AUTORECONNECT_STATUS = 50 182 }; 183 184 enum RDP_SAVE_SESSION_PDU_TYPE 185 { 186 INFOTYPE_LOGON = 0, 187 INFOTYPE_LOGON_LONG = 1, 188 INFOTYPE_LOGON_PLAINNOTIFY = 2, 189 INFOTYPE_LOGON_EXTENDED_INF = 3 190 }; 191 192 enum RDP_LOGON_INFO_EXTENDED_TYPE 193 { 194 LOGON_EX_AUTORECONNECTCOOKIE = 1, 195 LOGON_EX_LOGONERRORS = 2 196 }; 197 198 enum RDP_CONTROL_PDU_TYPE 199 { 200 RDP_CTL_REQUEST_CONTROL = 1, 201 RDP_CTL_GRANT_CONTROL = 2, 202 RDP_CTL_DETACH = 3, 203 RDP_CTL_COOPERATE = 4 204 }; 205 206 enum RDP_UPDATE_PDU_TYPE 207 { 208 RDP_UPDATE_ORDERS = 0, 209 RDP_UPDATE_BITMAP = 1, 210 RDP_UPDATE_PALETTE = 2, 211 RDP_UPDATE_SYNCHRONIZE = 3 212 }; 213 214 enum RDP_POINTER_PDU_TYPE 215 { 216 RDP_POINTER_SYSTEM = 1, 217 RDP_POINTER_MOVE = 3, 218 RDP_POINTER_COLOR = 6, 219 RDP_POINTER_CACHED = 7, 220 RDP_POINTER_NEW = 8 221 }; 222 223 enum RDP_SYSTEM_POINTER_TYPE 224 { 225 RDP_NULL_POINTER = 0, 226 RDP_DEFAULT_POINTER = 0x7F00 227 }; 228 229 enum RDP_INPUT_DEVICE 230 { 231 RDP_INPUT_SYNCHRONIZE = 0, 232 RDP_INPUT_CODEPOINT = 1, 233 RDP_INPUT_VIRTKEY = 2, 234 RDP_INPUT_SCANCODE = 4, 235 RDP_INPUT_MOUSE = 0x8001 236 }; 237 238 /* Device flags */ 239 #define KBD_FLAG_RIGHT 0x0001 240 #define KBD_FLAG_EXT 0x0100 241 #define KBD_FLAG_QUIET 0x1000 242 #define KBD_FLAG_DOWN 0x4000 243 #define KBD_FLAG_UP 0x8000 244 245 /* These are for synchronization; not for keystrokes */ 246 #define KBD_FLAG_SCROLL 0x0001 247 #define KBD_FLAG_NUMLOCK 0x0002 248 #define KBD_FLAG_CAPITAL 0x0004 249 250 /* See T.128 */ 251 #define RDP_KEYPRESS 0 252 #define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP) 253 254 #define MOUSE_FLAG_MOVE 0x0800 255 #define MOUSE_FLAG_BUTTON1 0x1000 256 #define MOUSE_FLAG_BUTTON2 0x2000 257 #define MOUSE_FLAG_BUTTON3 0x4000 258 #define MOUSE_FLAG_BUTTON4 0x0280 259 #define MOUSE_FLAG_BUTTON5 0x0380 260 #define MOUSE_FLAG_DOWN 0x8000 261 262 /* Raster operation masks */ 263 #define ROP2_S(rop3) (rop3 & 0xf) 264 #define ROP2_P(rop3) ((rop3 & 0x3) | ((rop3 & 0x30) >> 2)) 265 266 #define ROP2_COPY 0xc 267 #define ROP2_XOR 0x6 268 #define ROP2_AND 0x8 269 #define ROP2_NXOR 0x9 270 #define ROP2_OR 0xe 271 272 #define MIX_TRANSPARENT 0 273 #define MIX_OPAQUE 1 274 275 #define TEXT2_VERTICAL 0x04 276 #define TEXT2_IMPLICIT_X 0x20 277 278 #define ALTERNATE 1 279 #define WINDING 2 280 281 /* RDP bitmap cache (version 2) constants */ 282 #define BMPCACHE2_C0_CELLS 0x78 283 #define BMPCACHE2_C1_CELLS 0x78 284 #define BMPCACHE2_C2_CELLS 0x150 285 #define BMPCACHE2_NUM_PSTCELLS 0x9f6 286 287 #define PDU_FLAG_FIRST 0x01 288 #define PDU_FLAG_LAST 0x02 289 290 /* RDP capabilities */ 291 #define RDP_CAPSET_GENERAL 1 /* Maps to generalCapabilitySet in T.128 page 138 */ 292 #define RDP_CAPLEN_GENERAL 0x18 293 #define OS_MAJOR_TYPE_UNIX 4 294 #define OS_MINOR_TYPE_XSERVER 7 295 296 #define RDP_CAPSET_BITMAP 2 297 #define RDP_CAPLEN_BITMAP 0x1C 298 299 #define RDP_CAPSET_ORDER 3 300 #define RDP_CAPLEN_ORDER 0x58 301 #define ORDER_CAP_NEGOTIATE 2 302 #define ORDER_CAP_NOSUPPORT 4 303 304 #define RDP_CAPSET_BMPCACHE 4 305 #define RDP_CAPLEN_BMPCACHE 0x28 306 307 #define RDP_CAPSET_CONTROL 5 308 #define RDP_CAPLEN_CONTROL 0x0C 309 310 #define RDP_CAPSET_ACTIVATE 7 311 #define RDP_CAPLEN_ACTIVATE 0x0C 312 313 #define RDP_CAPSET_POINTER 8 314 #define RDP_CAPLEN_POINTER 0x08 315 #define RDP_CAPLEN_NEWPOINTER 0x0a 316 317 #define RDP_CAPSET_SHARE 9 318 #define RDP_CAPLEN_SHARE 0x08 319 320 #define RDP_CAPSET_COLCACHE 10 321 #define RDP_CAPLEN_COLCACHE 0x08 322 323 #define RDP_CAPSET_BRUSHCACHE 15 324 #define RDP_CAPLEN_BRUSHCACHE 0x08 325 326 #define RDP_CAPSET_BMPCACHE2 19 327 #define RDP_CAPLEN_BMPCACHE2 0x28 328 #define BMPCACHE2_FLAG_PERSIST ((uint32)1<<31) 329 330 #define RDP_SOURCE "MSTSC" 331 332 /* Logon flags */ 333 #define RDP_INFO_MOUSE 0x00000001 334 #define RDP_INFO_DISABLECTRLALTDEL 0x00000002 335 #define RDP_INFO_AUTOLOGON 0x00000008 336 #define RDP_INFO_UNICODE 0x00000010 337 #define RDP_INFO_MAXIMIZESHELL 0x00000020 338 #define RDP_INFO_COMPRESSION 0x00000080 /* mppc compression with 8kB histroy buffer */ 339 #define RDP_INFO_ENABLEWINDOWSKEY 0x00000100 340 #define RDP_INFO_COMPRESSION2 0x00000200 /* rdp5 mppc compression with 64kB history buffer */ 341 #define RDP_INFO_REMOTE_CONSOLE_AUDIO 0x00002000 342 #define RDP_INFO_PASSWORD_IS_SC_PIN 0x00040000 343 344 /* TS_EXTENDED_INFO_PACKET.performanceFlags */ 345 #define PERF_DISABLE_WALLPAPER 0x01 346 #define PERF_DISABLE_FULLWINDOWDRAG 0x02 347 #define PERF_DISABLE_MENUANIMATIONS 0x04 348 #define PERF_DISABLE_THEMING 0x08 349 #define PERF_DISABLE_CURSOR_SHADOW 0x20 350 #define PERF_DISABLE_CURSORSETTINGS 0x40 /* disables cursor blinking */ 351 #define PERF_ENABLE_FONT_SMOOTHING 0x80 352 353 /* compression types */ 354 #define RDP_MPPC_BIG 0x01 355 #define RDP_MPPC_COMPRESSED 0x20 356 #define RDP_MPPC_RESET 0x40 357 #define RDP_MPPC_FLUSH 0x80 358 #define RDP_MPPC_DICT_SIZE 65536 359 360 #define RDP5_COMPRESSED 0x80 361 362 /* Keymap flags */ 363 #define MapRightShiftMask (1<<0) 364 #define MapLeftShiftMask (1<<1) 365 #define MapShiftMask (MapRightShiftMask | MapLeftShiftMask) 366 367 #define MapRightAltMask (1<<2) 368 #define MapLeftAltMask (1<<3) 369 #define MapAltGrMask MapRightAltMask 370 371 #define MapRightCtrlMask (1<<4) 372 #define MapLeftCtrlMask (1<<5) 373 #define MapCtrlMask (MapRightCtrlMask | MapLeftCtrlMask) 374 375 #define MapRightWinMask (1<<6) 376 #define MapLeftWinMask (1<<7) 377 #define MapWinMask (MapRightWinMask | MapLeftWinMask) 378 379 #define MapNumLockMask (1<<8) 380 #define MapCapsLockMask (1<<9) 381 382 #define MapLocalStateMask (1<<10) 383 384 #define MapInhibitMask (1<<11) 385 386 #define MASK_ADD_BITS(var, mask) (var |= mask) 387 #define MASK_REMOVE_BITS(var, mask) (var &= ~mask) 388 #define MASK_HAS_BITS(var, mask) ((var & mask)>0) 389 #define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask : 0))) 390 391 /* Clipboard constants, "borrowed" from GCC system headers in 392 the w32 cross compiler 393 this is the CF_ set when WINVER is 0x0400 */ 394 395 #ifndef CF_TEXT 396 #define CF_TEXT 1 397 #define CF_BITMAP 2 398 #define CF_METAFILEPICT 3 399 #define CF_SYLK 4 400 #define CF_DIF 5 401 #define CF_TIFF 6 402 #define CF_OEMTEXT 7 403 #define CF_DIB 8 404 #define CF_PALETTE 9 405 #define CF_PENDATA 10 406 #define CF_RIFF 11 407 #define CF_WAVE 12 408 #define CF_UNICODETEXT 13 409 #define CF_ENHMETAFILE 14 410 #define CF_HDROP 15 411 #define CF_LOCALE 16 412 #define CF_MAX 17 413 #define CF_OWNERDISPLAY 128 414 #define CF_DSPTEXT 129 415 #define CF_DSPBITMAP 130 416 #define CF_DSPMETAFILEPICT 131 417 #define CF_DSPENHMETAFILE 142 418 #define CF_PRIVATEFIRST 512 419 #define CF_PRIVATELAST 767 420 #define CF_GDIOBJFIRST 768 421 #define CF_GDIOBJLAST 1023 422 #endif 423 424 /* Sound format constants */ 425 #define WAVE_FORMAT_PCM 1 426 #define WAVE_FORMAT_ADPCM 2 427 #define WAVE_FORMAT_ALAW 6 428 #define WAVE_FORMAT_MULAW 7 429 430 /* Virtual channel options */ 431 #define CHANNEL_OPTION_INITIALIZED 0x80000000 432 #define CHANNEL_OPTION_ENCRYPT_RDP 0x40000000 433 #define CHANNEL_OPTION_COMPRESS_RDP 0x00800000 434 #define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000 435 436 /* NT status codes for RDPDR */ 437 #define RD_STATUS_SUCCESS 0x00000000 438 #define RD_STATUS_NOT_IMPLEMENTED 0x00000001 439 #define RD_STATUS_PENDING 0x00000103 440 441 #define RD_STATUS_NO_MORE_FILES 0x80000006 442 #define RD_STATUS_DEVICE_PAPER_EMPTY 0x8000000e 443 #define RD_STATUS_DEVICE_POWERED_OFF 0x8000000f 444 #define RD_STATUS_DEVICE_OFF_LINE 0x80000010 445 #define RD_STATUS_DEVICE_BUSY 0x80000011 446 447 #define RD_STATUS_INVALID_HANDLE 0xc0000008 448 #define RD_STATUS_INVALID_PARAMETER 0xc000000d 449 #define RD_STATUS_NO_SUCH_FILE 0xc000000f 450 #define RD_STATUS_INVALID_DEVICE_REQUEST 0xc0000010 451 #define RD_STATUS_ACCESS_DENIED 0xc0000022 452 #define RD_STATUS_OBJECT_NAME_COLLISION 0xc0000035 453 #define RD_STATUS_DISK_FULL 0xc000007f 454 #define RD_STATUS_FILE_IS_A_DIRECTORY 0xc00000ba 455 #define RD_STATUS_NOT_SUPPORTED 0xc00000bb 456 #define RD_STATUS_TIMEOUT 0xc0000102 457 #define RD_STATUS_NOTIFY_ENUM_DIR 0xc000010c 458 #define RD_STATUS_CANCELLED 0xc0000120 459 #define RD_STATUS_DIRECTORY_NOT_EMPTY 0xc0000101 460 461 /* RDPSND constants */ 462 #define TSSNDCAPS_ALIVE 0x00000001 463 #define TSSNDCAPS_VOLUME 0x00000002 464 465 /* RDPDR constants */ 466 467 #define RDPDR_CTYP_CORE 0x4472 468 #define RDPDR_CTYP_PRN 0x5052 469 470 #define PAKID_CORE_SERVER_ANNOUNCE 0x496e 471 #define PAKID_CORE_CLIENTID_CONFIRM 0x4343 472 #define PAKID_CORE_CLIENT_NAME 0x434e 473 #define PAKID_CORE_DEVICE_LIST_ANNOUNCE 0x4441 474 #define PAKID_CORE_DEVICE_REPLY 0x6472 475 #define PAKID_CORE_DEVICE_IOREQUEST 0x4952 476 #define PAKID_CORE_DEVICE_IOCOMPLETION 0x4943 477 #define PAKID_CORE_SERVER_CAPABILITY 0x5350 478 #define PAKID_CORE_CLIENT_CAPABILITY 0x4350 479 #define PAKID_CORE_DEVICELIST_REMOVE 0x444d 480 #define PAKID_PRN_CACHE_DATA 0x5043 481 #define PAKID_CORE_USER_LOGGEDON 0x554c 482 #define PAKID_PRN_USING_XPS 0x5543 483 484 #define RDPDR_MAX_DEVICES 0x10 485 #define DEVICE_TYPE_SERIAL 0x01 486 #define DEVICE_TYPE_PARALLEL 0x02 487 #define DEVICE_TYPE_PRINTER 0x04 488 #define DEVICE_TYPE_DISK 0x08 489 #define DEVICE_TYPE_SCARD 0x20 490 491 #define FILE_DIRECTORY_FILE 0x00000001 492 #define FILE_NON_DIRECTORY_FILE 0x00000040 493 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100 494 #define FILE_DELETE_ON_CLOSE 0x00001000 495 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 496 497 #define CAP_GENERAL_TYPE 0x0001 498 #define CAP_PRINTER_TYPE 0x0002 499 #define CAP_PORT_TYPE 0x0003 500 #define CAP_DRIVE_TYPE 0x0004 501 #define CAP_SMARTCARD_TYPE 0x0005 502 503 #define GENERAL_CAPABILITY_VERSION_01 0x00000001 504 #define GENERAL_CAPABILITY_VERSION_02 0x00000002 505 #define PRINT_CAPABILITY_VERSION_01 0x00000001 506 #define PORT_CAPABILITY_VERSION_01 0x00000001 507 #define DRIVE_CAPABILITY_VERSION_01 0x00000001 508 #define DRIVE_CAPABILITY_VERSION_02 0x00000002 509 #define SMARTCARD_CAPABILITY_VERSION_01 0x00000001 510 511 #define RDPDR_IRP_MJ_CREATE 0x00000001 512 #define RDPDR_IRP_MJ_CLEANUP 0x00000002 513 #define RDPDR_IRP_MJ_CLOSE 0x00000004 514 #define RDPDR_IRP_MJ_READ 0x00000008 515 #define RDPDR_IRP_MJ_WRITE 0x00000010 516 #define RDPDR_IRP_MJ_FLUSH_BUFFERS 0x00000020 517 #define RDPDR_IRP_MJ_SHUTDOWN 0x00000040 518 #define RDPDR_IRP_MJ_DEVICE_CONTROL 0x00000080 519 #define RDPDR_IRP_MJ_QUERY_VOLUME_INFORMATION 0x00000100 520 #define RDPDR_IRP_MJ_SET_VOLUME_INFORMATION 0x00000200 521 #define RDPDR_IRP_MJ_QUERY_INFORMATION 0x00000400 522 #define RDPDR_IRP_MJ_SET_INFORMATION 0x00000800 523 #define RDPDR_IRP_MJ_DIRECTORY_CONTROL 0x00001000 524 #define RDPDR_IRP_MJ_LOCK_CONTROL 0x00002000 525 #define RDPDR_IRP_MJ_QUERY_SECURITY 0x00004000 526 #define RDPDR_IRP_MJ_SET_SECURITY 0x00008000 527 #define ALL_RDPDR_IRP_MJ 0x0000FFFF 528 529 #define RDPDR_PRINTER_ANNOUNCE_FLAG_ASCII 0x00000001 530 #define RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER 0x00000002 531 #define RDPDR_PRINTER_ANNOUNCE_FLAG_NETWORKPRINTER 0x00000004 532 #define RDPDR_PRINTER_ANNOUNCE_FLAG_TSPRINTER 0x00000008 533 #define RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT 0x00000010 534 535 #define RDPDR_DEVICE_REMOVE_PDUS 0x00000001 536 #define RDPDR_CLIENT_DISPLAY_NAME_PDU 0x00000002 537 #define RDPDR_USER_LOGGEDON_PDU 0x00000004 538 539 /* RDP5 disconnect PDU */ 540 #define exDiscReasonNoInfo 0x0000 541 #define exDiscReasonAPIInitiatedDisconnect 0x0001 542 #define exDiscReasonAPIInitiatedLogoff 0x0002 543 #define exDiscReasonServerIdleTimeout 0x0003 544 #define exDiscReasonServerLogonTimeout 0x0004 545 #define exDiscReasonReplacedByOtherConnection 0x0005 546 #define exDiscReasonOutOfMemory 0x0006 547 #define exDiscReasonServerDeniedConnection 0x0007 548 #define exDiscReasonServerDeniedConnectionFips 0x0008 549 #define exDiscReasonServerInsufficientPrivileges 0x0009 550 #define exDiscReasonServerFreshCredentialsRequired 0x000a 551 #define exDiscReasonRPCInitiatedDisconnectByUser 0x000b 552 #define exDiscReasonByUser 0x000c 553 #define exDiscReasonLicenseInternal 0x0100 554 #define exDiscReasonLicenseNoLicenseServer 0x0101 555 #define exDiscReasonLicenseNoLicense 0x0102 556 #define exDiscReasonLicenseErrClientMsg 0x0103 557 #define exDiscReasonLicenseHwidDoesntMatchLicense 0x0104 558 #define exDiscReasonLicenseErrClientLicense 0x0105 559 #define exDiscReasonLicenseCantFinishProtocol 0x0106 560 #define exDiscReasonLicenseClientEndedProtocol 0x0107 561 #define exDiscReasonLicenseErrClientEncryption 0x0108 562 #define exDiscReasonLicenseCantUpgradeLicense 0x0109 563 #define exDiscReasonLicenseNoRemoteConnections 0x010a 564 565 /* SeamlessRDP constants */ 566 #define SEAMLESSRDP_NOTYETMAPPED -1 567 #define SEAMLESSRDP_NORMAL 0 568 #define SEAMLESSRDP_MINIMIZED 1 569 #define SEAMLESSRDP_MAXIMIZED 2 570 #define SEAMLESSRDP_POSITION_TIMER 200000 571 572 #define SEAMLESSRDP_CREATE_MODAL 0x0001 573 #define SEAMLESSRDP_CREATE_TOPMOST 0x0002 574 575 #define SEAMLESSRDP_HELLO_RECONNECT 0x0001 576 #define SEAMLESSRDP_HELLO_HIDDEN 0x0002 577 578 /* Smartcard constants */ 579 #define SCARD_LOCK_TCP 0 580 #define SCARD_LOCK_SEC 1 581 #define SCARD_LOCK_CHANNEL 2 582 #define SCARD_LOCK_RDPDR 3 583 #define SCARD_LOCK_LAST 4 584 585 586 /* redirect flags, from [MS-RDPBCGR] 2.2.13.1 */ 587 enum RDP_PDU_REDIRECT_FLAGS 588 { 589 LB_TARGET_NET_ADDRESS = 0x1, 590 LB_LOAD_BALANCE_INFO = 0x2, 591 LB_USERNAME = 0x4, 592 LB_DOMAIN = 0x8, 593 LB_PASSWORD = 0x10, 594 LB_DONTSTOREUSERNAME = 0x20, 595 LB_SMARTCARD_LOGON = 0x40, 596 LB_NOREDIRECT = 0x80, 597 LB_TARGET_FQDN = 0x100, 598 LB_TARGET_NETBIOS = 0x200, 599 LB_TARGET_NET_ADDRESSES = 0x800, 600 LB_CLIENT_TSV_URL = 0x1000, 601 LB_SERVER_TSV_CAPABLE = 0x2000, 602 LB_PASSWORD_IS_PK_ENCRYPTED = 0x4000, 603 LB_REDIRECTION_GUID = 0x8000, 604 LB_TARGET_CERTIFICATE = 0x10000 605 }; 606