0

我的应用程序将一些数据字节写入备用数据流。这在除一台机器(Windows Server 2003 SP2)之外的所有机器上都可以正常工作。相反,ERROR_DISK_FULL当我尝试创建备用数据流(在根目录上)时,CreateFile 会返回。我找不到这个结果的原因,因为...

  • 那个驱动器上有足够的空间。

  • 该驱动器采用 NTFS 格式(由于 GetVolumeInformation)。

  • 该驱动器支持备用数据流(由于 GetVolumeInformation)。

编辑:我可以提供更多关于原因的信息我在测试系统上添加了许多未显示错误的流,并想知道是否可能发生错误。它没有。相反,在大约 2000 个具有长文件名的流之后,另一个错误发生并持续存在:1450 (ERROR_NO_SYSTEM_RESOURCES)。

编辑:这是使用的文件名之一的示例:

char szStreamFileName[] = "C:\\:abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnoqrstuvwxyz012345";

编辑:我们的客户在此服务器上使用 Avira 的一些公司防病毒软件。也许这就是原因(备用数据流可能被恶意软件滥用)。

4

7 回答 7

2

在 MS 打开支持票后,我知道有一个只读标志集,只能使用未记录的 Windows 功能设置(和重置)。没有人知道是谁设置了这个标志以及为什么设置这个标志,但我给他们发了一张驱动器的图像(在我从我们的客户那里拿到机器之后),所以他们想通了。我们的应用程序中只有一个解决方法(如果我们检测到此错误,我们将使用另一个位置)。同时我们知道我们的一些客户有这个问题。

于 2011-08-18T11:14:08.483 回答
1

是否有任何压缩/备用文件或备用数据流?

通常,备份应用程序在尝试备份压缩文件时会收到 ERROR_DISK_FULL 错误,当驱动器上仍有数 GB 的可用空间时,这会导致相当多的混乱。复制压缩文件时也可能出现其他问题。本博客的目的是让读者更全面地了解压缩 NTFS 文件时实际发生的情况。

了解 NTFS 压缩

于 2009-10-30T03:31:32.143 回答
0

只是另一种可能...

您是否检查过操作系统中当前打开的文件数?操作系统支持最大。在报告 ERROR_DISK_FULL 或 ERROR_NO_SYSTEM_RESOURCES 之后保留的文件句柄数。

第二种可能性......根目录受文件数量的限制。我记得旧版本的操作系统中有 512 个文件。但是 NTFS 支持根目录下无限数量的文件!

于 2009-10-28T18:15:49.447 回答
0

您可能想看看Sysinternal 的 Process Monitor实用程序在尝试创建此文件时捕获的内容 - 它显示了 I/O 堆栈中涉及的各种 API 的返回代码,其中一个可能会为您提供关于为什么 112 的线索还给你。希望 ProcMon 中的详细程度足够 - 如果没有,我想还有其他更详细的 Windows 的 I/O 跟踪工具(但我不知道它们是否在我的脑海中)

于 2009-11-02T07:27:59.960 回答
0

你给的文件名是

char szStreamFileName[] = "C:\\:abcdefghijklm...

它开始于

C:\\:

这是帖子上的错字,还是斜线后面真的有冒号?我认为那是一个非法的文件名。

于 2009-11-03T09:11:57.840 回答
0

如果您尝试将大于 2GB 的文件从另一个文件系统 (NTFS) 复制到具有 2GB 限制的 FAT / FAT32,您可能会看到此错误。

于 2010-05-03T17:32:51.027 回答
-1

只是一个盲目的镜头,但权利设置是否正确?

于 2009-10-22T10:26:06.237 回答