Hard Links

Hard links are "additional file names" for the file. The file always has at least one hard link (the actual file name) but can also have additional names in the same or other directories within a filesystem. Hard links are possible for files but not for directories (for directories the number of names is always one).

If you want your filesystem to support hard links, such filesystem must also support File IDs and ID-to-name resolution. In your code you need to implement the callbacks / event handlers related to hard links (OnEumerateHardLinks, OnCloseHardLinkEnumeration, OnCreateHardLink), also implement OnGetFileNameByFileId and return the number of hard links for the file in OnGetFileInfor callback / event handler.