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