我正在尝试创建一个强大的递归文件夹删除函数。
对于普通目录来说,它的工作非常好。
问题出现在我创建了一个“超级硬核”的目录时:
C:\test\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x\ ... \x\x\x
这个目录的长度约为25000(小于MSDN限制:32,767)。基本上我是递归地创建此目录,直到CreatDirectory函数失败。
现在,最奇怪的事情是,我的函数能够删除2个目录,然后FindFirstFile就会在0x5的错误下失败:
\\?\C:\test\x\ ... \x\x\x\*.* < no error
\\?\C:\test\x\ ... \x\x\*.* < no error
\\?\C:\test\x\ ... \x\*.* < access denied
我可以重新运行it,app会很慢地渐渐占用文件夹,一次两个,可能直到路径长度变得相当小为止。
我正在运行FindFirstFile来检查文件夹是否为空。
- 是否存在一些较少记录的限制?
- FindFirstFile是否根本不起作用?(有bug吗?)
- 我是否遗漏了某种NTFS权限的东西?
- 其他什么……
编辑: 重要提示:如果我慢慢地逐步运行程序......那么就不会出现任何故障。