1 /*
2    rdesktop: A Remote Desktop Protocol client.
3    Disk Redirection definitions
4    Copyright (C) Jeroen Meijer 2003
5    Copyright (C) Peter Astrand 2004
6 
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.
11 
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.
16 
17    You should have received a copy of the GNU General Public License along
18    with this program; if not, write to the Free Software Foundation, Inc.,
19    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 */
21 
22 #define FILE_ATTRIBUTE_READONLY			0x00000001
23 #define FILE_ATTRIBUTE_HIDDEN			0x00000002
24 #define FILE_ATTRIBUTE_SYSTEM			0x00000004
25 #define FILE_ATTRIBUTE_DIRECTORY		0x00000010
26 #define FILE_ATTRIBUTE_ARCHIVE			0x00000020
27 #define FILE_ATTRIBUTE_DEVICE			0x00000040
28 #define FILE_ATTRIBUTE_UNKNOWNXXX0		0x00000060	/* ??? ACTION i.e. 0x860 == compress this file ? */
29 #define FILE_ATTRIBUTE_NORMAL			0x00000080
30 #define FILE_ATTRIBUTE_TEMPORARY		0x00000100
31 #define FILE_ATTRIBUTE_SPARSE_FILE		0x00000200
32 #define FILE_ATTRIBUTE_REPARSE_POINT		0x00000400
33 #define FILE_ATTRIBUTE_COMPRESSED		0x00000800
34 #define FILE_ATTRIBUTE_OFFLINE			0x00001000
35 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED	0x00002000
36 #define FILE_ATTRIBUTE_ENCRYPTED		0x00004000
37 
38 #define FILE_FLAG_OPEN_NO_RECALL		0x00100000
39 #define FILE_FLAG_OPEN_REPARSE_POINT		0x00200000
40 #define FILE_FLAG_POSIX_SEMANTICS		0x01000000
41 #define FILE_FLAG_BACKUP_SEMANTICS		0x02000000	/* sometimes used to create a directory */
42 #define FILE_FLAG_DELETE_ON_CLOSE		0x04000000
43 #define FILE_FLAG_SEQUENTIAL_SCAN		0x08000000
44 #define FILE_FLAG_RANDOM_ACCESS			0x10000000
45 #define FILE_FLAG_NO_BUFFERING			0x20000000
46 #define FILE_FLAG_OVERLAPPED			0x40000000
47 #define FILE_FLAG_WRITE_THROUGH			0x80000000
48 
49 #define FILE_SHARE_READ				0x01
50 #define FILE_SHARE_WRITE			0x02
51 #define FILE_SHARE_DELETE			0x04
52 
53 #define FILE_BASIC_INFORMATION			0x04
54 #define FILE_STANDARD_INFORMATION		0x05
55 
56 #define FS_CASE_SENSITIVE			0x00000001
57 #define FS_CASE_IS_PRESERVED			0x00000002
58 #define FS_UNICODE_STORED_ON_DISK		0x00000004
59 #define FS_PERSISTENT_ACLS			0x00000008
60 #define FS_FILE_COMPRESSION			0x00000010
61 #define FS_VOLUME_QUOTAS			0x00000020
62 #define FS_SUPPORTS_SPARSE_FILES		0x00000040
63 #define FS_SUPPORTS_REPARSE_POINTS		0x00000080
64 #define FS_SUPPORTS_REMOTE_STORAGE		0X00000100
65 #define FS_VOL_IS_COMPRESSED			0x00008000
66 #define FILE_READ_ONLY_VOLUME			0x00080000
67 
68 #define OPEN_EXISTING				1
69 #define CREATE_NEW				2
70 #define OPEN_ALWAYS				3
71 #define TRUNCATE_EXISTING			4
72 #define CREATE_ALWAYS				5
73 
74 #define GENERIC_READ				0x80000000
75 #define GENERIC_WRITE				0x40000000
76 #define GENERIC_EXECUTE				0x20000000
77 #define GENERIC_ALL				0x10000000
78 
79 #define ERROR_FILE_NOT_FOUND			2L
80 #define ERROR_ALREADY_EXISTS			183L
81 
82 typedef enum _FILE_INFORMATION_CLASS
83 {
84 	FileDirectoryInformation = 1,
85 	FileFullDirectoryInformation,
86 	FileBothDirectoryInformation,
87 	FileBasicInformation,
88 	FileStandardInformation,
89 	FileInternalInformation,
90 	FileEaInformation,
91 	FileAccessInformation,
92 	FileNameInformation,
93 	FileRenameInformation,
94 	FileLinkInformation,
95 	FileNamesInformation,
96 	FileDispositionInformation,
97 	FilePositionInformation,
98 	FileFullEaInformation,
99 	FileModeInformation,
100 	FileAlignmentInformation,
101 	FileAllInformation,
102 	FileAllocationInformation,
103 	FileEndOfFileInformation,
104 	FileAlternateNameInformation,
105 	FileStreamInformation,
106 	FilePipeInformation,
107 	FilePipeLocalInformation,
108 	FilePipeRemoteInformation,
109 	FileMailslotQueryInformation,
110 	FileMailslotSetInformation,
111 	FileCompressionInformation,
112 	FileCopyOnWriteInformation,
113 	FileCompletionInformation,
114 	FileMoveClusterInformation,
115 	FileOleClassIdInformation,
116 	FileOleStateBitsInformation,
117 	FileNetworkOpenInformation,
118 	FileObjectIdInformation,
119 	FileOleAllInformation,
120 	FileOleDirectoryInformation,
121 	FileContentIndexInformation,
122 	FileInheritContentIndexInformation,
123 	FileOleInformation,
124 	FileMaximumInformation
125 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
126 
127 typedef enum _FSINFOCLASS
128 {
129 	FileFsVolumeInformation = 1,
130 	FileFsLabelInformation,
131 	FileFsSizeInformation,
132 	FileFsDeviceInformation,
133 	FileFsAttributeInformation,
134 	FileFsControlInformation,
135 	FileFsFullSizeInformation,
136 	FileFsObjectIdInformation,
137 	FileFsDriverPathInformation,
138 	FileFsMaximumInformation
139 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
140