首页 > 解决方案 > 在 BY_HANDLE_FILE_INFORMATION 结构中 nNumberOfLinks 是什么

问题描述

在文档中,他们提到 nNumberOfLinks 是“指向此文件的链接数。对于 FAT 文件系统,此成员始终为 1。对于 NTFS 文件系统,它可以大于 1。”

文件的链接数意味着什么?如果该文件用作 3 个符号链接的目标,则 nNumberOfLinks 为 3 。或者它还有其他含义。

标签: winapintfs

解决方案


查看 ReactOS 源代码中 GetFileInformationByHandle 的实现, https: //doxygen.reactos.org/da/d02/dll_2win32_2kernel32_2client_2file_2fileinfo_8c_source.html我们可以看到字段 nNumberOfLinks 填充如下(删除了错误检查)。

errCode = NtQueryInformationFile(hFile,
                &IoStatusBlock,
                &FileStandard,
                sizeof(FILE_STANDARD_INFORMATION),
                FileStandardInformation);
lpFileInformation->nNumberOfLinks = FileStandard.NumberOfLinks;

根据 FILE_STANDARD_INFORMATION https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_file_standard_information的文档。

链接数

文件的硬链接数。

所以 nNumberOfLinks 将是硬链接的数量,正如 dxiv 在评论中提到的那样。


推荐阅读