21#define TCP_PORT_RDP 3389
23#define DEFAULT_CODEPAGE "UTF-8"
24#define WINDOWS_CODEPAGE "UTF-16LE"
74#define MCS_CONNECT_INITIAL 0x7f65
75#define MCS_CONNECT_RESPONSE 0x7f66
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
85#define MCS_TAG_DOMAIN_PARAMS 0x30
87#define MCS_GLOBAL_CHANNEL 1003
88#define MCS_USERCHANNEL_BASE 1001
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
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
115#define SEC_TAG_SRV_INFO 0x0c01
116#define SEC_TAG_SRV_CRYPT 0x0c02
117#define SEC_TAG_SRV_CHANNELS 0x0c03
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
124#define SEC_TAG_PUBKEY 0x0006
125#define SEC_TAG_KEYSIG 0x0008
127#define SEC_RSA_MAGIC 0x31415352
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
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
141#define LICENCE_TOKEN_SIZE 10
142#define LICENCE_HWID_SIZE 20
143#define LICENCE_SIGNATURE_SIZE 16
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
154#define BB_CLIENT_USER_NAME_BLOB 0x000f
155#define BB_CLIENT_MACHINE_NAME_BLOB 0x0010
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
246#define KBD_FLAG_SCROLL 0x0001
247#define KBD_FLAG_NUMLOCK 0x0002
248#define KBD_FLAG_CAPITAL 0x0004
251#define RDP_KEYPRESS 0
252#define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP)
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
263#define ROP2_S(rop3) (rop3 & 0xf)
264#define ROP2_P(rop3) ((rop3 & 0x3) | ((rop3 & 0x30) >> 2))
272#define MIX_TRANSPARENT 0
275#define TEXT2_VERTICAL 0x04
276#define TEXT2_IMPLICIT_X 0x20
282#define BMPCACHE2_C0_CELLS 0x78
283#define BMPCACHE2_C1_CELLS 0x78
284#define BMPCACHE2_C2_CELLS 0x150
285#define BMPCACHE2_NUM_PSTCELLS 0x9f6
287#define PDU_FLAG_FIRST 0x01
288#define PDU_FLAG_LAST 0x02
291#define RDP_CAPSET_GENERAL 1
292#define RDP_CAPLEN_GENERAL 0x18
293#define OS_MAJOR_TYPE_UNIX 4
294#define OS_MINOR_TYPE_XSERVER 7
296#define RDP_CAPSET_BITMAP 2
297#define RDP_CAPLEN_BITMAP 0x1C
299#define RDP_CAPSET_ORDER 3
300#define RDP_CAPLEN_ORDER 0x58
301#define ORDER_CAP_NEGOTIATE 2
302#define ORDER_CAP_NOSUPPORT 4
304#define RDP_CAPSET_BMPCACHE 4
305#define RDP_CAPLEN_BMPCACHE 0x28
307#define RDP_CAPSET_CONTROL 5
308#define RDP_CAPLEN_CONTROL 0x0C
310#define RDP_CAPSET_ACTIVATE 7
311#define RDP_CAPLEN_ACTIVATE 0x0C
313#define RDP_CAPSET_POINTER 8
314#define RDP_CAPLEN_POINTER 0x08
315#define RDP_CAPLEN_NEWPOINTER 0x0a
317#define RDP_CAPSET_SHARE 9
318#define RDP_CAPLEN_SHARE 0x08
320#define RDP_CAPSET_COLCACHE 10
321#define RDP_CAPLEN_COLCACHE 0x08
323#define RDP_CAPSET_BRUSHCACHE 15
324#define RDP_CAPLEN_BRUSHCACHE 0x08
326#define RDP_CAPSET_BMPCACHE2 19
327#define RDP_CAPLEN_BMPCACHE2 0x28
328#define BMPCACHE2_FLAG_PERSIST ((uint32)1<<31)
330#define RDP_SOURCE "MSTSC"
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
339#define RDP_INFO_ENABLEWINDOWSKEY 0x00000100
340#define RDP_INFO_COMPRESSION2 0x00000200
341#define RDP_INFO_REMOTE_CONSOLE_AUDIO 0x00002000
342#define RDP_INFO_PASSWORD_IS_SC_PIN 0x00040000
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
351#define PERF_ENABLE_FONT_SMOOTHING 0x80
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
360#define RDP5_COMPRESSED 0x80
363#define MapRightShiftMask (1<<0)
364#define MapLeftShiftMask (1<<1)
365#define MapShiftMask (MapRightShiftMask | MapLeftShiftMask)
367#define MapRightAltMask (1<<2)
368#define MapLeftAltMask (1<<3)
369#define MapAltGrMask MapRightAltMask
371#define MapRightCtrlMask (1<<4)
372#define MapLeftCtrlMask (1<<5)
373#define MapCtrlMask (MapRightCtrlMask | MapLeftCtrlMask)
375#define MapRightWinMask (1<<6)
376#define MapLeftWinMask (1<<7)
377#define MapWinMask (MapRightWinMask | MapLeftWinMask)
379#define MapNumLockMask (1<<8)
380#define MapCapsLockMask (1<<9)
382#define MapLocalStateMask (1<<10)
384#define MapInhibitMask (1<<11)
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)))
398#define CF_METAFILEPICT 3
408#define CF_UNICODETEXT 13
409#define CF_ENHMETAFILE 14
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
425#define WAVE_FORMAT_PCM 1
426#define WAVE_FORMAT_ADPCM 2
427#define WAVE_FORMAT_ALAW 6
428#define WAVE_FORMAT_MULAW 7
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
437#define RD_STATUS_SUCCESS 0x00000000
438#define RD_STATUS_NOT_IMPLEMENTED 0x00000001
439#define RD_STATUS_PENDING 0x00000103
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
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
462#define TSSNDCAPS_ALIVE 0x00000001
463#define TSSNDCAPS_VOLUME 0x00000002
467#define RDPDR_CTYP_CORE 0x4472
468#define RDPDR_CTYP_PRN 0x5052
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
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
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
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
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
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
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
535#define RDPDR_DEVICE_REMOVE_PDUS 0x00000001
536#define RDPDR_CLIENT_DISPLAY_NAME_PDU 0x00000002
537#define RDPDR_USER_LOGGEDON_PDU 0x00000004
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
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
572#define SEAMLESSRDP_CREATE_MODAL 0x0001
573#define SEAMLESSRDP_CREATE_TOPMOST 0x0002
575#define SEAMLESSRDP_HELLO_RECONNECT 0x0001
576#define SEAMLESSRDP_HELLO_HIDDEN 0x0002
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
@ LB_PASSWORD_IS_PK_ENCRYPTED
@ LB_TARGET_NET_ADDRESSES
@ HYBRID_REQUIRED_BY_SERVER
@ SSL_WITH_USER_AUTH_REQUIRED_BY_SERVER
@ SSL_NOT_ALLOWED_BY_SERVER
RDP_SAVE_SESSION_PDU_TYPE
@ INFOTYPE_LOGON_EXTENDED_INF
@ INFOTYPE_LOGON_PLAINNOTIFY
@ RDP_CTL_REQUEST_CONTROL
@ RDP_DATA_PDU_CLIENT_WINDOW_STATUS
@ RDP_DATA_PDU_KEYBOARD_INDICATORS
@ RDP_DATA_PDU_SYNCHRONISE
@ RDP_DATA_PDU_AUTORECONNECT_STATUS
@ RDP_DATA_PDU_DISCONNECT
RDP_LOGON_INFO_EXTENDED_TYPE
@ LOGON_EX_AUTORECONNECTCOOKIE
@ RDP_PDU_ENHANCED_REDIRECT