diff --git a/src/Files.App.CsWin32/Windows.Win32.ComHeapPtr.cs b/src/Files.App.CsWin32/Windows.Win32.ComHeapPtr.cs index 14f248ee7ff5..bac9ce4c808f 100644 --- a/src/Files.App.CsWin32/Windows.Win32.ComHeapPtr.cs +++ b/src/Files.App.CsWin32/Windows.Win32.ComHeapPtr.cs @@ -16,7 +16,7 @@ public unsafe struct ComHeapPtr : IDisposable where T : unmanaged private T* _ptr; public bool IsNull - => _ptr == default; + => _ptr == null; public ComHeapPtr(T* ptr) { diff --git a/src/Files.App.CsWin32/Windows.Win32.ComPtr.cs b/src/Files.App.CsWin32/Windows.Win32.ComPtr.cs index d3896fc8fa4e..a2617f282cff 100644 --- a/src/Files.App.CsWin32/Windows.Win32.ComPtr.cs +++ b/src/Files.App.CsWin32/Windows.Win32.ComPtr.cs @@ -16,7 +16,7 @@ public unsafe struct ComPtr : IDisposable where T : unmanaged private T* _ptr; public bool IsNull - => _ptr == default; + => _ptr == null; public ComPtr(T* ptr) { @@ -38,6 +38,14 @@ public ComPtr(T* ptr) return (T**)Unsafe.AsPointer(ref Unsafe.AsRef(in this)); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly ComPtr As(Guid riid) where U : unmanaged + { + ComPtr pNewPtr = default; + ((IUnknown*)_ptr)->QueryInterface(&riid, (void**)pNewPtr.GetAddressOf()); + return pNewPtr; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Dispose() {