uint64_t ImplNodeEx::inode() const noexcept { if (data_.nNumberOfLinks == 0) update(); return make_uint64(data_.nFileIndexHigh, data_.nFileIndexLow); // & 0x0000FFFFFFFFFFFFULL; }
uint64_t get_inode(PCWSTR path, size_t * nlink) { memory::auto_close<HANDLE> file(CheckHandle(::CreateFileW(path, FILE_READ_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, nullptr))); BY_HANDLE_FILE_INFORMATION info; CheckApi(::GetFileInformationByHandle(file, &info)); if (nlink) *nlink = info.nNumberOfLinks; return make_uint64(info.nFileIndexHigh, info.nFileIndexLow); }
Time ImplNodeEx::mtime() const noexcept { return static_cast<fsys::Time>(make_uint64(data_.ftLastWriteTime.dwHighDateTime, data_.ftLastWriteTime.dwLowDateTime)); }
Size ImplNodeEx::size() const noexcept { return make_uint64(data_.nFileSizeHigh, data_.nFileSizeLow); }
uint64_t get_size(const wchar_t* path) { WIN32_FILE_ATTRIBUTE_DATA info; CheckApi(::GetFileAttributesExW(path, GetFileExInfoStandard, &info)); return make_uint64(info.nFileSizeHigh, info.nFileSizeLow); }
uint64_t Facade::get_inode() const { return make_uint64(nFileIndexHigh, nFileIndexLow); }
fsys::Size fsys::Sequence::FindStat::size() const { return make_uint64(data.nFileSizeHigh, data.nFileSizeLow); }
fsys::Time fsys::Sequence::FindStat::mtime() const { return static_cast<Time>(make_uint64(data.ftLastWriteTime.dwHighDateTime, data.ftLastWriteTime.dwLowDateTime)); }