Maximum Possible File Name Length in Windows Kernel
Posted
by
Lambert
on Stack Overflow
See other posts from Stack Overflow
or by Lambert
Published on 2011-01-07T09:23:19Z
Indexed on
2011/01/07
9:54 UTC
Read the original article
Hit count: 261
I was wondering, what is the longest possible name length allowed by the Windows kernel?
E.g.: I know the kernel uses UNICODE_STRING
structures to hold all object paths, and since the byte length of a wide-character string is stored inside a USHORT
, that allows for a maximum path length of 2^15 - 1 characters. Is there a similar, hard restriction on a file name (rather than path)? (I don't care if NTFS or FAT32 imposes a particular restriction; I'm looking for the longest possible theoretically allowed name in the kernel, assuming no additional file system or shell restrictions.)
(Edit: For those wondering why this even matters, consider that normally, traversing a directory is achieved by FindFirstFile
/FindNextFile
calls, one call per file. Given the function named NtQueryDirectoryFile
, which is the underlying system call and which returns multiple file names per call, it's actually possible to take advantage of this maximum-length restriction on the path to make an extremely-fast directory traverser that uses solely the stack as a buffer. Now I'm trying to extend that concept, and I need to know the maximum size of a file name.)
© Stack Overflow or respective owner