в структуре BY_HANDLE_FILE_INFORMATION что такое nNumberOfLinks - PullRequest
1 голос
/ 13 июля 2020

в do c, они упомянули, что nNumberOfLinks - это «количество ссылок на этот файл. Для файловой системы FAT этот член всегда равен 1. Для файловой системы NTFS он может быть больше 1. "

Что означает количество ссылок на файл? если этот файл используется как место назначения 3 символических ссылок, тогда nNumberOfLinks равно 3. или имеет другое значение.

1 Ответ

1 голос
/ 14 июля 2020

Рассматривая реализацию GetFileInformationByHandle в исходном коде ReactOS, 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.

NumberOfLinks

Количество жестких ссылок на файл.

Таким образом, nNumberOfLinks будет количеством жестких ссылок, как указано dxiv в комментариях.

...