int WINAPI GetNumberOfLinks(const wchar_t *Name) { int NumberOfLinks=1; File file; if(file.Open(Name, 0, FILE_SHARE_READ|FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT)) { BY_HANDLE_FILE_INFORMATION bhfi; if (file.GetInformation(bhfi)) { NumberOfLinks=bhfi.nNumberOfLinks; } file.Close(); } return NumberOfLinks; }
int GetNumberOfLinks(const string& Name, bool negative_if_error) { int NumberOfLinks = (negative_if_error ? -1 : +1); File file; if(file.Open(Name, 0, FILE_SHARE_READ|FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT)) { BY_HANDLE_FILE_INFORMATION bhfi; if (file.GetInformation(bhfi)) { NumberOfLinks=bhfi.nNumberOfLinks; } file.Close(); } return NumberOfLinks; }