public static bool TryFromComObject()

in src/VSSetup.PowerShell/Module.cs [83:108]


        public static bool TryFromComObject(object @object, out Module module)
        {
            if (@object != null)
            {
                var unk = Marshal.GetIUnknownForObject(@object);
                if (unk != IntPtr.Zero)
                {
                    try
                    {
                        var addr = Marshal.ReadIntPtr(unk);
                        if (NativeMethods.GetModuleHandleEx(GetModuleHandleExFlags.FromAddress, addr, out var handle))
                        {
                            module = new Module(handle);
                            return true;
                        }
                    }
                    finally
                    {
                        Marshal.Release(unk);
                    }
                }
            }

            module = null;
            return false;
        }