Skip to content

Commit 370fcd7

Browse files
authored
Add missing FileInformationClass handling (#78)
1 parent b88565d commit 370fcd7

14 files changed

Lines changed: 502 additions & 218 deletions

File tree

src/shared/ntdll_declarations.h

Lines changed: 151 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
135151
typedef 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+
188320
typedef struct _FILE_ALL_INFORMATION
189321
{
190322
FILE_BASIC_INFORMATION BasicInformation;
@@ -236,19 +368,25 @@ typedef struct _FILE_REPARSE_POINT_INFORMATION
236368

237369
typedef 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

Comments
 (0)