private List <ShellFileSystemFolder> GetFolders() { List <ShellFileSystemFolder> list = new List <ShellFileSystemFolder>(); Guid shellItemArrayGuid = new Guid(ShellIIDGuid.IShellItemArray); HResult hr = nativeShellLibrary.GetFolders(ShellNativeMethods.LibraryFolderFilter.AllItems, ref shellItemArrayGuid, out var itemArray); if (!CoreErrorHelper.Succeeded(hr)) { return(list); } itemArray.GetCount(out var count); for (uint i = 0; i < count; ++i) { itemArray.GetItemAt(i, out var shellItem); list.Add(new ShellFileSystemFolder(shellItem as IShellItem2)); } if (itemArray != null) { Marshal.ReleaseComObject(itemArray); itemArray = null; } return(list); }
private List <ShellFileSystemFolder> GetFolders() { List <ShellFileSystemFolder> list = new List <ShellFileSystemFolder>(); IShellItemArray itemArray; Guid shellItemArrayGuid = new Guid(ShellIIDGuid.IShellItemArray); HRESULT hr = nativeShellLibrary.GetFolders(ShellNativeMethods.LIBRARYFOLDERFILTER.LFF_ALLITEMS, ref shellItemArrayGuid, out itemArray); if (!CoreErrorHelper.Succeeded((int)hr)) { return(list); } uint count; itemArray.GetCount(out count); for (uint i = 0; i < count; ++i) { IShellItem shellItem; itemArray.GetItemAt(i, out shellItem); list.Add(new ShellFileSystemFolder(shellItem as IShellItem2)); } if (itemArray != null) { Marshal.ReleaseComObject(itemArray); itemArray = null; } return(list); }