VirtualBox

source: vbox/trunk/src/VBox/RDP/client/constants.h@ 35368

Last change on this file since 35368 was 33656, checked in by vboxsync, 14 years ago

*: rebrand Sun (L)GPL disclaimers

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 12.9 KB
Line 
1/*
2 rdesktop: A Remote Desktop Protocol client.
3 Miscellaneous protocol constants
4 Copyright (C) Matthew Chapman 1999-2007
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 2 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, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21/*
22 * Oracle GPL Disclaimer: For the avoidance of doubt, except that if any license choice
23 * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
24 * the General Public License version 2 (GPLv2) at this time for any software where
25 * a choice of GPL license versions is made available with the language indicating
26 * that GPLv2 or any later version may be used, or where a choice of which version
27 * of the GPL is applied is otherwise unspecified.
28 */
29
30/* TCP port for Remote Desktop Protocol */
31#define TCP_PORT_RDP 3389
32
33#define DEFAULT_CODEPAGE "UTF-8"
34#define WINDOWS_CODEPAGE "UTF-16LE"
35
36/* ISO PDU codes */
37enum ISO_PDU_CODE
38{
39 ISO_PDU_CR = 0xE0, /* Connection Request */
40 ISO_PDU_CC = 0xD0, /* Connection Confirm */
41 ISO_PDU_DR = 0x80, /* Disconnect Request */
42 ISO_PDU_DT = 0xF0, /* Data */
43 ISO_PDU_ER = 0x70 /* Error */
44};
45
46/* MCS PDU codes */
47enum MCS_PDU_TYPE
48{
49 MCS_EDRQ = 1, /* Erect Domain Request */
50 MCS_DPUM = 8, /* Disconnect Provider Ultimatum */
51 MCS_AURQ = 10, /* Attach User Request */
52 MCS_AUCF = 11, /* Attach User Confirm */
53 MCS_CJRQ = 14, /* Channel Join Request */
54 MCS_CJCF = 15, /* Channel Join Confirm */
55 MCS_SDRQ = 25, /* Send Data Request */
56 MCS_SDIN = 26 /* Send Data Indication */
57};
58
59#define MCS_CONNECT_INITIAL 0x7f65
60#define MCS_CONNECT_RESPONSE 0x7f66
61
62#define BER_TAG_BOOLEAN 1
63#define BER_TAG_INTEGER 2
64#define BER_TAG_OCTET_STRING 4
65#define BER_TAG_RESULT 10
66#define MCS_TAG_DOMAIN_PARAMS 0x30
67
68#define MCS_GLOBAL_CHANNEL 1003
69#define MCS_USERCHANNEL_BASE 1001
70
71/* RDP secure transport constants */
72#define SEC_RANDOM_SIZE 32
73#define SEC_MODULUS_SIZE 64
74#define SEC_MAX_MODULUS_SIZE 256
75#define SEC_PADDING_SIZE 8
76#define SEC_EXPONENT_SIZE 4
77
78#define SEC_CLIENT_RANDOM 0x0001
79#define SEC_ENCRYPT 0x0008
80#define SEC_LOGON_INFO 0x0040
81#define SEC_LICENCE_NEG 0x0080
82#define SEC_REDIRECT_ENCRYPT 0x0C00
83
84#define SEC_TAG_SRV_INFO 0x0c01
85#define SEC_TAG_SRV_CRYPT 0x0c02
86#define SEC_TAG_SRV_CHANNELS 0x0c03
87
88#define SEC_TAG_CLI_INFO 0xc001
89#define SEC_TAG_CLI_CRYPT 0xc002
90#define SEC_TAG_CLI_CHANNELS 0xc003
91#define SEC_TAG_CLI_4 0xc004
92
93#define SEC_TAG_PUBKEY 0x0006
94#define SEC_TAG_KEYSIG 0x0008
95
96#define SEC_RSA_MAGIC 0x31415352 /* RSA1 */
97
98/* RDP licensing constants */
99#define LICENCE_TOKEN_SIZE 10
100#define LICENCE_HWID_SIZE 20
101#define LICENCE_SIGNATURE_SIZE 16
102
103#define LICENCE_TAG_DEMAND 0x01
104#define LICENCE_TAG_AUTHREQ 0x02
105#define LICENCE_TAG_ISSUE 0x03
106#define LICENCE_TAG_REISSUE 0x04
107#define LICENCE_TAG_PRESENT 0x12
108#define LICENCE_TAG_REQUEST 0x13
109#define LICENCE_TAG_AUTHRESP 0x15
110#define LICENCE_TAG_RESULT 0xff
111
112#define LICENCE_TAG_USER 0x000f
113#define LICENCE_TAG_HOST 0x0010
114
115/* RDP PDU codes */
116enum RDP_PDU_TYPE
117{
118 RDP_PDU_DEMAND_ACTIVE = 1,
119 RDP_PDU_CONFIRM_ACTIVE = 3,
120 RDP_PDU_REDIRECT = 4, /* MS Server 2003 Session Redirect */
121 RDP_PDU_DEACTIVATE = 6,
122 RDP_PDU_DATA = 7
123};
124
125enum RDP_DATA_PDU_TYPE
126{
127 RDP_DATA_PDU_UPDATE = 2,
128 RDP_DATA_PDU_CONTROL = 20,
129 RDP_DATA_PDU_POINTER = 27,
130 RDP_DATA_PDU_INPUT = 28,
131 RDP_DATA_PDU_SYNCHRONISE = 31,
132 RDP_DATA_PDU_BELL = 34,
133 RDP_DATA_PDU_CLIENT_WINDOW_STATUS = 35,
134 RDP_DATA_PDU_LOGON = 38,
135 RDP_DATA_PDU_FONT2 = 39,
136 RDP_DATA_PDU_KEYBOARD_INDICATORS = 41,
137 RDP_DATA_PDU_DISCONNECT = 47
138};
139
140enum RDP_CONTROL_PDU_TYPE
141{
142 RDP_CTL_REQUEST_CONTROL = 1,
143 RDP_CTL_GRANT_CONTROL = 2,
144 RDP_CTL_DETACH = 3,
145 RDP_CTL_COOPERATE = 4
146};
147
148enum RDP_UPDATE_PDU_TYPE
149{
150 RDP_UPDATE_ORDERS = 0,
151 RDP_UPDATE_BITMAP = 1,
152 RDP_UPDATE_PALETTE = 2,
153 RDP_UPDATE_SYNCHRONIZE = 3
154};
155
156enum RDP_POINTER_PDU_TYPE
157{
158 RDP_POINTER_SYSTEM = 1,
159 RDP_POINTER_MOVE = 3,
160 RDP_POINTER_COLOR = 6,
161 RDP_POINTER_CACHED = 7
162};
163
164enum RDP_SYSTEM_POINTER_TYPE
165{
166 RDP_NULL_POINTER = 0,
167 RDP_DEFAULT_POINTER = 0x7F00
168};
169
170enum RDP_INPUT_DEVICE
171{
172 RDP_INPUT_SYNCHRONIZE = 0,
173 RDP_INPUT_CODEPOINT = 1,
174 RDP_INPUT_VIRTKEY = 2,
175 RDP_INPUT_SCANCODE = 4,
176 RDP_INPUT_MOUSE = 0x8001
177};
178
179/* Device flags */
180#define KBD_FLAG_RIGHT 0x0001
181#define KBD_FLAG_EXT 0x0100
182#define KBD_FLAG_EXT2 0x0200
183#define KBD_FLAG_QUIET 0x1000
184#define KBD_FLAG_DOWN 0x4000
185#define KBD_FLAG_UP 0x8000
186
187/* These are for synchronization; not for keystrokes */
188#define KBD_FLAG_SCROLL 0x0001
189#define KBD_FLAG_NUMLOCK 0x0002
190#define KBD_FLAG_CAPITAL 0x0004
191
192/* See T.128 */
193#define RDP_KEYPRESS 0
194#define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP)
195
196#define MOUSE_FLAG_MOVE 0x0800
197#define MOUSE_FLAG_BUTTON1 0x1000
198#define MOUSE_FLAG_BUTTON2 0x2000
199#define MOUSE_FLAG_BUTTON3 0x4000
200#define MOUSE_FLAG_BUTTON4 0x0280
201#define MOUSE_FLAG_BUTTON5 0x0380
202#define MOUSE_FLAG_DOWN 0x8000
203
204/* Raster operation masks */
205#define ROP2_S(rop3) (rop3 & 0xf)
206#define ROP2_P(rop3) ((rop3 & 0x3) | ((rop3 & 0x30) >> 2))
207
208#define ROP2_COPY 0xc
209#define ROP2_XOR 0x6
210#define ROP2_AND 0x8
211#define ROP2_NXOR 0x9
212#define ROP2_OR 0xe
213
214#define MIX_TRANSPARENT 0
215#define MIX_OPAQUE 1
216
217#define TEXT2_VERTICAL 0x04
218#define TEXT2_IMPLICIT_X 0x20
219
220#define ALTERNATE 1
221#define WINDING 2
222
223/* RDP bitmap cache (version 2) constants */
224#define BMPCACHE2_C0_CELLS 0x78
225#define BMPCACHE2_C1_CELLS 0x78
226#define BMPCACHE2_C2_CELLS 0x150
227#define BMPCACHE2_NUM_PSTCELLS 0x9f6
228
229#define PDU_FLAG_FIRST 0x01
230#define PDU_FLAG_LAST 0x02
231
232/* RDP capabilities */
233#define RDP_CAPSET_GENERAL 1 /* Maps to generalCapabilitySet in T.128 page 138 */
234#define RDP_CAPLEN_GENERAL 0x18
235#define OS_MAJOR_TYPE_UNIX 4
236#define OS_MINOR_TYPE_XSERVER 7
237
238#define RDP_CAPSET_BITMAP 2
239#define RDP_CAPLEN_BITMAP 0x1C
240
241#define RDP_CAPSET_ORDER 3
242#define RDP_CAPLEN_ORDER 0x58
243#define ORDER_CAP_NEGOTIATE 2
244#define ORDER_CAP_NOSUPPORT 4
245
246#define RDP_CAPSET_BMPCACHE 4
247#define RDP_CAPLEN_BMPCACHE 0x28
248
249#define RDP_CAPSET_CONTROL 5
250#define RDP_CAPLEN_CONTROL 0x0C
251
252#define RDP_CAPSET_ACTIVATE 7
253#define RDP_CAPLEN_ACTIVATE 0x0C
254
255#define RDP_CAPSET_POINTER 8
256#define RDP_CAPLEN_POINTER 0x08
257
258#define RDP_CAPSET_SHARE 9
259#define RDP_CAPLEN_SHARE 0x08
260
261#define RDP_CAPSET_COLCACHE 10
262#define RDP_CAPLEN_COLCACHE 0x08
263
264#define RDP_CAPSET_BMPCACHE2 19
265#define RDP_CAPLEN_BMPCACHE2 0x28
266#define BMPCACHE2_FLAG_PERSIST ((uint32)1<<31)
267
268#define RDP_SOURCE "MSTSC"
269
270/* Logon flags */
271#define RDP_LOGON_AUTO 0x0008
272#define RDP_LOGON_NORMAL 0x0033
273#define RDP_LOGON_COMPRESSION 0x0080 /* mppc compression with 8kB histroy buffer */
274#define RDP_LOGON_BLOB 0x0100
275#define RDP_LOGON_COMPRESSION2 0x0200 /* rdp5 mppc compression with 64kB history buffer */
276#define RDP_LOGON_LEAVE_AUDIO 0x2000
277
278#define RDP5_DISABLE_NOTHING 0x00
279#define RDP5_NO_WALLPAPER 0x01
280#define RDP5_NO_FULLWINDOWDRAG 0x02
281#define RDP5_NO_MENUANIMATIONS 0x04
282#define RDP5_NO_THEMING 0x08
283#define RDP5_NO_CURSOR_SHADOW 0x20
284#define RDP5_NO_CURSORSETTINGS 0x40 /* disables cursor blinking */
285
286/* compression types */
287#define RDP_MPPC_BIG 0x01
288#define RDP_MPPC_COMPRESSED 0x20
289#define RDP_MPPC_RESET 0x40
290#define RDP_MPPC_FLUSH 0x80
291#define RDP_MPPC_DICT_SIZE 65536
292
293#define RDP5_COMPRESSED 0x80
294
295/* Keymap flags */
296#define MapRightShiftMask (1<<0)
297#define MapLeftShiftMask (1<<1)
298#define MapShiftMask (MapRightShiftMask | MapLeftShiftMask)
299
300#define MapRightAltMask (1<<2)
301#define MapLeftAltMask (1<<3)
302#define MapAltGrMask MapRightAltMask
303
304#define MapRightCtrlMask (1<<4)
305#define MapLeftCtrlMask (1<<5)
306#define MapCtrlMask (MapRightCtrlMask | MapLeftCtrlMask)
307
308#define MapRightWinMask (1<<6)
309#define MapLeftWinMask (1<<7)
310#define MapWinMask (MapRightWinMask | MapLeftWinMask)
311
312#define MapNumLockMask (1<<8)
313#define MapCapsLockMask (1<<9)
314
315#define MapLocalStateMask (1<<10)
316
317#define MapInhibitMask (1<<11)
318
319#define MASK_ADD_BITS(var, mask) (var |= mask)
320#define MASK_REMOVE_BITS(var, mask) (var &= ~mask)
321#define MASK_HAS_BITS(var, mask) ((var & mask)>0)
322#define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask : 0)))
323
324/* Clipboard constants, "borrowed" from GCC system headers in
325 the w32 cross compiler
326 this is the CF_ set when WINVER is 0x0400 */
327
328#ifndef CF_TEXT
329#define CF_TEXT 1
330#define CF_BITMAP 2
331#define CF_METAFILEPICT 3
332#define CF_SYLK 4
333#define CF_DIF 5
334#define CF_TIFF 6
335#define CF_OEMTEXT 7
336#define CF_DIB 8
337#define CF_PALETTE 9
338#define CF_PENDATA 10
339#define CF_RIFF 11
340#define CF_WAVE 12
341#define CF_UNICODETEXT 13
342#define CF_ENHMETAFILE 14
343#define CF_HDROP 15
344#define CF_LOCALE 16
345#define CF_MAX 17
346#define CF_OWNERDISPLAY 128
347#define CF_DSPTEXT 129
348#define CF_DSPBITMAP 130
349#define CF_DSPMETAFILEPICT 131
350#define CF_DSPENHMETAFILE 142
351#define CF_PRIVATEFIRST 512
352#define CF_PRIVATELAST 767
353#define CF_GDIOBJFIRST 768
354#define CF_GDIOBJLAST 1023
355#endif
356
357/* Sound format constants */
358#define WAVE_FORMAT_PCM 1
359#define WAVE_FORMAT_ADPCM 2
360#define WAVE_FORMAT_ALAW 6
361#define WAVE_FORMAT_MULAW 7
362
363/* Virtual channel options */
364#define CHANNEL_OPTION_INITIALIZED 0x80000000
365#define CHANNEL_OPTION_ENCRYPT_RDP 0x40000000
366#define CHANNEL_OPTION_COMPRESS_RDP 0x00800000
367#define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000
368
369/* NT status codes for RDPDR */
370#define RD_STATUS_SUCCESS 0x00000000
371#define RD_STATUS_NOT_IMPLEMENTED 0x00000001
372#define RD_STATUS_PENDING 0x00000103
373
374#define RD_STATUS_NO_MORE_FILES 0x80000006
375#define RD_STATUS_DEVICE_PAPER_EMPTY 0x8000000e
376#define RD_STATUS_DEVICE_POWERED_OFF 0x8000000f
377#define RD_STATUS_DEVICE_OFF_LINE 0x80000010
378#define RD_STATUS_DEVICE_BUSY 0x80000011
379
380#define RD_STATUS_INVALID_HANDLE 0xc0000008
381#define RD_STATUS_INVALID_PARAMETER 0xc000000d
382#define RD_STATUS_NO_SUCH_FILE 0xc000000f
383#define RD_STATUS_INVALID_DEVICE_REQUEST 0xc0000010
384#define RD_STATUS_ACCESS_DENIED 0xc0000022
385#define RD_STATUS_OBJECT_NAME_COLLISION 0xc0000035
386#define RD_STATUS_DISK_FULL 0xc000007f
387#define RD_STATUS_FILE_IS_A_DIRECTORY 0xc00000ba
388#define RD_STATUS_NOT_SUPPORTED 0xc00000bb
389#define RD_STATUS_TIMEOUT 0xc0000102
390#define RD_STATUS_NOTIFY_ENUM_DIR 0xc000010c
391#define RD_STATUS_CANCELLED 0xc0000120
392
393
394/* RDPDR constants */
395#define RDPDR_MAX_DEVICES 0x10
396#define DEVICE_TYPE_SERIAL 0x01
397#define DEVICE_TYPE_PARALLEL 0x02
398#define DEVICE_TYPE_PRINTER 0x04
399#define DEVICE_TYPE_DISK 0x08
400#define DEVICE_TYPE_SCARD 0x20
401
402#define FILE_DIRECTORY_FILE 0x00000001
403#define FILE_NON_DIRECTORY_FILE 0x00000040
404#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
405#define FILE_DELETE_ON_CLOSE 0x00001000
406#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
407
408/* RDP5 disconnect PDU */
409#define exDiscReasonNoInfo 0x0000
410#define exDiscReasonAPIInitiatedDisconnect 0x0001
411#define exDiscReasonAPIInitiatedLogoff 0x0002
412#define exDiscReasonServerIdleTimeout 0x0003
413#define exDiscReasonServerLogonTimeout 0x0004
414#define exDiscReasonReplacedByOtherConnection 0x0005
415#define exDiscReasonOutOfMemory 0x0006
416#define exDiscReasonServerDeniedConnection 0x0007
417#define exDiscReasonServerDeniedConnectionFips 0x0008
418#define exDiscReasonLicenseInternal 0x0100
419#define exDiscReasonLicenseNoLicenseServer 0x0101
420#define exDiscReasonLicenseNoLicense 0x0102
421#define exDiscReasonLicenseErrClientMsg 0x0103
422#define exDiscReasonLicenseHwidDoesntMatchLicense 0x0104
423#define exDiscReasonLicenseErrClientLicense 0x0105
424#define exDiscReasonLicenseCantFinishProtocol 0x0106
425#define exDiscReasonLicenseClientEndedProtocol 0x0107
426#define exDiscReasonLicenseErrClientEncryption 0x0108
427#define exDiscReasonLicenseCantUpgradeLicense 0x0109
428#define exDiscReasonLicenseNoRemoteConnections 0x010a
429
430/* SeamlessRDP constants */
431#define SEAMLESSRDP_NOTYETMAPPED -1
432#define SEAMLESSRDP_NORMAL 0
433#define SEAMLESSRDP_MINIMIZED 1
434#define SEAMLESSRDP_MAXIMIZED 2
435#define SEAMLESSRDP_POSITION_TIMER 200000
436
437#define SEAMLESSRDP_CREATE_MODAL 0x0001
438#define SEAMLESSRDP_CREATE_TOPMOST 0x0002
439
440#define SEAMLESSRDP_HELLO_RECONNECT 0x0001
441#define SEAMLESSRDP_HELLO_HIDDEN 0x0002
442
443/* Smartcard constants */
444#define SCARD_LOCK_TCP 0
445#define SCARD_LOCK_SEC 1
446#define SCARD_LOCK_CHANNEL 2
447#define SCARD_LOCK_RDPDR 3
448#define SCARD_LOCK_LAST 4
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette