我的应用程序将一些字节的数据写入备用数据流。这适用于除一台计算机之外的所有计算机(Windows Server 2003 SP2)。
相反,当我尝试创建备用数据流(在根目录上)时,CreateFile返回ERROR_DISK_FULL
。我没有找到这个结果的原因,因为......
该驱动器上有足够的空间。
驱动器是NTFS格式的(由于GetVolumeInformation)。
驱动器支持altenate数据 流(由于GetVolumeInformation)。
编辑:我可以提供一些有关不的原因的更多信息: 我在测试系统上添加了许多流,这些流没有显示错误,并想知道是否可能发生错误。它没有。相反,在大约2000个带有长文件名的Streams之后,又发生了另一个错误并持续存在:1450(ERROR_NO_SYSTEM_RESOURCES)。
编辑:以下是其中一个使用过的文件名的示例:
char szStreamFileName[] = "C:\\:abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnoqrstuvwxyz012345";
编辑:我们的客户在此服务器上使用Avira的一些企业防病毒软件。也许这就是原因(备用数据流可能被恶意软件滥用)。
答案 0 :(得分:2)
在MS打开支持服务单后,我知道有一个只读标志设置,只能设置(和重置)未记录的Windows功能。没有人知道是谁设置了这个标志以及为什么,但我给他们发了一张驱动器的图像(在我从我们的客户拿到机器之后),所以他们想出来了。我们的应用程序中只有一个解决方法(如果检测到此错误,我们会使用其他位置)。同时我们知道我们的一些客户有这个问题。
答案 1 :(得分:1)
是否有压缩/备用文件或备用数据流?
备份应用程序通常会在尝试备份压缩文件时收到ERROR_DISK_FULL错误,这会在驱动器上仍有几千兆字节的可用空间时造成相当大的混乱。复制压缩文件时也可能出现其他问题。本博客的目的是让读者更全面地了解压缩NTFS文件时会发生什么。
答案 2 :(得分:0)
只是一个盲目的镜头,但权利设置是否正确?
答案 3 :(得分:0)
另一种可能性......
您是否检查过操作系统中当前打开文件的数量? 操作系统支持最大该报告后的保留文件句柄数ERROR_DISK_FULL或ERROR_NO_SYSTEM_RESOURCES。
第二种可能性...... 根目录受文件数量的限制。我记得在旧版本的OS中有512个文件。但是NTFS在root中支持无限数量的文件!
答案 4 :(得分:0)
您可能希望在尝试创建此文件时看到Sysinternal's Process Monitor实用程序捕获的内容 - 它显示I / O堆栈中涉及的各种API的返回代码,其中一个可能会给您一个线索为什么112正在归还给你。希望ProcMon的详细程度足够 - 如果没有,我想有其他更详细的I / O跟踪工具适用于Windows(但我不知道它们在我的头顶)
答案 5 :(得分:0)
您提供的文件名是
char szStreamFileName[] = "C:\\:abcdefghijklm...
以
开头C:\\:
这是帖子上的拼写错误,还是在斜线后真的有冒号?我认为这是一个非法的文件名。
答案 6 :(得分:0)
如果您尝试将大于2GB的文件从另一个文件系统(NTFS)复制到FAT / FAT32(其限制为2GB),您可能会看到此错误。