(cpp, Windows) Что значит этот код?
// check that one path is symbolic link to another one
bool tefCheckSymbolicLink(LPCTSTR pFistPath, LPCTSTR pSecondPath)
{
_ _ bool isSymLink = false;
_ _ HANDLE hSource = ::CreateFile(pFistPath, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
_ _ HANDLE hDest = ::CreateFile(pSecondPath, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
_ _ if (INVALID_HANDLE_VALUE != hSource && INVALID_HANDLE_VALUE != hDest)
_ _ {
_ __ _ BY_HANDLE_FILE_INFORMATION infoSource;
_ __ _ BY_HANDLE_FILE_INFORMATION infoDest;
_ __ _ if (::GetFileInformationByHandle(hSource, &infoSource) && ::GetFileInformationByHandle(hSource, &infoDest))
_ _ _ _{
_ _ _ __ _ if (infoSource.dwVolumeSerialNumber == infoDest.dwVolumeSerialNumber &&
_ _ _ _ _ _ _ _ infoSource.nFileIndexLow == infoDest.nFileIndexLow &&
_ _ _ _ _ _
_ _ infoSource.nFileIndexHigh == infoDest.nFileIndexHigh)
_ _ _ _ _ _{
_ _ _ _ _ _ _ _ // File already exists in the destination because source and destination are symlinks.
_ _ _ _ _ _ _ _ isSymLink = true;
_ _ _ _ _ _}
_ _ _ _ }
_ _ }
_ _ ::CloseHandle(hSource);
_ _ ::CloseHandle(hDest);
_ _ return isSymLink;
}
То что два раза hSource - это похоже лажа. (или нет?)
Но если я меняю второе место на hDest, то я никогда не попадаю (дебагером проверял) на isSymLink=true, даже если второй файл есть точная копия первого (только в разных папках), даже когда оба являются *.lnk (ссылаются на один и тот же файл).