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);