Meh*_*dad 5 winapi filenames kernel path name-length
我想知道,Windows内核允许的最长名称长度是多少?
例如:我知道内核使用UNICODE_STRING结构来保存所有对象路径,并且因为宽字符串的字节长度存储在a中USHORT,所以允许最大路径长度为2 ^ 15-1个字符.是否对文件名(而不是路径)有类似的严格限制?(我不在乎NTFS或FAT32是否有特殊的限制;我正在寻找内核中理论上允许的最长名称,假设没有额外的文件系统或shell限制.)
(编辑:对于那些想知道为什么这甚至很重要的人,考虑一下,通常,遍历目录是通过FindFirstFile/ FindNextFile调用实现的,每个文件调用一次.给定名为function的函数NtQueryDirectoryFile,它是底层系统调用,每次调用返回多个文件名,它是实际上可以利用路径上的这个最大长度限制来创建一个非常快速的目录遍历器,它只使用堆栈作为缓冲区.现在我正在尝试扩展这个概念,我需要知道最大的大小文件名.)
啊,我自己发现这个页面保证文件名不能超过255个字符:
- 路径名的长度不得超过 32,760 个字符。
...- 每个路径名组成部分的长度不得超过 255 个字符。
这让我想知道:
ULONGs 表示文件名长度,而使用USHORTs 表示路径长度?!如果有人知道这是为什么,请留言/评论!我比较好奇。:)
| 归档时间: |
|
| 查看次数: |
2315 次 |
| 最近记录: |