代码之家  ›  专栏  ›  技术社区  ›  ur.

当打开NTFS替代数据流时,Windows错误Error DISKYLY(112)的原因是什么?

  •  0
  • ur.  · 技术社区  · 15 年前

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

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

    • 驱动器是NTFS格式的(由于GetVolumeInformation)。

    • 驱动器支持altenate数据 流(由于GetVolumeInformation)。

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

    编辑:下面是一个使用的文件名示例:

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

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

    7 回复  |  直到 12 年前
        1
  •  2
  •   ur.    14 年前

    在MSI打开一个支持票后,我知道有一个只读标志设置,只有一个可以设置(和重置)与未记录的Windows函数。没有人知道是谁设置了这个标志,也不知道为什么,但我给他们发了一个驱动器的图像(在我从我们的客户那里拿到机器后),于是他们就知道了。我们的应用程序中只有一个解决方法(如果检测到此错误,则使用其他位置)。同时我们知道我们的一些客户有这个问题。

        2
  •  1
  •   Michael    15 年前

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

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

    Understanding NTFS Compression

        3
  •  0
  •   Pekka    15 年前

    只是瞎拍,但权利设置是否妥当?

        4
  •  0
  •   GJ.    15 年前

    只是另一种可能性…

    你检查过你操作系统中当前打开的文件数量吗? 在此之后,操作系统支持的保留文件句柄的最大数量将报告错误磁盘已满或错误系统资源。

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

        5
  •  0
  •   Michael Burr    15 年前

    你可能想看看 Sysinternal's Process Monitor 当尝试创建这个文件时,实用程序捕获-它显示了I/O堆栈中涉及的各种API的返回代码,其中一个可能会告诉您112返回给您的原因。希望procmon中的详细程度足够了——如果不是的话,我想还有其他更详细的windows i/o跟踪工具(但我还不知道这些工具)。

        6
  •  0
  •   RED SOFT ADAIR    15 年前

    您提供的文件名是

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

    它开始于

    C:\\:
    

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

        7
  •  0
  •   brewester93    15 年前

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