NtQueryInformationFile(FileStreamInformation) 失败 STATUS_END_OF_FILE

NtQueryInformationFile(FileStreamInformation) fails with STATUS_END_OF_FILE

我处理在某个位置(由 UNC 路径标识)扫描文件并收集有关它们的各种信息的应用程序。其中一个位是备用文件流的列表——通过 NtQueryInformationFile(..., FileStreamInformation) 调用检索。

这适用于不计其数的文件,除了极少数 - 对于那些少数(大部分 jpg 源自某些相机,但也有 docxzip)的文件调用失败 STATUS_END_OF_FILE。我找不到任何解释为什么。同一目录中的其他文件没有此类问题,dir /r 显示没有备用流,copy 工作正常。数据损坏的可能性很小。

如果有任何想法可以解释这一点,我将不胜感激。谢谢。

更多信息:

备用流出了点问题。列出它们会失败,但如果您复制文件——它到达目的地时没有任何备用流(并且应用程序可以毫无问题地处理复制的文件)。我怀疑 OS 复制操作会默默地忽略与 alt 流相关的故障并且(如果发生)不会复制它们。

所以,基本上,将文件复制到别处并将它们复制回来(覆盖原件)可以解决问题。