Initial commit - from Precise source
[freerdp-ubuntu-pcb-backport.git] / channels / rdpdr / rdpdr_constants.h
1 /**
2  * FreeRDP: A Remote Desktop Protocol client.
3  * File System Virtual Channel
4  *
5  * Copyright 2010-2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6  * Copyright 2010-2011 Vic Lee
7  *
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
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  */
20
21 #ifndef __RDPDR_CONSTANTS_H
22 #define __RDPDR_CONSTANTS_H
23
24 /* RDPDR_HEADER.Component */
25 enum RDPDR_CTYP
26 {
27         RDPDR_CTYP_CORE = 0x4472,
28         RDPDR_CTYP_PRN = 0x5052
29 };
30
31 /* RDPDR_HEADER.PacketId */
32 enum RDPDR_PAKID
33 {
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
47 };
48
49 /* CAPABILITY_HEADER.CapabilityType */
50 enum RDPDR_CAP_TYPE
51 {
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
57 };
58
59 /* CAPABILITY_HEADER.Version */
60 enum RDPDR_CAP_VERSION
61 {
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
69 };
70
71 /* DEVICE_ANNOUNCE.DeviceType */
72 enum RDPDR_DTYP
73 {
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
79 };
80
81 /* DR_DEVICE_IOREQUEST.MajorFunction */
82 enum IRP_MJ
83 {
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
95 };
96
97 /* DR_DEVICE_IOREQUEST.MinorFunction */
98 enum IRP_MN
99 {
100         IRP_MN_QUERY_DIRECTORY = 0x00000001,
101         IRP_MN_NOTIFY_CHANGE_DIRECTORY = 0x00000002
102 };
103
104 /* DR_CREATE_REQ.CreateDisposition */
105 enum FILE_CREATE_DISPOSITION
106 {
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
113 };
114
115 /* DR_CREATE_REQ.CreateOptions [MS-SMB2] */
116 enum FILE_CREATE_OPTION
117 {
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
124 };
125
126 /* DR_CREATE_REQ.DesiredAccess [MS-SMB2] */
127 enum FILE_ACCESS
128 {
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,
137         DELETE = 0x00010000,
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
148 };
149
150 /* DR_CREATE_RSP.Information */
151 /* DR_DRIVE_CREATE_RSP.DeviceCreateResponse */
152 enum FILE_RESPONSE
153 {
154         FILE_SUPERSEDED = 0x00000000,
155         FILE_OPENED = 0x00000001,
156         FILE_OVERWRITTEN = 0x00000003
157 };
158
159 /* DR_CORE_CLIENT_ANNOUNCE_RSP.VersionMinor */
160 enum RDPDR_MINOR_RDP_VERSION
161 {
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
166 };
167
168 /* DR_CORE_CLIENT_NAME_REQ.UnicodeFlag */
169 enum RDPDR_CLIENT_NAME_FLAG
170 {
171         RDPDR_CLIENT_NAME_UNICODE = 0x00000001,
172         RDPDR_CLIENT_NAME_ASCII = 0x00000000
173 };
174
175 /* GENERAL_CAPS_SET.ioCode1 */
176 enum RDPDR_CAPS_IRP_MJ
177 {
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
194 };
195
196 /* GENERAL_CAPS_SET.extendedPDU */
197 enum RDPDR_CAPS_PDU
198 {
199         RDPDR_DEVICE_REMOVE_PDUS = 0x00000001,
200         RDPDR_CLIENT_DISPLAY_NAME_PDU = 0x00000002,
201         RDPDR_USER_LOGGEDON_PDU = 0x00000004
202 };
203
204 /* GENERAL_CAPS_SET.extraFlags1 */
205 enum RDPDR_CAPS_FLAG
206 {
207         ENABLE_ASYNCIO = 0x00000001
208 };
209
210 /* DR_DRIVE_LOCK_REQ.Operation */
211 enum RDP_LOWIO_OP
212 {
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
217 };
218
219 /* NTSTATUS values */
220 /* http://msdn.microsoft.com/en-us/library/cc704588.aspx */
221 enum NTSTATUS
222 {
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
280 };
281
282 enum RDPDR_PRINTER_ANNOUNCE_FLAG
283 {
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
289 };
290
291 /* [MS-FSCC] FileAttributes */
292 enum FILE_ATTRIBUTE
293 {
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
307 };
308
309 /* [MS-FSCC] FSCTL Structures */
310 enum FSCTL_STRUCTURE
311 {
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
337 };
338
339 /* [MS-FSCC] FileFsAttributeInformation.FileSystemAttributes */
340 enum FILE_FS_ATTRIBUTE_INFORMATION
341 {
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
362 };
363
364 /* [MS-FSCC] FileFsDeviceInformation.DeviceType */
365 enum FILE_FS_DEVICE_TYPE
366 {
367         FILE_DEVICE_CD_ROM = 0x00000002,
368         FILE_DEVICE_DISK = 0x00000007
369 };
370
371 /* [MS-FSCC] FileFsDeviceInformation.Characteristics */
372 enum FILE_FS_DEVICE_FLAG
373 {
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
382 };
383
384 enum FILE_INFORMATION_CLASS
385 {
386         FileDirectoryInformation = 1,
387         FileFullDirectoryInformation,
388         FileBothDirectoryInformation,
389         FileBasicInformation,
390         FileStandardInformation,
391         FileInternalInformation,
392         FileEaInformation,
393         FileAccessInformation,
394         FileNameInformation,
395         FileRenameInformation,
396         FileLinkInformation,
397         FileNamesInformation,
398         FileDispositionInformation,
399         FilePositionInformation,
400         FileFullEaInformation,
401         FileModeInformation,
402         FileAlignmentInformation,
403         FileAllInformation,
404         FileAllocationInformation,
405         FileEndOfFileInformation,
406         FileAlternateNameInformation,
407         FileStreamInformation,
408         FilePipeInformation,
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
426 };
427
428 enum FILE_FS_INFORMATION_CLASS
429 {
430         FileFsVolumeInformation = 1,
431         FileFsLabelInformation,
432         FileFsSizeInformation,
433         FileFsDeviceInformation,
434         FileFsAttributeInformation,
435         FileFsControlInformation,
436         FileFsFullSizeInformation,
437         FileFsObjectIdInformation,
438         FileFsDriverPathInformation,
439         FileFsMaximumInformation
440 };
441
442 #endif /* __RDPDR_CONSTANTS_H */