File: Interop\IComWrapperFixed.cs
Web Access
Project: src\src\VisualStudio\Core\Def\Microsoft.VisualStudio.LanguageServices_pxr0p0dn_wpftmp.csproj (Microsoft.VisualStudio.LanguageServices)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Shell.Interop;
 
namespace Microsoft.VisualStudio.LanguageServices.Implementation.Interop;
 
#pragma warning disable RS0030 // Do not used banned APIs
/// <inheritdoc cref="IComWrapper"/>
#pragma warning restore RS0030 // Do not used banned APIs
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("CBD71F2C-6BC5-4932-B851-B93EB3151386")]
internal interface IComWrapperFixed
{
    /// <inheritdoc cref="IComWrapper.GCHandlePtr"/>
    /// <returns>An <see cref="IntPtr"/> which can be passed to <see cref="GCHandle.FromIntPtr(IntPtr)"/> to obtain
    /// a handle to the managed object.</returns>
    /// <remarks>
    /// The original native interface defined this as
    /// <see href="https://docs.microsoft.com/en-us/windows/win32/winprog64/avoiding-polymorphism"><c>INT_PTR</c></see>
    /// when it was actually being implemented as <see cref="IntPtr"/> for callers within the current process. This
    /// definition more faithfully reflects the original code.
    /// </remarks>
    [ComAliasName("VsShell.INT_PTR")]
    IntPtr GCHandlePtr { get; }
}