<PackageReference Include="Relativity.Server.Transfer.SDK" Version="24000.0.1" />

NativeMethodHelper

static class NativeMethodHelper
using Relativity.Transfer.Enumeration.Helpers; using System; using System.IO; namespace Relativity.Transfer.Enumeration.Native { internal static class NativeMethodHelper { private const uint _NULL_ATTRIBUTE = uint.MaxValue; public static long ToSize(NativeFindData findData) { return CombineHighLowInts(findData.nFileSizeHigh, findData.nFileSizeLow); } public static DateTime ToDateTime(NativeFindData findData) { return DateTime.FromFileTime(ToFileTime(findData)); } internal static long ToFileTime(NativeFindData findData) { return CombineHighLowInts(findData.ftLastWriteTime_dwHighDateTime, findData.ftLastWriteTime_dwLowDateTime); } public static bool IsDirectory(NativeFindData findData) { return findData.dwFileAttributes.IsDirectory(); } public static bool IsSymbolicLink(NativeFindData findData) { return findData.dwFileAttributes.IsSymbolicLink(); } public static bool FileExists(string path) { string lpFileName = path.StartsWith("\\\\?\\") ? path : LongPathHelper.ToLongPath(path); uint fileAttributes = NativeMethodsFactory.Create().GetFileAttributes(lpFileName); if (fileAttributes != uint.MaxValue) return !HasDirectoryFlag(fileAttributes); return false; } public static bool DirectoryExists(string path) { string lpFileName = path.StartsWith("\\\\?\\") ? path : LongPathHelper.ToLongPath(path); uint fileAttributes = NativeMethodsFactory.Create().GetFileAttributes(lpFileName); if (fileAttributes != uint.MaxValue) return HasDirectoryFlag(fileAttributes); return false; } public static bool IsDotOrTwoDotPath(NativeFindData findData) { if (string.IsNullOrEmpty(findData.cFileName)) return false; if (findData.cFileName[0] == '.') { if (findData.cFileName.Length != 1) { if (findData.cFileName[1] == '.') return findData.cFileName.Length == 2; return false; } return true; } return false; } private static long CombineHighLowInts(uint high, uint low) { return (long)(((ulong)high << 32) | low); } private static bool HasDirectoryFlag(uint attributes) { return ((FileAttributes)attributes).IsDirectory(); } } }