FILE_BOTH_DIR_INFORMATION - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
#ifndef _NTIOAPI_H

typedef struct _FILE_BOTH_DIR_INFORMATION
{
    ULONG NextEntryOffset;
    ULONG FileIndex;
    LARGE_INTEGER CreationTime;
    LARGE_INTEGER LastAccessTime;
    LARGE_INTEGER LastWriteTime;
    LARGE_INTEGER ChangeTime;
    LARGE_INTEGER EndOfFile;
    LARGE_INTEGER AllocationSize;
    ULONG FileAttributes;
    ULONG FileNameLength;
    ULONG EaSize;
    CCHAR ShortNameLength;
    WCHAR ShortName[12];
    _Field_size_bytes_(FileNameLength) WCHAR FileName[1];
} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;

#endif

View code on GitHub

This structure is documented in Windows Driver Kit.


Structure FILE_BOTH_DIR_INFORMATION is returned as a result of call NtQueryDirectoryFile with FileBothDirectoryInformation
information class. It's extended version of FILE_FULL_DIR_INFORMATION structure,
additionally containing short file name. It's used in Win32 API calls FindFirstFile and FindNextFile.

NextEntryOffset

Offset (in bytes) of next FILE_BOTH_DIR_INFORMATION structure placed in result buffer. If there's no more entries, NextEntryOffset is set to zero.

FileIndex

File index value, or zero, if directory indexing is not available.

CreationTime

Time of object creation.

LastAccessTime

Last access time. Means time when last open operation was performed.

LastWriteTime

Time of last write data.

ChangeTime

Time of last change.

EndOfFile

Specify length of file, in bytes.

AllocationSize

Specify real size of file on device. It must be equal or greater to EndOfFile member.

FileAttributes

Attributes of file.

FileNameLength

Length of FileName array, in bytes.

EaSize

Size of Extended Attributes associated with file. See also FILE_EA_INFORMATION structure.

ShortNameLength

Length ShortName array, in bytes.

ShortName[12]

Alternate file name, in UNICODE format. Empty string means:

  1. Primary name is compatible with 8DOT3 (MS DOS) standard, and there's no reason to set the same name twice;
  2. File system don't improve short names;

FileName[1]

UNICODE string specifying file name.

Documented by

See also