From 0b95dad4c2292b95a85e96c412b5fa6d2fb84bf6 Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Wed, 22 Jan 2025 15:56:22 -0700 Subject: [PATCH] Fix QueryInterface build break when friendly overloads are turned off Fixes #1332 --- .../templates/IUnknownHelperMethods.cs | 4 +++- test/Microsoft.Windows.CsWin32.Tests/COMTests.cs | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Microsoft.Windows.CsWin32/templates/IUnknownHelperMethods.cs b/src/Microsoft.Windows.CsWin32/templates/IUnknownHelperMethods.cs index 520d0ff1..db6a43bd 100644 --- a/src/Microsoft.Windows.CsWin32/templates/IUnknownHelperMethods.cs +++ b/src/Microsoft.Windows.CsWin32/templates/IUnknownHelperMethods.cs @@ -3,7 +3,9 @@ internal unsafe global::Windows.Win32.Foundation.HRESULT QueryInterface(out T* ppv) where T : unmanaged { - var hr = this.QueryInterface(typeof(T).GUID, out void* pv); + Guid guid = typeof(T).GUID; + void* pv; + var hr = this.QueryInterface(&guid, &pv); if (hr.Succeeded) { ppv = (T*)pv; diff --git a/test/Microsoft.Windows.CsWin32.Tests/COMTests.cs b/test/Microsoft.Windows.CsWin32.Tests/COMTests.cs index bca8d9e2..b12f79d7 100644 --- a/test/Microsoft.Windows.CsWin32.Tests/COMTests.cs +++ b/test/Microsoft.Windows.CsWin32.Tests/COMTests.cs @@ -457,10 +457,10 @@ a is })); } - [Fact] - public void IUnknown_QueryInterfaceGenericHelper() + [Theory, PairwiseData] + public void IUnknown_QueryInterfaceGenericHelper(bool friendlyOverloads) { - this.generator = this.CreateGenerator(new GeneratorOptions { AllowMarshaling = false }); + this.generator = this.CreateGenerator(new GeneratorOptions { AllowMarshaling = false, FriendlyOverloads = new GeneratorOptions.FriendlyOverloadOptions { Enabled = friendlyOverloads } }); this.GenerateApi("IUnknown"); Assert.Contains(this.FindGeneratedMethod("QueryInterface"), m => m.TypeParameterList?.Parameters.Count == 1);