From e8b4ad952b78eea0bfe277218cd1973f97b77933 Mon Sep 17 00:00:00 2001 From: David Hall Date: Wed, 23 Oct 2019 19:21:06 -0600 Subject: [PATCH] Updated internal class to adhere to new IFileSystemBindData2 definition --- PInvoke/Shell32/ShObjIdl.ShellUtil.cs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/PInvoke/Shell32/ShObjIdl.ShellUtil.cs b/PInvoke/Shell32/ShObjIdl.ShellUtil.cs index 280cb5fb..32d4a57c 100644 --- a/PInvoke/Shell32/ShObjIdl.ShellUtil.cs +++ b/PInvoke/Shell32/ShObjIdl.ShellUtil.cs @@ -84,7 +84,7 @@ namespace Vanara.PInvoke if (hr == 0x80070002) { Ole32.CreateBindCtx(0, out var ibc).ThrowIfFailed(); - using (var _ibc = new InteropServices.ComReleaser(ibc)) + using (var _ibc = InteropServices.ComReleaserFactory.Create(ibc)) { var bd = new IntFileSysBindData(); ibc.RegisterObjectParam(STR_FILE_SYS_BIND_DATA, bd); @@ -131,18 +131,26 @@ namespace Vanara.PInvoke { } - public long GetFileID() => fileId; + public HRESULT GetFileID(out long pliFileID) { pliFileID = fileId; return HRESULT.S_OK; } - public void GetFindData(out WIN32_FIND_DATA pfd) => pfd = fd; + public HRESULT GetFindData(out WIN32_FIND_DATA pfd) { pfd = fd; return HRESULT.S_OK; } - [return: MarshalAs(UnmanagedType.LPStruct)] - public Guid GetJunctionCLSID() => clsidJunction != CLSID_UnknownJunction ? clsidJunction : throw new COMException("Unable to handle junctions", unchecked((int)HRESULT.E_FAIL)); + public HRESULT GetJunctionCLSID(out Guid pclsid) + { + if (clsidJunction != CLSID_UnknownJunction) + { + pclsid = clsidJunction; + return HRESULT.S_OK; + } + pclsid = Guid.Empty; + return HRESULT.E_FAIL; + } - public void SetFileID(long liFileID) => fileId = liFileID; + public HRESULT SetFileID(long liFileID) { fileId = liFileID; return HRESULT.S_OK; } - public void SetFindData(in WIN32_FIND_DATA pfd) => fd = pfd; + public HRESULT SetFindData(in WIN32_FIND_DATA pfd) { fd = pfd; return HRESULT.S_OK; } - public void SetJunctionCLSID(in Guid clsid) => clsidJunction = clsid; + public HRESULT SetJunctionCLSID(in Guid clsid) { clsidJunction = clsid; return HRESULT.S_OK; } } } }