2

我需要在 Windows 中找到一个目录的 inode 号。使用_statand_stat64函数,我可以获取文件的 inode 和其他信息。但是当我对 Windows 目录使用相同的目录时,它总是为任何目录提供相同的编号。

有没有办法找到 Windows 目录的 inode 号?

4

3 回答 3

4

windows stat 文档

st_ino

文件的信息节点(inode)的编号(特定于 UNIX)。在 UNIX 文件系统上,inode 描述文件日期和时间戳、权限和内容。当文件彼此硬链接时,它们共享相同的 inode。inode 和 st_ino 在 FAT、HPFS 或 NTFS 文件系统中没有任何意义。

因此,不要依赖 Windows 系统上的 inode 编号。它是一个特定于 Unix 的概念。

有关 Windows 如何在没有 inode 但使用类似的东西的情况下管理文件的一些想法,请参阅此SO 帖子

于 2012-05-09T07:03:25.720 回答
3

Windows 文件系统没有直接模拟大多数 Unix 文件系统中的 inode 编号。

如果您想要唯一且明确地标识相关目录的内容,您可能会发现卷序列号/FileId 组合就足够了。您可以通过将(第二个参数)设置为来检索这些GetFileInformationByHandleEx(尽管有名称,但可以检索有关目录的信息)。FileInformationClassFileIdInfo

不过,这对 NTFS非常有用。正如您将在文档中看到的那样,FAT 文件系统的限制非常重要(尽管根据您的需要,它仍然总比没有好)。

于 2012-05-09T08:42:21.947 回答
1

来自维基百科:

索引节点(inode)是传统 Unix 风格文件系统(如 UFS)上的数据结构。inode 存储有关常规文件、目录或其他文件系统对象的所有信息,但其数据和名称除外。

Windows 使用的常用文件系统不是围绕 inode 概念构建的,它们是不同的,因此没有“inode number”需要报告,除此之外。

这是一个解释清楚的链接:Inode Explanation

于 2012-05-09T07:08:47.063 回答