fileinfo.h
1 /*
2  Dokan : user-mode file system library for Windows
3 
4  Copyright (C) 2020 - 2023 Google, Inc.
5  Copyright (C) 2015 - 2019 Adrien J. <liryna.stark@gmail.com> and Maxime C. <maxime@islog.com>
6  Copyright (C) 2007 - 2011 Hiroki Asakawa <info@dokan-dev.net>
7 
8  http://dokan-dev.github.io
9 
10 This program is free software; you can redistribute it and/or modify it under
11 the terms of the GNU Lesser General Public License as published by the Free
12 Software Foundation; either version 3 of the License, or (at your option) any
13 later version.
14 
15 This program is distributed in the hope that it will be useful, but WITHOUT ANY
16 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
18 
19 You should have received a copy of the GNU Lesser General Public License along
20 with this program. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 #ifndef FILEINFO_H_
24 #define FILEINFO_H_
25 
26 #define IRP_MJ_CREATE 0x00
27 #define IRP_MJ_CREATE_NAMED_PIPE 0x01
28 #define IRP_MJ_CLOSE 0x02
29 #define IRP_MJ_READ 0x03
30 #define IRP_MJ_WRITE 0x04
31 #define IRP_MJ_QUERY_INFORMATION 0x05
32 #define IRP_MJ_SET_INFORMATION 0x06
33 #define IRP_MJ_QUERY_EA 0x07
34 #define IRP_MJ_SET_EA 0x08
35 #define IRP_MJ_FLUSH_BUFFERS 0x09
36 #define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a
37 #define IRP_MJ_SET_VOLUME_INFORMATION 0x0b
38 #define IRP_MJ_DIRECTORY_CONTROL 0x0c
39 #define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d
40 #define IRP_MJ_DEVICE_CONTROL 0x0e
41 #define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f
42 #define IRP_MJ_SHUTDOWN 0x10
43 #define IRP_MJ_LOCK_CONTROL 0x11
44 #define IRP_MJ_CLEANUP 0x12
45 #define IRP_MJ_CREATE_MAILSLOT 0x13
46 #define IRP_MJ_QUERY_SECURITY 0x14
47 #define IRP_MJ_SET_SECURITY 0x15
48 #define IRP_MJ_POWER 0x16
49 #define IRP_MJ_SYSTEM_CONTROL 0x17
50 #define IRP_MJ_DEVICE_CHANGE 0x18
51 #define IRP_MJ_QUERY_QUOTA 0x19
52 #define IRP_MJ_SET_QUOTA 0x1a
53 #define IRP_MJ_PNP 0x1b
54 #define IRP_MJ_PNP_POWER IRP_MJ_PNP
55 #define IRP_MJ_MAXIMUM_FUNCTION 0x1b
56 
57 #define IRP_MN_LOCK 0x01
58 #define IRP_MN_UNLOCK_SINGLE 0x02
59 #define IRP_MN_UNLOCK_ALL 0x03
60 #define IRP_MN_UNLOCK_ALL_BY_KEY 0x04
61 
62 typedef enum _FILE_INFORMATION_CLASS {
63  FileDirectoryInformation = 1,
64  FileFullDirectoryInformation, // 2
65  FileBothDirectoryInformation, // 3
66  FileBasicInformation, // 4
67  FileStandardInformation, // 5
68  FileInternalInformation, // 6
69  FileEaInformation, // 7
70  FileAccessInformation, // 8
71  FileNameInformation, // 9
72  FileRenameInformation, // 10
73  FileLinkInformation, // 11
74  FileNamesInformation, // 12
75  FileDispositionInformation, // 13
76  FilePositionInformation, // 14
77  FileFullEaInformation, // 15
78  FileModeInformation, // 16
79  FileAlignmentInformation, // 17
80  FileAllInformation, // 18
81  FileAllocationInformation, // 19
82  FileEndOfFileInformation, // 20
83  FileAlternateNameInformation, // 21
84  FileStreamInformation, // 22
85  FilePipeInformation, // 23
86  FilePipeLocalInformation, // 24
87  FilePipeRemoteInformation, // 25
88  FileMailslotQueryInformation, // 26
89  FileMailslotSetInformation, // 27
90  FileCompressionInformation, // 28
91  FileObjectIdInformation, // 29
92  FileCompletionInformation, // 30
93  FileMoveClusterInformation, // 31
94  FileQuotaInformation, // 32
95  FileReparsePointInformation, // 33
96  FileNetworkOpenInformation, // 34
97  FileAttributeTagInformation, // 35
98  FileTrackingInformation, // 36
99  FileIdBothDirectoryInformation, // 37
100  FileIdFullDirectoryInformation, // 38
101  FileValidDataLengthInformation, // 39
102  FileShortNameInformation, // 40
103  FileIoCompletionNotificationInformation, // 41
104  FileIoStatusBlockRangeInformation, // 42
105  FileIoPriorityHintInformation, // 43
106  FileSfioReserveInformation, // 44
107  FileSfioVolumeInformation, // 45
108  FileHardLinkInformation, // 46
109  FileProcessIdsUsingFileInformation, // 47
110  FileNormalizedNameInformation, // 48
111  FileNetworkPhysicalNameInformation, // 49
112  FileIdGlobalTxDirectoryInformation, // 50
113  FileIsRemoteDeviceInformation, // 51
114  FileUnusedInformation, // 52
115  FileNumaNodeInformation, // 53
116  FileStandardLinkInformation, // 54
117  FileRemoteProtocolInformation, // 55
118 
119  //
120  // These are special versions of these operations (defined earlier)
121  // which can be used by kernel mode drivers only to bypass security
122  // access checks for Rename and HardLink operations. These operations
123  // are only recognized by the IOManager, a file system should never
124  // receive these.
125  //
126 
127  FileRenameInformationBypassAccessCheck, // 56
128  FileLinkInformationBypassAccessCheck, // 57
129 
130  //
131  // End of special information classes reserved for IOManager.
132  //
133 
134  FileVolumeNameInformation, // 58
135  FileIdInformation, // 59
136  FileIdExtdDirectoryInformation, // 60
137  FileReplaceCompletionInformation, // 61
138  FileHardLinkFullIdInformation, // 62
139  FileIdExtdBothDirectoryInformation, // 63
140  FileDispositionInformationEx, // 64
141  FileRenameInformationEx, // 65
142  FileRenameInformationExBypassAccessCheck, // 66
143  FileDesiredStorageClassInformation, // 67
144  FileStatInformation, // 68
145  FileMemoryPartitionInformation, // 69
146 
147  FileMaximumInformation
148 } FILE_INFORMATION_CLASS,
149  *PFILE_INFORMATION_CLASS;
150 
151 typedef enum _FSINFOCLASS {
152  FileFsVolumeInformation = 1,
153  FileFsLabelInformation, // 2
154  FileFsSizeInformation, // 3
155  FileFsDeviceInformation, // 4
156  FileFsAttributeInformation, // 5
157  FileFsControlInformation, // 6
158  FileFsFullSizeInformation, // 7
159  FileFsObjectIdInformation, // 8
160  FileFsDriverPathInformation, // 9
161  FileFsVolumeFlagsInformation, // 10
162  FileFsMaximumInformation
163 } FS_INFORMATION_CLASS,
164  *PFS_INFORMATION_CLASS;
165 
172 typedef struct _FILE_ALIGNMENT_INFORMATION {
179 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
180 
187 typedef struct _FILE_NAME_INFORMATION {
195  WCHAR FileName[1];
196 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
197 
204 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION {
214  ULONG ReparseTag;
215 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
216 
223 typedef struct _FILE_DISPOSITION_INFORMATION {
229  BOOLEAN DeleteFile;
230 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
231 
232 #define FILE_DISPOSITION_DO_NOT_DELETE 0x00000000 // Specifies the system should not delete a file.
233 #define FILE_DISPOSITION_DELETE 0x00000001 // Specifies the system should delete a file.
234 #define FILE_DISPOSITION_POSIX_SEMANTICS 0x00000002 // Specifies the system should perform a POSIX - style delete.
235 #define FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK 0x00000004 // Specifies the system should force an image section check.
236 #define FILE_DISPOSITION_ON_CLOSE 0x00000008 // Specifies if the system sets or clears the on - close state.
237 
244 typedef struct _FILE_DISPOSITION_INFORMATION_EX {
254  ULONG Flags;
255 } FILE_DISPOSITION_INFORMATION_EX, *PFILE_DISPOSITION_INFORMATION_EX;
256 
263 typedef struct _FILE_END_OF_FILE_INFORMATION {
267  LARGE_INTEGER EndOfFile;
268 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
269 
276 typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION {
281  LARGE_INTEGER ValidDataLength;
282 } FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
283 
290 typedef struct _FILE_BASIC_INFORMATION {
294  LARGE_INTEGER CreationTime;
298  LARGE_INTEGER LastAccessTime;
302  LARGE_INTEGER LastWriteTime;
306  LARGE_INTEGER ChangeTime;
312 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
313 
320 typedef struct _FILE_STANDARD_INFORMATION {
324  LARGE_INTEGER AllocationSize;
328  LARGE_INTEGER EndOfFile;
336  BOOLEAN DeletePending;
340  BOOLEAN Directory;
341 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
342 
349 typedef struct _FILE_POSITION_INFORMATION {
353  LARGE_INTEGER CurrentByteOffset;
354 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
355 
360 typedef struct _FILE_DIRECTORY_INFORMATION {
370  ULONG FileIndex;
374  LARGE_INTEGER CreationTime;
378  LARGE_INTEGER LastAccessTime;
382  LARGE_INTEGER LastWriteTime;
386  LARGE_INTEGER ChangeTime;
393  LARGE_INTEGER EndOfFile;
397  LARGE_INTEGER AllocationSize;
419  WCHAR FileName[1];
420 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
421 
426 typedef struct _FILE_FULL_DIR_INFORMATION {
436  ULONG FileIndex;
440  LARGE_INTEGER CreationTime;
444  LARGE_INTEGER LastAccessTime;
448  LARGE_INTEGER LastWriteTime;
452  LARGE_INTEGER ChangeTime;
459  LARGE_INTEGER EndOfFile;
463  LARGE_INTEGER AllocationSize;
484  ULONG EaSize;
489  WCHAR FileName[1];
490 } FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
491 
496 typedef struct _FILE_ID_FULL_DIR_INFORMATION {
506  ULONG FileIndex;
510  LARGE_INTEGER CreationTime;
514  LARGE_INTEGER LastAccessTime;
518  LARGE_INTEGER LastWriteTime;
522  LARGE_INTEGER ChangeTime;
529  LARGE_INTEGER EndOfFile;
533  LARGE_INTEGER AllocationSize;
554  ULONG EaSize;
559  LARGE_INTEGER FileId;
564  WCHAR FileName[1];
565 } FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION;
566 
571 typedef struct _FILE_BOTH_DIR_INFORMATION {
581  ULONG FileIndex;
585  LARGE_INTEGER CreationTime;
589  LARGE_INTEGER LastAccessTime;
593  LARGE_INTEGER LastWriteTime;
597  LARGE_INTEGER ChangeTime;
604  LARGE_INTEGER EndOfFile;
608  LARGE_INTEGER AllocationSize;
629  ULONG EaSize;
637  WCHAR ShortName[12];
641  WCHAR FileName[1];
642 } FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
643 
648 typedef struct _FILE_ID_BOTH_DIR_INFORMATION {
658  ULONG FileIndex;
662  LARGE_INTEGER CreationTime;
666  LARGE_INTEGER LastAccessTime;
670  LARGE_INTEGER LastWriteTime;
674  LARGE_INTEGER ChangeTime;
681  LARGE_INTEGER EndOfFile;
685  LARGE_INTEGER AllocationSize;
706  ULONG EaSize;
714  WCHAR ShortName[12];
719  LARGE_INTEGER FileId;
723  WCHAR FileName[1];
724 } FILE_ID_BOTH_DIR_INFORMATION, *PFILE_ID_BOTH_DIR_INFORMATION;
725 
730 typedef struct _FILE_ID_EXTD_BOTH_DIR_INFORMATION {
740  ULONG FileIndex;
744  LARGE_INTEGER CreationTime;
748  LARGE_INTEGER LastAccessTime;
752  LARGE_INTEGER LastWriteTime;
756  LARGE_INTEGER ChangeTime;
763  LARGE_INTEGER EndOfFile;
767  LARGE_INTEGER AllocationSize;
788  ULONG EaSize;
796  FILE_ID_128 FileId;
804  WCHAR ShortName[12];
808  WCHAR FileName[1];
809 } FILE_ID_EXTD_BOTH_DIR_INFORMATION, *PFILE_ID_EXTD_BOTH_DIR_INFORMATION;
810 
815 typedef struct _FILE_NAMES_INFORMATION {
825  ULONG FileIndex;
833  WCHAR FileName[1];
834 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
835 
836 #define ANSI_DOS_STAR ('<')
837 #define ANSI_DOS_QM ('>')
838 #define ANSI_DOS_DOT ('"')
839 
840 #define DOS_STAR (L'<')
841 #define DOS_QM (L'>')
842 #define DOS_DOT (L'"')
843 
850 typedef struct _FILE_INTERNAL_INFORMATION {
855  LARGE_INTEGER IndexNumber;
856 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
857 
866 typedef struct _FILE_ID_INFORMATION {
875  FILE_ID_128 FileId;
876 } FILE_ID_INFORMATION, *PFILE_ID_INFORMATION;
877 
884 typedef struct _FILE_EA_INFORMATION {
888  ULONG EaSize;
889 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
890 
897 typedef struct _FILE_ACCESS_INFORMATION {
902  ACCESS_MASK AccessFlags;
903 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
904 
911 typedef struct _FILE_MODE_INFORMATION {
923  ULONG Mode;
924 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
925 
932 typedef struct _FILE_ALL_INFORMATION {
951 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
952 
959 typedef struct _FILE_ALLOCATION_INFORMATION {
964  LARGE_INTEGER AllocationSize;
965 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
966 
973 typedef struct _FILE_LINK_INFORMATION {
996  WCHAR FileName[1];
997 } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
998 
1005 typedef struct _FILE_RENAME_INFORMATION {
1027  WCHAR FileName[1];
1028 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
1029 
1036 typedef struct _FILE_STREAM_INFORMATION {
1049  LARGE_INTEGER StreamSize;
1054  LARGE_INTEGER StreamAllocationSize;
1058  WCHAR StreamName[1];
1059 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
1060 
1067 typedef struct _FILE_FS_LABEL_INFORMATION {
1075  WCHAR VolumeLabel[1];
1076 } FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
1077 
1084 typedef struct _FILE_FS_VOLUME_INFORMATION {
1088  LARGE_INTEGER VolumeCreationTime;
1104  WCHAR VolumeLabel[1];
1105 } FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
1106 
1113 typedef struct _FILE_FS_SIZE_INFORMATION {
1118  LARGE_INTEGER TotalAllocationUnits;
1132 } FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
1133 
1140 typedef struct _FILE_FS_FULL_SIZE_INFORMATION {
1145  LARGE_INTEGER TotalAllocationUnits;
1163 } FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION;
1164 
1171 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
1189  WCHAR FileSystemName[1];
1190 } FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
1191 
1198 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
1202  LARGE_INTEGER CreationTime;
1206  LARGE_INTEGER LastAccessTime;
1210  LARGE_INTEGER LastWriteTime;
1214  LARGE_INTEGER ChangeTime;
1219  LARGE_INTEGER AllocationSize;
1226  LARGE_INTEGER EndOfFile;
1232 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
1233 
1240 typedef struct _FILE_NETWORK_PHYSICAL_NAME_INFORMATION {
1248  WCHAR FileName[1];
1250  *PFILE_NETWORK_PHYSICAL_NAME_INFORMATION;
1251 
1252 #define SL_RESTART_SCAN 0x01
1253 #define SL_RETURN_SINGLE_ENTRY 0x02
1254 #define SL_INDEX_SPECIFIED 0x04
1255 #define SL_FORCE_ACCESS_CHECK 0x01
1256 
1257 #define SL_OPEN_PAGING_FILE 0x02
1258 #define SL_OPEN_TARGET_DIRECTORY 0x04
1259 #define SL_CASE_SENSITIVE 0x80
1260 
1261 #define ALIGN_DOWN(length, type) ((ULONG)(length) & ~(sizeof(type) - 1))
1262 
1263 #define ALIGN_UP(length, type) \
1264  (ALIGN_DOWN(((ULONG)(length) + sizeof(type) - 1), type))
1265 
1266 #define ALIGN_DOWN_POINTER(address, type) \
1267  ((PVOID)((ULONG_PTR)(address) & ~((ULONG_PTR)sizeof(type) - 1)))
1268 
1269 #define ALIGN_UP_POINTER(address, type) \
1270  (ALIGN_DOWN_POINTER(((ULONG_PTR)(address) + sizeof(type) - 1), type))
1271 
1272 #define WordAlign(Val) (ALIGN_UP(Val, WORD))
1273 
1274 #define WordAlignPtr(Ptr) (ALIGN_UP_POINTER(Ptr, WORD))
1275 
1276 #define LongAlign(Val) (ALIGN_UP(Val, LONG))
1277 
1278 #define LongAlignPtr(Ptr) (ALIGN_UP_POINTER(Ptr, LONG))
1279 
1280 #define QuadAlign(Val) (ALIGN_UP(Val, ULONGLONG))
1281 
1282 #define QuadAlignPtr(Ptr) (ALIGN_UP_POINTER(Ptr, ULONGLONG))
1283 
1284 #define IsPtrQuadAligned(Ptr) (QuadAlignPtr(Ptr) == (PVOID)(Ptr))
1285 
1286 // from wdm.h
1287 #define FILE_SUPERSEDE 0x00000000
1288 #define FILE_OPEN 0x00000001
1289 #define FILE_CREATE 0x00000002
1290 #define FILE_OPEN_IF 0x00000003
1291 #define FILE_OVERWRITE 0x00000004
1292 #define FILE_OVERWRITE_IF 0x00000005
1293 #define FILE_MAXIMUM_DISPOSITION 0x00000005
1294 
1295 #define FILE_DIRECTORY_FILE 0x00000001
1296 #define FILE_WRITE_THROUGH 0x00000002
1297 #define FILE_SEQUENTIAL_ONLY 0x00000004
1298 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
1299 
1300 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
1301 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
1302 #define FILE_NON_DIRECTORY_FILE 0x00000040
1303 #define FILE_CREATE_TREE_CONNECTION 0x00000080
1304 
1305 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
1306 #define FILE_NO_EA_KNOWLEDGE 0x00000200
1307 #define FILE_OPEN_REMOTE_INSTANCE 0x00000400
1308 #define FILE_RANDOM_ACCESS 0x00000800
1309 
1310 #define FILE_DELETE_ON_CLOSE 0x00001000
1311 #define FILE_OPEN_BY_FILE_ID 0x00002000
1312 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
1313 #define FILE_NO_COMPRESSION 0x00008000
1314 
1315 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
1316 #define FILE_OPEN_REQUIRING_OPLOCK 0x00010000
1317 #define FILE_DISALLOW_EXCLUSIVE 0x00020000
1318 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WIN7 */
1319 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
1320 #define FILE_SESSION_AWARE 0x00040000
1321 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WIN7 */
1322 
1323 #define FILE_RESERVE_OPFILTER 0x00100000
1324 #define FILE_OPEN_REPARSE_POINT 0x00200000
1325 #define FILE_OPEN_NO_RECALL 0x00400000
1326 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
1327 
1328 #define FILE_VALID_OPTION_FLAGS 0x00ffffff
1329 
1330 #define FILE_SUPERSEDED 0x00000000
1331 #define FILE_OPENED 0x00000001
1332 #define FILE_CREATED 0x00000002
1333 #define FILE_OVERWRITTEN 0x00000003
1334 #define FILE_EXISTS 0x00000004
1335 #define FILE_DOES_NOT_EXIST 0x00000005
1336 
1337 #define FILE_WRITE_TO_END_OF_FILE 0xffffffff
1338 #define FILE_USE_FILE_POINTER_POSITION 0xfffffffe
1339 
1344 typedef struct _UNICODE_STRING {
1348  USHORT Length;
1356  PWSTR Buffer;
1357 } UNICODE_STRING, *PUNICODE_STRING;
1358 
1359 #endif // FILEINFO_H_
ULONG EaSize
Definition: fileinfo.h:706
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:1219
LARGE_INTEGER AvailableAllocationUnits
Definition: fileinfo.h:1123
ULONG FileAttributes
Definition: fileinfo.h:410
PWSTR Buffer
Definition: fileinfo.h:1356
LARGE_INTEGER CallerAvailableAllocationUnits
Definition: fileinfo.h:1150
BOOLEAN DeleteFile
Definition: fileinfo.h:229
LARGE_INTEGER LastWriteTime
Definition: fileinfo.h:448
ULONG BytesPerSector
Definition: fileinfo.h:1131
ULONG VolumeLabelLength
Definition: fileinfo.h:1071
ULONG NextEntryOffset
Definition: fileinfo.h:365
ULONG FileNameLength
Definition: fileinfo.h:191
CCHAR ShortNameLength
Definition: fileinfo.h:800
LARGE_INTEGER LastAccessTime
Definition: fileinfo.h:589
ACCESS_MASK AccessFlags
Definition: fileinfo.h:902
BOOLEAN ReplaceIfExists
Definition: fileinfo.h:1010
ULONG EaSize
Definition: fileinfo.h:484
Used to create an NTFS hard link to an existing file.
Definition: fileinfo.h:973
FILE_ID_128 FileId
Definition: fileinfo.h:796
ULONG FileNameLength
Definition: fileinfo.h:1244
Used as an argument to the ZwQueryInformationFile routine.
Definition: fileinfo.h:172
LONG MaximumComponentNameLength
Definition: fileinfo.h:1181
LARGE_INTEGER LastWriteTime
Definition: fileinfo.h:302
Used to enumerate the streams for a file.
Definition: fileinfo.h:1036
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:529
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:964
FILE_BASIC_INFORMATION BasicInformation
Definition: fileinfo.h:934
LARGE_INTEGER LastWriteTime
Definition: fileinfo.h:670
FILE_INTERNAL_INFORMATION InternalInformation
Definition: fileinfo.h:938
LARGE_INTEGER ChangeTime
Definition: fileinfo.h:306
ULONG EaSize
Definition: fileinfo.h:629
ULONG NextEntryOffset
Definition: fileinfo.h:431
LARGE_INTEGER LastWriteTime
Definition: fileinfo.h:593
ULONG FileSystemNameLength
Definition: fileinfo.h:1185
Used to query for the file system&#39;s 8-byte file reference number for a file.
Definition: fileinfo.h:850
Used to query sector size information for a file system volume.
Definition: fileinfo.h:1140
FILE_ACCESS_INFORMATION AccessInformation
Definition: fileinfo.h:942
ULONG FileAttributes
Definition: fileinfo.h:621
ULONG SectorsPerAllocationUnit
Definition: fileinfo.h:1158
LARGE_INTEGER LastWriteTime
Definition: fileinfo.h:518
Used to query attribute information for a file system.
Definition: fileinfo.h:1171
Used as an argument to routines that query or set file information.
Definition: fileinfo.h:349
LARGE_INTEGER CreationTime
Definition: fileinfo.h:374
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:604
ULONG FileAttributes
Definition: fileinfo.h:209
LARGE_INTEGER CurrentByteOffset
Definition: fileinfo.h:353
Used as an argument to routines that query or set file information.
Definition: fileinfo.h:320
HANDLE RootDirectory
Definition: fileinfo.h:1016
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:463
ULONG NumberOfLinks
Definition: fileinfo.h:332
FILE_ALIGNMENT_INFORMATION AlignmentInformation
Definition: fileinfo.h:948
Used to query detailed information for the files in a directory.
Definition: fileinfo.h:360
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:1226
LARGE_INTEGER CreationTime
Definition: fileinfo.h:510
ULONG FileIndex
Definition: fileinfo.h:825
ULONG FileIndex
Definition: fileinfo.h:436
LARGE_INTEGER LastAccessTime
Definition: fileinfo.h:514
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:393
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:267
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:533
LARGE_INTEGER FileId
Definition: fileinfo.h:719
ULONG SectorsPerAllocationUnit
Definition: fileinfo.h:1127
Used to query detailed information for the files in a directory.
Definition: fileinfo.h:730
BOOLEAN DeletePending
Definition: fileinfo.h:336
CCHAR ShortNameLength
Definition: fileinfo.h:710
ULONG FileNameLength
Definition: fileinfo.h:784
HANDLE RootDirectory
Definition: fileinfo.h:984
ULONG FileNameLength
Definition: fileinfo.h:702
ULONG VolumeSerialNumber
Definition: fileinfo.h:1092
Used as an argument to ZwQueryInformationFile.
Definition: fileinfo.h:204
LARGE_INTEGER ChangeTime
Definition: fileinfo.h:756
ULONG NextEntryOffset
Definition: fileinfo.h:501
LARGE_INTEGER LastAccessTime
Definition: fileinfo.h:748
BOOLEAN Directory
Definition: fileinfo.h:340
LARGE_INTEGER ActualAvailableAllocationUnits
Definition: fileinfo.h:1154
ULONG StreamNameLength
Definition: fileinfo.h:1045
CCHAR ShortNameLength
Definition: fileinfo.h:633
ULONG FileNameLength
Definition: fileinfo.h:480
LARGE_INTEGER CreationTime
Definition: fileinfo.h:294
ULONG NextEntryOffset
Definition: fileinfo.h:653
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:763
LARGE_INTEGER ValidDataLength
Definition: fileinfo.h:281
ULONG FileSystemAttributes
Definition: fileinfo.h:1176
LARGE_INTEGER CreationTime
Definition: fileinfo.h:744
ULONG FileNameLength
Definition: fileinfo.h:550
ULONG FileNameLength
Definition: fileinfo.h:625
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:397
LARGE_INTEGER LastWriteTime
Definition: fileinfo.h:1210
ULONG FileNameLength
Definition: fileinfo.h:829
Used as an argument to the ZwSetInformationFile routine.
Definition: fileinfo.h:263
LARGE_INTEGER ChangeTime
Definition: fileinfo.h:522
Used to query detailed information for the files in a directory.
Definition: fileinfo.h:571
Structure is used to define Unicode strings.
Definition: fileinfo.h:1344
Used as an argument to ZwSetInformationFile.
Definition: fileinfo.h:276
ULONG NextEntryOffset
Definition: fileinfo.h:820
Structure is a container for several FILE_XXX_INFORMATION structures.
Definition: fileinfo.h:932
BOOLEAN ReplaceIfExists
Definition: fileinfo.h:978
ULONG Flags
Definition: fileinfo.h:254
Contains the full UNC physical pathname for a file or directory on a remote file share.
Definition: fileinfo.h:1240
ULONG FileAttributes
Definition: fileinfo.h:780
ULONG FileAttributes
Definition: fileinfo.h:476
ULONG FileAttributes
Definition: fileinfo.h:546
Used as an argument to ZwQueryInformationFile.
Definition: fileinfo.h:1198
ULONG BytesPerSector
Definition: fileinfo.h:1162
Used as argument to the ZwQueryInformationFile and ZwSetInformationFile routines. ...
Definition: fileinfo.h:187
LARGE_INTEGER ChangeTime
Definition: fileinfo.h:452
ULONG ReparseTag
Definition: fileinfo.h:214
ULONG FileAttributes
Definition: fileinfo.h:698
ULONG FileAttributes
Definition: fileinfo.h:311
Used to set the allocation size for a file.
Definition: fileinfo.h:959
LARGE_INTEGER LastAccessTime
Definition: fileinfo.h:444
Used as an argument to routines that query or set file information.
Definition: fileinfo.h:290
LARGE_INTEGER StreamAllocationSize
Definition: fileinfo.h:1054
ULONG FileNameLength
Definition: fileinfo.h:1020
ULONG FileNameLength
Definition: fileinfo.h:988
ULONG VolumeLabelLength
Definition: fileinfo.h:1096
LARGE_INTEGER IndexNumber
Definition: fileinfo.h:855
USHORT MaximumLength
Definition: fileinfo.h:1352
ULONG FileNameLength
Definition: fileinfo.h:414
LARGE_INTEGER ChangeTime
Definition: fileinfo.h:1214
Used to query detailed information for the files in a directory.
Definition: fileinfo.h:648
ULONG FileIndex
Definition: fileinfo.h:370
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:324
ULONG AlignmentRequirement
Definition: fileinfo.h:178
Used to query information about a volume on which a file system is mounted.
Definition: fileinfo.h:1084
LARGE_INTEGER CreationTime
Definition: fileinfo.h:440
FILE_NAME_INFORMATION NameInformation
Definition: fileinfo.h:950
ULONG EaSize
Definition: fileinfo.h:788
ULONG NextEntryOffset
Definition: fileinfo.h:1041
LARGE_INTEGER ChangeTime
Definition: fileinfo.h:597
Used to query for or set the access rights of a file.
Definition: fileinfo.h:897
LARGE_INTEGER LastAccessTime
Definition: fileinfo.h:666
Contains identification information for a file.
Definition: fileinfo.h:866
USHORT Length
Definition: fileinfo.h:1348
LARGE_INTEGER CreationTime
Definition: fileinfo.h:1202
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:459
ULONG NextEntryOffset
Definition: fileinfo.h:735
LARGE_INTEGER LastAccessTime
Definition: fileinfo.h:378
Used to query detailed information for the files in a directory.
Definition: fileinfo.h:496
BOOLEAN SupportsObjects
Definition: fileinfo.h:1100
ULONG FileIndex
Definition: fileinfo.h:581
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:767
LARGE_INTEGER CreationTime
Definition: fileinfo.h:662
Used as an argument to the ZwSetInformationFile routine.
Definition: fileinfo.h:223
FILE_EA_INFORMATION EaInformation
Definition: fileinfo.h:940
ULONG EaSize
Definition: fileinfo.h:554
LARGE_INTEGER ChangeTime
Definition: fileinfo.h:674
ULONG NextEntryOffset
Definition: fileinfo.h:576
LARGE_INTEGER ChangeTime
Definition: fileinfo.h:386
Used to query sector size information for a file system volume.
Definition: fileinfo.h:1113
ULONG FileAttributes
Definition: fileinfo.h:1231
FILE_MODE_INFORMATION ModeInformation
Definition: fileinfo.h:946
LARGE_INTEGER TotalAllocationUnits
Definition: fileinfo.h:1145
Used to rename a file.
Definition: fileinfo.h:1005
FILE_POSITION_INFORMATION PositionInformation
Definition: fileinfo.h:944
LARGE_INTEGER TotalAllocationUnits
Definition: fileinfo.h:1118
Used to query detailed information for the files in a directory.
Definition: fileinfo.h:426
LARGE_INTEGER LastAccessTime
Definition: fileinfo.h:298
Used to query for the size of the extended attributes (EA) for a file.
Definition: fileinfo.h:884
Used to query or set the access mode of a file.
Definition: fileinfo.h:911
LARGE_INTEGER CreationTime
Definition: fileinfo.h:585
LARGE_INTEGER FileId
Definition: fileinfo.h:559
LARGE_INTEGER LastWriteTime
Definition: fileinfo.h:752
Used to set the label for a file system volume.
Definition: fileinfo.h:1067
LARGE_INTEGER VolumeCreationTime
Definition: fileinfo.h:1088
ULONG EaSize
Definition: fileinfo.h:888
LARGE_INTEGER LastWriteTime
Definition: fileinfo.h:382
ULONG Mode
Definition: fileinfo.h:923
LARGE_INTEGER StreamSize
Definition: fileinfo.h:1049
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:681
ULONG FileIndex
Definition: fileinfo.h:740
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:685
LARGE_INTEGER EndOfFile
Definition: fileinfo.h:328
FILE_STANDARD_INFORMATION StandardInformation
Definition: fileinfo.h:936
ULONG FileIndex
Definition: fileinfo.h:658
LARGE_INTEGER LastAccessTime
Definition: fileinfo.h:1206
ULONG ReparsePointTag
Definition: fileinfo.h:792
ULONGLONG VolumeSerialNumber
Definition: fileinfo.h:870
Used to query detailed information about the names of files in a directory.
Definition: fileinfo.h:815
ULONG FileIndex
Definition: fileinfo.h:506
Used as an argument to the ZwSetInformationFile routine.
Definition: fileinfo.h:244
FILE_ID_128 FileId
Definition: fileinfo.h:875
LARGE_INTEGER AllocationSize
Definition: fileinfo.h:608