Skip to content

Commit

Permalink
Fix KnownFolder for x86 Windows (#17705)
Browse files Browse the repository at this point in the history
* Fix KnownFolder for x86 Windows

* Remove try-finally
  • Loading branch information
stevemonaco authored Dec 15, 2024
1 parent 9d03a01 commit 860879a
Showing 1 changed file with 9 additions and 14 deletions.
23 changes: 9 additions & 14 deletions src/Avalonia.Base/Platform/Storage/FileIO/BclStorageProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,29 +150,24 @@ string GetFromSpecialFolder(Environment.SpecialFolder folder) =>

private static unsafe string? TryGetWindowsKnownFolder(Guid guid)
{
nint path = IntPtr.Zero;
char* path = null;
string? result = null;

try
var hr = SHGetKnownFolderPath(&guid, 0, null, &path);
if (hr == 0)
{
var hr = SHGetKnownFolderPath(guid, 0, 0, &path);
if (hr == 0)
{
result = Marshal.PtrToStringUni(path);
}
result = Marshal.PtrToStringUni((IntPtr)path);
}
finally

if (path != null)
{
if (path != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(path);
}
Marshal.FreeCoTaskMem((IntPtr)path);
}

return result;
}

private static readonly Guid s_folderDownloads = new Guid("374DE290-123F-4565-9164-39C4925E467B");
[DllImport("shell32.dll")]
private static unsafe extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid id, int flags, nint token, nint* ppszPath);
[DllImport("shell32.dll", ExactSpelling = true)]
private static unsafe extern int SHGetKnownFolderPath(Guid* rfid, uint dwFlags, void* hToken, char** ppszPath);
}

0 comments on commit 860879a

Please sign in to comment.