@@ -132,6 +132,22 @@ typedef struct _FILE_BASIC_INFORMATION
132132 ULONG FileAttributes ;
133133} FILE_BASIC_INFORMATION , * PFILE_BASIC_INFORMATION ;
134134
135+ typedef struct _FILE_RENAME_INFORMATION
136+ {
137+ #if (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS1 )
138+ union
139+ {
140+ BOOLEAN ReplaceIfExists ; // FileRenameInformation
141+ ULONG Flags ; // FileRenameInformationEx
142+ } DUMMYUNIONNAME ;
143+ #else
144+ BOOLEAN ReplaceIfExists ;
145+ #endif
146+ HANDLE RootDirectory ;
147+ ULONG FileNameLength ;
148+ WCHAR FileName [1 ];
149+ } FILE_RENAME_INFORMATION , * PFILE_RENAME_INFORMATION ;
150+
135151typedef struct _FILE_STANDARD_INFORMATION
136152{
137153 LARGE_INTEGER AllocationSize ;
@@ -185,6 +201,122 @@ typedef struct _FILE_NAME_INFORMATION
185201 WCHAR FileName [1 ];
186202} FILE_NAME_INFORMATION , * PFILE_NAME_INFORMATION ;
187203
204+ typedef struct _FILE_ID_EXTD_DIR_INFORMATION
205+ {
206+ ULONG NextEntryOffset ;
207+ ULONG FileIndex ;
208+ LARGE_INTEGER CreationTime ;
209+ LARGE_INTEGER LastAccessTime ;
210+ LARGE_INTEGER LastWriteTime ;
211+ LARGE_INTEGER ChangeTime ;
212+ LARGE_INTEGER EndOfFile ;
213+ LARGE_INTEGER AllocationSize ;
214+ ULONG FileAttributes ;
215+ ULONG FileNameLength ;
216+ ULONG EaSize ;
217+ ULONG ReparsePointTag ;
218+ FILE_ID_128 FileId ;
219+ WCHAR FileName [1 ];
220+ } FILE_ID_EXTD_DIR_INFORMATION , * PFILE_ID_EXTD_DIR_INFORMATION ;
221+
222+ typedef struct _FILE_ID_EXTD_BOTH_DIR_INFORMATION
223+ {
224+ ULONG NextEntryOffset ;
225+ ULONG FileIndex ;
226+ LARGE_INTEGER CreationTime ;
227+ LARGE_INTEGER LastAccessTime ;
228+ LARGE_INTEGER LastWriteTime ;
229+ LARGE_INTEGER ChangeTime ;
230+ LARGE_INTEGER EndOfFile ;
231+ LARGE_INTEGER AllocationSize ;
232+ ULONG FileAttributes ;
233+ ULONG FileNameLength ;
234+ ULONG EaSize ;
235+ ULONG ReparsePointTag ;
236+ FILE_ID_128 FileId ;
237+ CCHAR ShortNameLength ;
238+ WCHAR ShortName [12 ];
239+ WCHAR FileName [1 ];
240+ } FILE_ID_EXTD_BOTH_DIR_INFORMATION , * PFILE_ID_EXTD_BOTH_DIR_INFORMATION ;
241+
242+ typedef struct _FILE_ID_64_EXTD_DIR_INFORMATION
243+ {
244+ ULONG NextEntryOffset ;
245+ ULONG FileIndex ;
246+ LARGE_INTEGER CreationTime ;
247+ LARGE_INTEGER LastAccessTime ;
248+ LARGE_INTEGER LastWriteTime ;
249+ LARGE_INTEGER ChangeTime ;
250+ LARGE_INTEGER EndOfFile ;
251+ LARGE_INTEGER AllocationSize ;
252+ ULONG FileAttributes ;
253+ ULONG FileNameLength ;
254+ ULONG EaSize ;
255+ ULONG ReparsePointTag ;
256+ LARGE_INTEGER FileId ;
257+ WCHAR FileName [1 ];
258+ } FILE_ID_64_EXTD_DIR_INFORMATION , * PFILE_ID_64_EXTD_DIR_INFORMATION ;
259+
260+ typedef struct _FILE_ID_64_EXTD_BOTH_DIR_INFORMATION
261+ {
262+ ULONG NextEntryOffset ;
263+ ULONG FileIndex ;
264+ LARGE_INTEGER CreationTime ;
265+ LARGE_INTEGER LastAccessTime ;
266+ LARGE_INTEGER LastWriteTime ;
267+ LARGE_INTEGER ChangeTime ;
268+ LARGE_INTEGER EndOfFile ;
269+ LARGE_INTEGER AllocationSize ;
270+ ULONG FileAttributes ;
271+ ULONG FileNameLength ;
272+ ULONG EaSize ;
273+ ULONG ReparsePointTag ;
274+ LARGE_INTEGER FileId ;
275+ CCHAR ShortNameLength ;
276+ WCHAR ShortName [12 ];
277+ WCHAR FileName [1 ];
278+ } FILE_ID_64_EXTD_BOTH_DIR_INFORMATION , * PFILE_ID_64_EXTD_BOTH_DIR_INFORMATION ;
279+
280+ typedef struct _FILE_ID_ALL_EXTD_DIR_INFORMATION
281+ {
282+ ULONG NextEntryOffset ;
283+ ULONG FileIndex ;
284+ LARGE_INTEGER CreationTime ;
285+ LARGE_INTEGER LastAccessTime ;
286+ LARGE_INTEGER LastWriteTime ;
287+ LARGE_INTEGER ChangeTime ;
288+ LARGE_INTEGER EndOfFile ;
289+ LARGE_INTEGER AllocationSize ;
290+ ULONG FileAttributes ;
291+ ULONG FileNameLength ;
292+ ULONG EaSize ;
293+ ULONG ReparsePointTag ;
294+ LARGE_INTEGER FileId ;
295+ FILE_ID_128 FileId128 ;
296+ WCHAR FileName [1 ];
297+ } FILE_ID_ALL_EXTD_DIR_INFORMATION , * PFILE_ID_ALL_EXTD_DIR_INFORMATION ;
298+
299+ typedef struct _FILE_ID_ALL_EXTD_BOTH_DIR_INFORMATION
300+ {
301+ ULONG NextEntryOffset ;
302+ ULONG FileIndex ;
303+ LARGE_INTEGER CreationTime ;
304+ LARGE_INTEGER LastAccessTime ;
305+ LARGE_INTEGER LastWriteTime ;
306+ LARGE_INTEGER ChangeTime ;
307+ LARGE_INTEGER EndOfFile ;
308+ LARGE_INTEGER AllocationSize ;
309+ ULONG FileAttributes ;
310+ ULONG FileNameLength ;
311+ ULONG EaSize ;
312+ ULONG ReparsePointTag ;
313+ LARGE_INTEGER FileId ;
314+ FILE_ID_128 FileId128 ;
315+ CCHAR ShortNameLength ;
316+ WCHAR ShortName [12 ];
317+ WCHAR FileName [1 ];
318+ } FILE_ID_ALL_EXTD_BOTH_DIR_INFORMATION , * PFILE_ID_ALL_EXTD_BOTH_DIR_INFORMATION ;
319+
188320typedef struct _FILE_ALL_INFORMATION
189321{
190322 FILE_BASIC_INFORMATION BasicInformation ;
@@ -236,19 +368,25 @@ typedef struct _FILE_REPARSE_POINT_INFORMATION
236368
237369typedef enum _FILE_INFORMATION_CLASS
238370{
239- FileDirectoryInformation = 1 ,
240- FileFullDirectoryInformation = 2 ,
241- FileBothDirectoryInformation = 3 ,
242- FileStandardInformation = 5 ,
243- FileNameInformation = 9 ,
244- FileRenameInformation = 10 ,
245- FileNamesInformation = 12 ,
246- FileAllInformation = 18 ,
247- FileObjectIdInformation = 29 ,
248- FileReparsePointInformation = 33 ,
249- FileIdBothDirectoryInformation = 37 ,
250- FileIdFullDirectoryInformation = 38 ,
251- FileNormalizedNameInformation = 48 ,
371+ FileDirectoryInformation = 1 ,
372+ FileFullDirectoryInformation = 2 ,
373+ FileBothDirectoryInformation = 3 ,
374+ FileStandardInformation = 5 ,
375+ FileNameInformation = 9 ,
376+ FileRenameInformation = 10 ,
377+ FileNamesInformation = 12 ,
378+ FileAllInformation = 18 ,
379+ FileObjectIdInformation = 29 ,
380+ FileReparsePointInformation = 33 ,
381+ FileIdBothDirectoryInformation = 37 ,
382+ FileIdFullDirectoryInformation = 38 ,
383+ FileNormalizedNameInformation = 48 ,
384+ FileIdExtdDirectoryInformation = 60 ,
385+ FileIdExtdBothDirectoryInformation = 63 ,
386+ FileId64ExtdDirectoryInformation = 78 ,
387+ FileId64ExtdBothDirectoryInformation = 79 ,
388+ FileIdAllExtdDirectoryInformation = 80 ,
389+ FileIdAllExtdBothDirectoryInformation = 81
252390} FILE_INFORMATION_CLASS ,
253391 * PFILE_INFORMATION_CLASS ;
254392
0 commit comments