2 * FreeRDP: A Remote Desktop Protocol client.
3 * File System Virtual Channel
5 * Copyright 2010-2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6 * Copyright 2010-2011 Vic Lee
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #ifndef __RDPDR_CONSTANTS_H
22 #define __RDPDR_CONSTANTS_H
24 /* RDPDR_HEADER.Component */
27 RDPDR_CTYP_CORE = 0x4472,
28 RDPDR_CTYP_PRN = 0x5052
31 /* RDPDR_HEADER.PacketId */
34 PAKID_CORE_SERVER_ANNOUNCE = 0x496E,
35 PAKID_CORE_CLIENTID_CONFIRM = 0x4343,
36 PAKID_CORE_CLIENT_NAME = 0x434E,
37 PAKID_CORE_DEVICELIST_ANNOUNCE = 0x4441,
38 PAKID_CORE_DEVICE_REPLY = 0x6472,
39 PAKID_CORE_DEVICE_IOREQUEST = 0x4952,
40 PAKID_CORE_DEVICE_IOCOMPLETION = 0x4943,
41 PAKID_CORE_SERVER_CAPABILITY = 0x5350,
42 PAKID_CORE_CLIENT_CAPABILITY = 0x4350,
43 PAKID_CORE_DEVICELIST_REMOVE = 0x444D,
44 PAKID_CORE_USER_LOGGEDON = 0x554C,
45 PAKID_PRN_CACHE_DATA = 0x5043,
46 PAKID_PRN_USING_XPS = 0x5543
49 /* CAPABILITY_HEADER.CapabilityType */
52 CAP_GENERAL_TYPE = 0x0001,
53 CAP_PRINTER_TYPE = 0x0002,
54 CAP_PORT_TYPE = 0x0003,
55 CAP_DRIVE_TYPE = 0x0004,
56 CAP_SMARTCARD_TYPE = 0x0005
59 /* CAPABILITY_HEADER.Version */
60 enum RDPDR_CAP_VERSION
62 GENERAL_CAPABILITY_VERSION_01 = 0x00000001,
63 GENERAL_CAPABILITY_VERSION_02 = 0x00000002,
64 PRINT_CAPABILITY_VERSION_01 = 0x00000001,
65 PORT_CAPABILITY_VERSION_01 = 0x00000001,
66 DRIVE_CAPABILITY_VERSION_01 = 0x00000001,
67 DRIVE_CAPABILITY_VERSION_02 = 0x00000002,
68 SMARTCARD_CAPABILITY_VERSION_01 = 0x00000001
71 /* DEVICE_ANNOUNCE.DeviceType */
74 RDPDR_DTYP_SERIAL = 0x00000001,
75 RDPDR_DTYP_PARALLEL = 0x00000002,
76 RDPDR_DTYP_PRINT = 0x00000004,
77 RDPDR_DTYP_FILESYSTEM = 0x00000008,
78 RDPDR_DTYP_SMARTCARD = 0x00000020
81 /* DR_DEVICE_IOREQUEST.MajorFunction */
84 IRP_MJ_CREATE = 0x00000000,
85 IRP_MJ_CLOSE = 0x00000002,
86 IRP_MJ_READ = 0x00000003,
87 IRP_MJ_WRITE = 0x00000004,
88 IRP_MJ_DEVICE_CONTROL = 0x0000000E,
89 IRP_MJ_QUERY_VOLUME_INFORMATION = 0x0000000A,
90 IRP_MJ_SET_VOLUME_INFORMATION = 0x0000000B,
91 IRP_MJ_QUERY_INFORMATION = 0x00000005,
92 IRP_MJ_SET_INFORMATION = 0x00000006,
93 IRP_MJ_DIRECTORY_CONTROL = 0x0000000C,
94 IRP_MJ_LOCK_CONTROL = 0x00000011
97 /* DR_DEVICE_IOREQUEST.MinorFunction */
100 IRP_MN_QUERY_DIRECTORY = 0x00000001,
101 IRP_MN_NOTIFY_CHANGE_DIRECTORY = 0x00000002
104 /* DR_CREATE_REQ.CreateDisposition */
105 enum FILE_CREATE_DISPOSITION
107 FILE_SUPERSEDE = 0x00000000,
108 FILE_OPEN = 0x00000001,
109 FILE_CREATE = 0x00000002,
110 FILE_OPEN_IF = 0x00000003,
111 FILE_OVERWRITE = 0x00000004,
112 FILE_OVERWRITE_IF = 0x00000005
115 /* DR_CREATE_REQ.CreateOptions [MS-SMB2] */
116 enum FILE_CREATE_OPTION
118 FILE_DIRECTORY_FILE = 0x00000001,
119 FILE_NON_DIRECTORY_FILE = 0x00000040,
120 FILE_COMPLETE_IF_OPLOCKED = 0x00000100,
121 FILE_DELETE_ON_CLOSE = 0x00001000,
122 FILE_OPEN_REPARSE_POINT = 0x00200000,
123 FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000
126 /* DR_CREATE_REQ.DesiredAccess [MS-SMB2] */
129 FILE_READ_DATA = 0x00000001,
130 FILE_WRITE_DATA = 0x00000002,
131 FILE_APPEND_DATA = 0x00000004,
132 FILE_READ_EA = 0x00000008,
133 FILE_WRITE_EA = 0x00000010,
134 FILE_EXECUTE = 0x00000020,
135 FILE_READ_ATTRIBUTES = 0x00000080,
136 FILE_WRITE_ATTRIBUTES = 0x00000100,
138 READ_CONTROL = 0x00020000,
139 WRITE_DAC = 0x00040000,
140 WRITE_OWNER = 0x00080000,
141 SYNCHRONIZE = 0x00100000,
142 ACCESS_SYSTEM_SECURITY = 0x01000000,
143 MAXIMUM_ALLOWED = 0x02000000,
144 GENERIC_ALL = 0x10000000,
145 GENERIC_EXECUTE = 0x20000000,
146 GENERIC_WRITE = 0x40000000,
147 GENERIC_READ = 0x80000000
150 /* DR_CREATE_RSP.Information */
151 /* DR_DRIVE_CREATE_RSP.DeviceCreateResponse */
154 FILE_SUPERSEDED = 0x00000000,
155 FILE_OPENED = 0x00000001,
156 FILE_OVERWRITTEN = 0x00000003
159 /* DR_CORE_CLIENT_ANNOUNCE_RSP.VersionMinor */
160 enum RDPDR_MINOR_RDP_VERSION
162 RDPDR_MINOR_RDP_VERSION_5_0 = 0x0002,
163 RDPDR_MINOR_RDP_VERSION_5_1 = 0x0005,
164 RDPDR_MINOR_RDP_VERSION_5_2 = 0x000A,
165 RDPDR_MINOR_RDP_VERSION_6_X = 0x000C
168 /* DR_CORE_CLIENT_NAME_REQ.UnicodeFlag */
169 enum RDPDR_CLIENT_NAME_FLAG
171 RDPDR_CLIENT_NAME_UNICODE = 0x00000001,
172 RDPDR_CLIENT_NAME_ASCII = 0x00000000
175 /* GENERAL_CAPS_SET.ioCode1 */
176 enum RDPDR_CAPS_IRP_MJ
178 RDPDR_IRP_MJ_CREATE = 0x00000001,
179 RDPDR_IRP_MJ_CLEANUP = 0x00000002,
180 RDPDR_IRP_MJ_CLOSE = 0x00000004,
181 RDPDR_IRP_MJ_READ = 0x00000008,
182 RDPDR_IRP_MJ_WRITE = 0x00000010,
183 RDPDR_IRP_MJ_FLUSH_BUFFERS = 0x00000020,
184 RDPDR_IRP_MJ_SHUTDOWN = 0x00000040,
185 RDPDR_IRP_MJ_DEVICE_CONTROL = 0x00000080,
186 RDPDR_IRP_MJ_QUERY_VOLUME_INFORMATION = 0x00000100,
187 RDPDR_IRP_MJ_SET_VOLUME_INFORMATION = 0x00000200,
188 RDPDR_IRP_MJ_QUERY_INFORMATION = 0x00000400,
189 RDPDR_IRP_MJ_SET_INFORMATION = 0x00000800,
190 RDPDR_IRP_MJ_DIRECTORY_CONTROL = 0x00001000,
191 RDPDR_IRP_MJ_LOCK_CONTROL = 0x00002000,
192 RDPDR_IRP_MJ_QUERY_SECURITY = 0x00004000,
193 RDPDR_IRP_MJ_SET_SECURITY = 0x00008000
196 /* GENERAL_CAPS_SET.extendedPDU */
199 RDPDR_DEVICE_REMOVE_PDUS = 0x00000001,
200 RDPDR_CLIENT_DISPLAY_NAME_PDU = 0x00000002,
201 RDPDR_USER_LOGGEDON_PDU = 0x00000004
204 /* GENERAL_CAPS_SET.extraFlags1 */
207 ENABLE_ASYNCIO = 0x00000001
210 /* DR_DRIVE_LOCK_REQ.Operation */
213 RDP_LOWIO_OP_SHAREDLOCK = 0x00000002,
214 RDP_LOWIO_OP_EXCLUSIVELOCK = 0x00000003,
215 RDP_LOWIO_OP_UNLOCK = 0x00000004,
216 RDP_LOWIO_OP_UNLOCK_MULTIPLE = 0x00000005
219 /* NTSTATUS values */
220 /* http://msdn.microsoft.com/en-us/library/cc704588.aspx */
223 STATUS_SUCCESS = 0x00000000,
224 STATUS_TIMEOUT = 0x00000102,
225 STATUS_PENDING = 0x00000103,
226 STATUS_REPARSE = 0x00000104,
227 STATUS_MORE_ENTRIES = 0x00000105,
228 STATUS_NOT_ALL_ASSIGNED = 0x00000106,
229 STATUS_OPLOCK_BREAK_IN_PROGRESS = 0x00000108,
230 STATUS_VOLUME_MOUNTED = 0x00000109,
231 STATUS_NOTIFY_CLEANUP = 0x0000010B,
232 STATUS_NOTIFY_ENUM_DIR = 0x0000010C,
233 STATUS_NO_QUOTAS_FOR_ACCOUNT = 0x0000010D,
234 STATUS_FILE_LOCKED_WITH_ONLY_READERS = 0x0000012A,
235 STATUS_FILE_LOCKED_WITH_WRITERS = 0x0000012B,
236 STATUS_WAIT_FOR_OPLOCK = 0x00000367,
237 STATUS_OBJECT_NAME_EXISTS = 0x40000000,
238 STATUS_BAD_CURRENT_DIRECTORY = 0x40000007,
239 STATUS_NO_MORE_FILES = 0x80000006,
240 STATUS_DEVICE_PAPER_EMPTY = 0x8000000E,
241 STATUS_DEVICE_POWERED_OFF = 0x8000000F,
242 STATUS_DEVICE_OFF_LINE = 0x80000010,
243 STATUS_DEVICE_BUSY = 0x80000011,
244 STATUS_NO_MORE_ENTRIES = 0x8000001A,
245 STATUS_UNSUCCESSFUL = 0xC0000001,
246 STATUS_NOT_IMPLEMENTED = 0xC0000002,
247 STATUS_INVALID_INFO_CLASS = 0xC0000003,
248 STATUS_INVALID_HANDLE = 0xC0000008,
249 STATUS_INVALID_PARAMETER = 0xC000000D,
250 STATUS_NO_SUCH_DEVICE = 0xC000000E,
251 STATUS_NO_SUCH_FILE = 0xC000000F,
252 STATUS_INVALID_DEVICE_REQUEST = 0xC0000010,
253 STATUS_END_OF_FILE = 0xC0000011,
254 STATUS_NO_MEDIA_IN_DEVICE = 0xC0000013,
255 STATUS_UNRECOGNIZED_MEDIA = 0xC0000014,
256 STATUS_ACCESS_DENIED = 0xc0000022,
257 STATUS_OBJECT_NAME_INVALID = 0xC0000033,
258 STATUS_OBJECT_NAME_NOT_FOUND = 0xC0000034,
259 STATUS_OBJECT_NAME_COLLISION = 0xc0000035,
260 STATUS_PORT_DISCONNECTED = 0xC0000037,
261 STATUS_OBJECT_PATH_INVALID = 0xC0000039,
262 STATUS_OBJECT_PATH_NOT_FOUND = 0xC000003A,
263 STATUS_INVALID_PORT_HANDLE = 0xC0000042,
264 STATUS_DELETE_PENDING = 0xC0000056,
265 STATUS_DISK_FULL = 0xC000007F,
266 STATUS_DEVICE_NOT_READY = 0xC00000A3,
267 STATUS_IO_TIMEOUT = 0xC00000B5,
268 STATUS_FILE_IS_A_DIRECTORY = 0xC00000BA,
269 STATUS_NOT_SUPPORTED = 0xC00000BB,
270 STATUS_PRINT_QUEUE_FULL = 0xC00000C6,
271 STATUS_PRINT_CANCELLED = 0xC00000C8,
272 STATUS_DIRECTORY_NOT_EMPTY = 0xC0000101,
273 STATUS_FILE_CORRUPT_ERROR = 0xC0000102,
274 STATUS_NOT_A_DIRECTORY = 0xC0000103,
275 STATUS_NAME_TOO_LONG = 0xC0000106,
276 STATUS_CANCELLED = 0xC0000120,
277 STATUS_CANNOT_DELETE = 0xC0000121,
278 STATUS_FILE_DELETED = 0xC0000123,
279 STATUS_FILE_CLOSED = 0xC0000128
282 enum RDPDR_PRINTER_ANNOUNCE_FLAG
284 RDPDR_PRINTER_ANNOUNCE_FLAG_ASCII = 0x00000001,
285 RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER = 0x00000002,
286 RDPDR_PRINTER_ANNOUNCE_FLAG_NETWORKPRINTER = 0x00000004,
287 RDPDR_PRINTER_ANNOUNCE_FLAG_TSPRINTER = 0x00000008,
288 RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT = 0x00000010
291 /* [MS-FSCC] FileAttributes */
294 FILE_ATTRIBUTE_ARCHIVE = 0x00000020,
295 FILE_ATTRIBUTE_COMPRESSED = 0x00000800,
296 FILE_ATTRIBUTE_DIRECTORY = 0x00000010,
297 FILE_ATTRIBUTE_ENCRYPTED = 0x00004000,
298 FILE_ATTRIBUTE_HIDDEN = 0x00000002,
299 FILE_ATTRIBUTE_NORMAL = 0x00000080,
300 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000,
301 FILE_ATTRIBUTE_OFFLINE = 0x00001000,
302 FILE_ATTRIBUTE_READONLY = 0x00000001,
303 FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400,
304 FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200,
305 FILE_ATTRIBUTE_SYSTEM = 0x00000004,
306 FILE_ATTRIBUTE_TEMPORARY = 0x00000100
309 /* [MS-FSCC] FSCTL Structures */
312 FSCTL_CREATE_OR_GET_OBJECT_ID = 0x900c0,
313 FSCTL_GET_REPARSE_POINT = 0x900a8,
314 FSCTL_GET_RETRIEVAL_POINTERS = 0x90073,
315 FSCTL_IS_PATHNAME_VALID = 0x9002c,
316 FSCTL_LMR_SET_LINK_TRACKING_INFORMATION = 0x1400ec,
317 FSCTL_PIPE_PEEK = 0x11400c,
318 FSCTL_PIPE_TRANSCEIVE = 0x11c017,
319 FSCTL_PIPE_WAIT = 0x110018,
320 FSCTL_QUERY_FAT_BPB = 0x90058,
321 FSCTL_QUERY_ALLOCATED_RANGES = 0x940cf,
322 FSCTL_QUERY_ON_DISK_VOLUME_INFO = 0x9013c,
323 FSCTL_QUERY_SPARING_INFO = 0x90138,
324 FSCTL_READ_FILE_USN_DATA = 0x900eb,
325 FSCTL_RECALL_FILE = 0x90117,
326 FSCTL_SET_COMPRESSION = 0x9c040,
327 FSCTL_SET_DEFECT_MANAGEMENT = 0x98134,
328 FSCTL_SET_ENCRYPTION = 0x900D7,
329 FSCTL_SET_OBJECT_ID = 0x90098,
330 FSCTL_SET_OBJECT_ID_EXTENDED = 0x900bc,
331 FSCTL_SET_REPARSE_POINT = 0x900a4,
332 FSCTL_SET_SPARSE = 0x900c4,
333 FSCTL_SET_ZERO_DATA = 0x980c8,
334 FSCTL_SET_ZERO_ON_DEALLOCATION = 0x90194,
335 FSCTL_SIS_COPYFILE = 0x90100,
336 FSCTL_WRITE_USN_CLOSE_RECORD = 0x900ef
339 /* [MS-FSCC] FileFsAttributeInformation.FileSystemAttributes */
340 enum FILE_FS_ATTRIBUTE_INFORMATION
342 FILE_SUPPORTS_USN_JOURNAL = 0x02000000,
343 FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000,
344 FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000,
345 FILE_SUPPORTS_HARD_LINKS = 0x00400000,
346 FILE_SUPPORTS_TRANSACTIONS = 0x00200000,
347 FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000,
348 FILE_READ_ONLY_VOLUME = 0x00080000,
349 FILE_NAMED_STREAMS = 0x00040000,
350 FILE_SUPPORTS_ENCRYPTION = 0x00020000,
351 FILE_SUPPORTS_OBJECT_IDS = 0x00010000,
352 FILE_VOLUME_IS_COMPRESSED = 0x00008000,
353 FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100,
354 FILE_SUPPORTS_REPARSE_POINTS = 0x00000080,
355 FILE_SUPPORTS_SPARSE_FILES = 0x00000040,
356 FILE_VOLUME_QUOTAS = 0x00000020,
357 FILE_FILE_COMPRESSION = 0x00000010,
358 FILE_PERSISTENT_ACLS = 0x00000008,
359 FILE_UNICODE_ON_DISK = 0x00000004,
360 FILE_CASE_PRESERVED_NAMES = 0x00000002,
361 FILE_CASE_SENSITIVE_SEARCH = 0x00000001
364 /* [MS-FSCC] FileFsDeviceInformation.DeviceType */
365 enum FILE_FS_DEVICE_TYPE
367 FILE_DEVICE_CD_ROM = 0x00000002,
368 FILE_DEVICE_DISK = 0x00000007
371 /* [MS-FSCC] FileFsDeviceInformation.Characteristics */
372 enum FILE_FS_DEVICE_FLAG
374 FILE_REMOVABLE_MEDIA = 0x00000001,
375 FILE_READ_ONLY_DEVICE = 0x00000002,
376 FILE_FLOPPY_DISKETTE = 0x00000004,
377 FILE_WRITE_ONCE_MEDIA = 0x00000008,
378 FILE_REMOTE_DEVICE = 0x00000010,
379 FILE_DEVICE_IS_MOUNTED = 0x00000020,
380 FILE_VIRTUAL_VOLUME = 0x00000040,
381 FILE_DEVICE_SECURE_OPEN = 0x00000100
384 enum FILE_INFORMATION_CLASS
386 FileDirectoryInformation = 1,
387 FileFullDirectoryInformation,
388 FileBothDirectoryInformation,
389 FileBasicInformation,
390 FileStandardInformation,
391 FileInternalInformation,
393 FileAccessInformation,
395 FileRenameInformation,
397 FileNamesInformation,
398 FileDispositionInformation,
399 FilePositionInformation,
400 FileFullEaInformation,
402 FileAlignmentInformation,
404 FileAllocationInformation,
405 FileEndOfFileInformation,
406 FileAlternateNameInformation,
407 FileStreamInformation,
409 FilePipeLocalInformation,
410 FilePipeRemoteInformation,
411 FileMailslotQueryInformation,
412 FileMailslotSetInformation,
413 FileCompressionInformation,
414 FileObjectIdInformation,
415 FileUnknownInformation1,
416 FileMoveClusterInformation,
417 FileQuotaInformation,
418 FileReparsePointInformation,
419 FileNetworkOpenInformation,
420 FileAttributeTagInformation,
421 FileTrackingInformation,
422 FileIdBothDirectoryInformation,
423 FileIdFullDirectoryInformation,
424 FileValidDataLengthInformation,
425 FileShortNameInformation
428 enum FILE_FS_INFORMATION_CLASS
430 FileFsVolumeInformation = 1,
431 FileFsLabelInformation,
432 FileFsSizeInformation,
433 FileFsDeviceInformation,
434 FileFsAttributeInformation,
435 FileFsControlInformation,
436 FileFsFullSizeInformation,
437 FileFsObjectIdInformation,
438 FileFsDriverPathInformation,
439 FileFsMaximumInformation
442 #endif /* __RDPDR_CONSTANTS_H */