public static string GetFullPath(string path) { path = ZlpIOHelper.CheckAddLongPathPrefix(path); // -- // Determine length. var sb = new StringBuilder(); var realLength = PInvokeHelper.GetFullPathName(path, 0, sb, IntPtr.Zero); // -- sb.Length = realLength; realLength = PInvokeHelper.GetFullPathName(path, sb.Length, sb, IntPtr.Zero); if (realLength <= 0) { var lastWin32Error = Marshal.GetLastWin32Error(); throw new Win32Exception( lastWin32Error, $"Error {lastWin32Error} getting full path for '{path}': {ZlpIOHelper.CheckAddDotEnd(new Win32Exception(lastWin32Error).Message)}"); } else { return(sb.ToString()); } }