我想知道,Windows 内核允许的最长名称长度是多少?
例如:我知道内核使用UNICODE_STRING
结构来保存所有对象路径,并且由于宽字符串的字节长度存储在 aUSHORT
中,因此允许最大路径长度为 2^15 - 1 个字符。文件名(而不是路径)是否有类似的硬限制?(我不在乎 NTFS 或 FAT32 是否施加了特定限制;我正在寻找内核中理论上允许的最长的名称,假设没有额外的文件系统或 shell 限制。)
(编辑:对于那些想知道为什么这很重要的人,请考虑一下,通常情况下,遍历目录是通过FindFirstFile
/FindNextFile
调用实现的,每个文件调用一次。给定名为 的函数NtQueryDirectoryFile
,它是底层系统调用,每次调用返回多个文件名,它是实际上可以利用路径上的最大长度限制来制作一个非常快的目录遍历器,它只使用堆栈作为缓冲区。现在我正在尝试扩展这个概念,我需要知道的最大大小一个文件名。)