public static ulong GetFileInodeNumber(this FileInfo fileInfo) { if (fileInfo == null) { throw new ArgumentNullException("fileInfo"); } return(EnvironmentHelper.RunningOnUnix ? PosixHelper.GetFileInodeNum(fileInfo) : WinAPIHelper.GetFileSystemIdFor(fileInfo)); }
public static ulong GetFileInodeNumber(this FileStream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } return(EnvironmentHelper.RunningOnUnix ? PosixHelper.GetFileInodeNum(stream) : WinAPIHelper.GetFileSystemIdFor(stream)); }
public static ulong GetFileSystemIdFor(FileStream fs) { if (fs == null) { throw new ArgumentNullException("fs"); } //if (fs.Handle <= 0) throw new ArgumentException("file stream should have an associated handle"); var objectFileInfo = new WinAPIHelper.BY_HANDLE_FILE_INFORMATION(); #pragma warning disable CS0618 // Type or member is obsolete WinAPIHelper.GetFileInformationByHandle(fs.Handle, out objectFileInfo); // FIXME: Avoid using deprecated handle property. #pragma warning restore CS0618 // Type or member is obsolete var fileIndex = ((ulong)objectFileInfo.FileIndexHigh << 32) + (ulong)objectFileInfo.FileIndexLow; return(fileIndex); }