1
/* -*- c-basic-offset: 8 -*-
2
FreeRDP: A Remote Desktop Protocol client.
3
RAIL (Remote Application Integrated Locally) constants
5
Copyright (C) Marc-Andre Moreau <marcandre.moreau@gmail.com> 2009
7
This program is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 2 of the License, or
10
(at your option) any later version.
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with this program; if not, write to the Free Software
19
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22
#ifndef __RDPDR_CONSTANTS_H
23
#define __RDPDR_CONSTANTS_H
25
/* RDPDR_HEADER.Component */
26
#define RDPDR_CTYP_CORE 0x4472 // "sD" "Ds" ???
27
#define RDPDR_CTYP_PRN 0x5052 // "RP" "PR" (PR)inting
29
/* RDPDR_HEADER.PacketId */
30
#define PAKID_CORE_SERVER_ANNOUNCE 0x496E // "nI" "nI" ???
31
#define PAKID_CORE_CLIENTID_CONFIRM 0x4343 // "CC" "CC" (C)lientID (C)onfirm
32
#define PAKID_CORE_CLIENT_NAME 0x434E // "NC" "CN" (C)lient (N)ame
33
#define PAKID_CORE_DEVICELIST_ANNOUNCE 0x4441 // "AD" "DA" (D)evice (A)nnounce
34
#define PAKID_CORE_DEVICE_REPLY 0x6472 // "rd" "dr" (d)evice (r)eply
35
#define PAKID_CORE_DEVICE_IOREQUEST 0x4952 // "RI" "IR" (I)O (R)equest
36
#define PAKID_CORE_DEVICE_IOCOMPLETION 0x4943 // "CI" "IC" (I)O (C)ompletion
37
#define PAKID_CORE_SERVER_CAPABILITY 0x5350 // "PS" "SP" (S)erver (C)apability
38
#define PAKID_CORE_CLIENT_CAPABILITY 0x4350 // "PC" "CP" (C)lient (C)apability
39
#define PAKID_CORE_DEVICELIST_REMOVE 0x444D // "MD" "DM" (D)evice list (R)emove
40
#define PAKID_PRN_CACHE_DATA 0x5043 // "CP" "PC" (P)rinter (C)ache data
41
#define PAKID_CORE_USER_LOGGEDON 0x554C // "LU" "UL" (U)ser (L)ogged on
42
#define PAKID_PRN_USING_XPS 0x5543 // "CU" "UC" (U)sing (?)XPS
44
/* CAPABILITY_HEADER.CapabilityType */
45
#define CAP_GENERAL_TYPE 0x0001
46
#define CAP_PRINTER_TYPE 0x0002
47
#define CAP_PORT_TYPE 0x0003
48
#define CAP_DRIVE_TYPE 0x0004
49
#define CAP_SMARTCARD_TYPE 0x0005
51
/* CAPABILITY_HEADER.Version */
52
#define GENERAL_CAPABILITY_VERSION_01 0x00000001
53
#define GENERAL_CAPABILITY_VERSION_02 0x00000002
54
#define PRINT_CAPABILITY_VERSION_01 0x00000001
55
#define PORT_CAPABILITY_VERSION_01 0x00000001
56
#define DRIVE_CAPABILITY_VERSION_01 0x00000001
57
#define DRIVE_CAPABILITY_VERSION_02 0x00000002
58
#define SMARTCARD_CAPABILITY_VERSION_01 0x00000001
60
/* DEVICE_ANNOUNCE.DeviceType */
61
#define RDPDR_DTYP_SERIAL 0x00000001
62
#define RDPDR_DTYP_PARALLEL 0x00000002
63
#define RDPDR_DTYP_PRINT 0x00000004
64
#define RDPDR_DTYP_FILESYSTEM 0x00000008
65
#define RDPDR_DTYP_SMARTCARD 0x00000020
67
/* DR_DEVICE_IOREQUEST.MajorFunction */
68
#define IRP_MJ_CREATE 0x00000000
69
#define IRP_MJ_CLOSE 0x00000002
70
#define IRP_MJ_READ 0x00000003
71
#define IRP_MJ_WRITE 0x00000004
72
#define IRP_MJ_DEVICE_CONTROL 0x0000000E
73
#define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0000000A
74
#define IRP_MJ_SET_VOLUME_INFORMATION 0x0000000B
75
#define IRP_MJ_QUERY_INFORMATION 0x00000005
76
#define IRP_MJ_SET_INFORMATION 0x00000006
77
#define IRP_MJ_DIRECTORY_CONTROL 0x0000000C
78
#define IRP_MJ_LOCK_CONTROL 0x00000011
80
/* DR_DEVICE_IOREQUEST.MinorFunction */
81
#define IRP_MN_QUERY_DIRECTORY 0x00000001
82
#define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x00000002
84
/* DR_CREATE_REQ.CreateDisposition */
85
#define FILE_SUPERSEDE 0x00000000
86
#define FILE_OPEN 0x00000001
87
#define FILE_CREATE 0x00000002
88
#define FILE_OPEN_IF 0x00000003
89
#define FILE_OVERWRITE 0x00000004
90
#define FILE_OVERWRITE_IF 0x00000005
92
/* DR_CREATE_REQ.CreateOptions [MS-SMB2] */
93
#define FILE_DIRECTORY_FILE 0x00000001
94
#define FILE_NON_DIRECTORY_FILE 0x00000040
95
#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
96
#define FILE_DELETE_ON_CLOSE 0x00001000
97
#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
99
/* DR_CREATE_REQ.DesiredAccess [MS-SMB2] */
100
#define FILE_READ_DATA 0x00000001
101
#define FILE_WRITE_DATA 0x00000002
102
#define FILE_APPEND_DATA 0x00000004
103
#define FILE_READ_EA 0x00000008
104
#define FILE_WRITE_EA 0x00000010
105
#define FILE_EXECUTE 0x00000020
106
#define FILE_READ_ATTRIBUTES 0x00000080
107
#define FILE_WRITE_ATTRIBUTES 0x00000100
108
#define DELETE 0x00010000
109
#define READ_CONTROL 0x00020000
110
#define WRITE_DAC 0x00040000
111
#define WRITE_OWNER 0x00080000
112
#define SYNCHRONIZE 0x00100000
113
#define ACCESS_SYSTEM_SECURITY 0x01000000
114
#define MAXIMUM_ALLOWED 0x02000000
115
#define GENERIC_ALL 0x10000000
116
#define GENERIC_EXECUTE 0x20000000
117
#define GENERIC_WRITE 0x40000000
118
#define GENERIC_READ 0x80000000
120
/* DR_CREATE_RSP.Information */
121
/* DR_DRIVE_CREATE_RSP.DeviceCreateResponse */
122
#define FILE_SUPERSEDED 0x00000000
123
#define FILE_OPENED 0x00000001
124
#define FILE_OVERWRITTEN 0x00000003
126
/* DR_CORE_CLIENT_ANNOUNCE_RSP.VersionMinor */
127
#define RDPDR_MINOR_RDP_VERSION_5_0 0x0002
128
#define RDPDR_MINOR_RDP_VERSION_5_1 0x0005
129
#define RDPDR_MINOR_RDP_VERSION_5_2 0x000A
130
#define RDPDR_MINOR_RDP_VERSION_6_X 0x000C
132
/* DR_CORE_CLIENT_NAME_REQ.UnicodeFlag */
133
#define RDPDR_CLIENT_NAME_UNICODE 0x00000001
134
#define RDPDR_CLIENT_NAME_ASCII 0x00000000
136
/* GENERAL_CAPS_SET.ioCode1 */
137
#define RDPDR_IRP_MJ_CREATE 0x00000001
138
#define RDPDR_IRP_MJ_CLEANUP 0x00000002
139
#define RDPDR_IRP_MJ_CLOSE 0x00000004
140
#define RDPDR_IRP_MJ_READ 0x00000008
141
#define RDPDR_IRP_MJ_WRITE 0x00000010
142
#define RDPDR_IRP_MJ_FLUSH_BUFFERS 0x00000020
143
#define RDPDR_IRP_MJ_SHUTDOWN 0x00000040
144
#define RDPDR_IRP_MJ_DEVICE_CONTROL 0x00000080
145
#define RDPDR_IRP_MJ_QUERY_VOLUME_INFORMATION 0x00000100
146
#define RDPDR_IRP_MJ_SET_VOLUME_INFORMATION 0x00000200
147
#define RDPDR_IRP_MJ_QUERY_INFORMATION 0x00000400
148
#define RDPDR_IRP_MJ_SET_INFORMATION 0x00000800
149
#define RDPDR_IRP_MJ_DIRECTORY_CONTROL 0x00001000
150
#define RDPDR_IRP_MJ_LOCK_CONTROL 0x00002000
151
#define RDPDR_IRP_MJ_QUERY_SECURITY 0x00004000
152
#define RDPDR_IRP_MJ_SET_SECURITY 0x00008000
154
/* GENERAL_CAPS_SET.extendedPDU */
155
#define RDPDR_DEVICE_REMOVE_PDUS 0x00000001
156
#define RDPDR_CLIENT_DISPLAY_NAME_PDU 0x00000002
157
#define RDPDR_USER_LOGGEDON_PDU 0x00000004
159
/* GENERAL_CAPS_SET.extraFlags1 */
160
#define ENABLE_ASYNCIO 0x00000001
162
/* DR_DRIVE_LOCK_REQ.Operation */
163
#define RDP_LOWIO_OP_SHAREDLOCK 0x00000002
164
#define RDP_LOWIO_OP_EXCLUSIVELOCK 0x00000003
165
#define RDP_LOWIO_OP_UNLOCK 0x00000004
166
#define RDP_LOWIO_OP_UNLOCK_MULTIPLE 0x00000005
168
/* NT status codes for RDPDR */
169
#define RD_STATUS_SUCCESS 0x00000000
170
#define RD_STATUS_NOT_IMPLEMENTED 0x00000001
171
#define RD_STATUS_PENDING 0x00000103
173
#define RD_STATUS_NO_MORE_FILES 0x80000006
174
#define RD_STATUS_DEVICE_PAPER_EMPTY 0x8000000e
175
#define RD_STATUS_DEVICE_POWERED_OFF 0x8000000f
176
#define RD_STATUS_DEVICE_OFF_LINE 0x80000010
177
#define RD_STATUS_DEVICE_BUSY 0x80000011
179
#define RD_STATUS_INVALID_HANDLE 0xc0000008
180
#define RD_STATUS_INVALID_PARAMETER 0xc000000d
181
#define RD_STATUS_NO_SUCH_FILE 0xc000000f
182
#define RD_STATUS_INVALID_DEVICE_REQUEST 0xc0000010
183
#define RD_STATUS_ACCESS_DENIED 0xc0000022
184
#define RD_STATUS_OBJECT_NAME_COLLISION 0xc0000035
185
#define RD_STATUS_DISK_FULL 0xc000007f
186
#define RD_STATUS_FILE_IS_A_DIRECTORY 0xc00000ba
187
#define RD_STATUS_NOT_SUPPORTED 0xc00000bb
188
#define RD_STATUS_TIMEOUT 0xc0000102
189
#define RD_STATUS_NOTIFY_ENUM_DIR 0xc000010c
190
#define RD_STATUS_CANCELLED 0xc0000120
192
#define RDPDR_MAX_DEVICES 0x10
194
#define RDPDR_PRINTER_ANNOUNCE_FLAG_ASCII 0x00000001
195
#define RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER 0x00000002
196
#define RDPDR_PRINTER_ANNOUNCE_FLAG_NETWORKPRINTER 0x00000004
197
#define RDPDR_PRINTER_ANNOUNCE_FLAG_TSPRINTER 0x00000008
198
#define RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT 0x00000010
200
/* Smartcard constants */
201
#define SCARD_LOCK_TCP 0
202
#define SCARD_LOCK_SEC 1
203
#define SCARD_LOCK_CHANNEL 2
204
#define SCARD_LOCK_RDPDR 3
205
#define SCARD_LOCK_LAST 4
207
/* [MS-FSCC] FileAttributes */
208
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
209
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
210
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
211
#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
212
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
213
#define FILE_ATTRIBUTE_NORMAL 0x00000080
214
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
215
#define FILE_ATTRIBUTE_OFFLINE 0x00001000
216
#define FILE_ATTRIBUTE_READONLY 0x00000001
217
#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
218
#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
219
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
220
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
222
/* [MS-FSCC] FSCTL Structures */
223
#define FSCTL_GET_REPARSE_POINT 0x900a8
224
#define FSCTL_GET_RETRIEVAL_POINTERS 0x90073
225
#define FSCTL_IS_PATHNAME_VALID 0x9002c
226
#define FSCTL_LMR_SET_LINK_TRACKING_INFORMATION 0x1400ec
227
#define FSCTL_PIPE_PEEK 0x11400c
228
#define FSCTL_PIPE_TRANSCEIVE 0x11c017
229
#define FSCTL_PIPE_WAIT 0x110018
230
#define FSCTL_QUERY_FAT_BPB 0x90058
231
#define FSCTL_QUERY_ALLOCATED_RANGES 0x940cf
232
#define FSCTL_QUERY_ON_DISK_VOLUME_INFO 0x9013c
233
#define FSCTL_QUERY_SPARING_INFO 0x90138
234
#define FSCTL_READ_FILE_USN_DATA 0x900eb
235
#define FSCTL_RECALL_FILE 0x90117
236
#define FSCTL_SET_COMPRESSION 0x9c040
237
#define FSCTL_SET_DEFECT_MANAGEMENT 0x98134
238
#define FSCTL_SET_ENCRYPTION 0x900D7
239
#define FSCTL_SET_OBJECT_ID 0x90098
240
#define FSCTL_SET_OBJECT_ID_EXTENDED 0x900bc
241
#define FSCTL_SET_REPARSE_POINT 0x900a4
242
#define FSCTL_SET_SPARSE 0x900c4
243
#define FSCTL_SET_ZERO_DATA 0x980c8
244
#define FSCTL_SET_ZERO_ON_DEALLOCATION 0x90194
245
#define FSCTL_SIS_COPYFILE 0x90100
246
#define FSCTL_WRITE_USN_CLOSE_RECORD 0x900ef
248
/* [MS-FSCC] FileFsAttributeInformation.FileSystemAttributes */
249
#define FILE_SUPPORTS_USN_JOURNAL 0x02000000
250
#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
251
#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
252
#define FILE_SUPPORTS_HARD_LINKS 0x00400000
253
#define FILE_SUPPORTS_TRANSACTIONS 0x00200000
254
#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000
255
#define FILE_READ_ONLY_VOLUME 0x00080000
256
#define FILE_NAMED_STREAMS 0x00040000
257
#define FILE_SUPPORTS_ENCRYPTION 0x00020000
258
#define FILE_SUPPORTS_OBJECT_IDS 0x00010000
259
#define FILE_VOLUME_IS_COMPRESSED 0x00008000
260
#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
261
#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
262
#define FILE_SUPPORTS_SPARSE_FILES 0x00000040
263
#define FILE_VOLUME_QUOTAS 0x00000020
264
#define FILE_FILE_COMPRESSION 0x00000010
265
#define FILE_PERSISTENT_ACLS 0x00000008
266
#define FILE_UNICODE_ON_DISK 0x00000004
267
#define FILE_CASE_PRESERVED_NAMES 0x00000002
268
#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
270
/* [MS-FSCC] FileFsDeviceInformation.DeviceType */
271
#define FILE_DEVICE_CD_ROM 0x00000002
272
#define FILE_DEVICE_DISK 0x00000007
274
/* [MS-FSCC] FileFsDeviceInformation.Characteristics */
275
#define FILE_REMOVABLE_MEDIA 0x00000001
276
#define FILE_READ_ONLY_DEVICE 0x00000002
277
#define FILE_FLOPPY_DISKETTE 0x00000004
278
#define FILE_WRITE_ONCE_MEDIA 0x00000008
279
#define FILE_REMOTE_DEVICE 0x00000010
280
#define FILE_DEVICE_IS_MOUNTED 0x00000020
281
#define FILE_VIRTUAL_VOLUME 0x00000040
282
#define FILE_DEVICE_SECURE_OPEN 0x00000100
284
enum FILE_INFORMATION_CLASS
286
FileDirectoryInformation = 1,
287
FileFullDirectoryInformation,
288
FileBothDirectoryInformation,
289
FileBasicInformation,
290
FileStandardInformation,
291
FileInternalInformation,
293
FileAccessInformation,
295
FileRenameInformation,
297
FileNamesInformation,
298
FileDispositionInformation,
299
FilePositionInformation,
300
FileFullEaInformation,
302
FileAlignmentInformation,
304
FileAllocationInformation,
305
FileEndOfFileInformation,
306
FileAlternateNameInformation,
307
FileStreamInformation,
309
FilePipeLocalInformation,
310
FilePipeRemoteInformation,
311
FileMailslotQueryInformation,
312
FileMailslotSetInformation,
313
FileCompressionInformation,
314
FileCopyOnWriteInformation,
315
FileCompletionInformation,
316
FileMoveClusterInformation,
317
FileOleClassIdInformation,
318
FileOleStateBitsInformation,
319
FileNetworkOpenInformation,
320
FileObjectIdInformation,
321
FileOleAllInformation,
322
FileOleDirectoryInformation,
323
FileContentIndexInformation,
324
FileInheritContentIndexInformation,
326
FileMaximumInformation
329
enum FS_INFORMATION_CLASS
331
FileFsVolumeInformation = 1,
332
FileFsLabelInformation,
333
FileFsSizeInformation,
334
FileFsDeviceInformation,
335
FileFsAttributeInformation,
336
FileFsControlInformation,
337
FileFsFullSizeInformation,
338
FileFsObjectIdInformation,
339
FileFsDriverPathInformation,
340
FileFsMaximumInformation
343
#endif /* __CONSTANTS_RDPDR_H */