Exemplo n.º 1
0
        public static ulong GetFileInodeNumber(this FileInfo fileInfo)
        {
            if (fileInfo == null)
            {
                throw new ArgumentNullException("fileInfo");
            }

            return(EnvironmentHelper.RunningOnUnix ?
                   PosixHelper.GetFileInodeNum(fileInfo)
                                : WinAPIHelper.GetFileSystemIdFor(fileInfo));
        }
Exemplo n.º 2
0
        public static ulong GetFileInodeNumber(this FileStream stream)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            return(EnvironmentHelper.RunningOnUnix ?
                   PosixHelper.GetFileInodeNum(stream)
                                : WinAPIHelper.GetFileSystemIdFor(stream));
        }
Exemplo n.º 3
0
        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);
        }