This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
+189
View File
@@ -0,0 +1,189 @@
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Mono.Interop;
namespace System
{
// Token: 0x020006C3 RID: 1731
internal class __ComObject : MarshalByRefObject
{
// Token: 0x06004184 RID: 16772 RVA: 0x000DE718 File Offset: 0x000DC918
public __ComObject()
{
this.Initialize(base.GetType());
}
// Token: 0x06004185 RID: 16773 RVA: 0x000DE72C File Offset: 0x000DC92C
internal __ComObject(Type t)
{
this.Initialize(t);
}
// Token: 0x06004186 RID: 16774 RVA: 0x000DE73C File Offset: 0x000DC93C
internal __ComObject(IntPtr pItf)
{
Guid iid_IUnknown = __ComObject.IID_IUnknown;
int num = Marshal.QueryInterface(pItf, ref iid_IUnknown, out this.iunknown);
Marshal.ThrowExceptionForHR(num);
}
// Token: 0x06004187 RID: 16775
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern __ComObject CreateRCW(Type t);
// Token: 0x06004188 RID: 16776
[MethodImpl(MethodImplOptions.InternalCall)]
private extern void ReleaseInterfaces();
// Token: 0x06004189 RID: 16777 RVA: 0x000DE76C File Offset: 0x000DC96C
~__ComObject()
{
this.ReleaseInterfaces();
}
// Token: 0x0600418A RID: 16778 RVA: 0x000DE7A8 File Offset: 0x000DC9A8
internal void Initialize(Type t)
{
if (this.iunknown != IntPtr.Zero)
{
return;
}
ObjectCreationDelegate objectCreationCallback = ExtensibleClassFactory.GetObjectCreationCallback(t);
if (objectCreationCallback != null)
{
this.iunknown = objectCreationCallback(IntPtr.Zero);
if (this.iunknown == IntPtr.Zero)
{
throw new COMException(string.Format("ObjectCreationDelegate for type {0} failed to return a valid COM object", t));
}
}
else
{
int num = __ComObject.CoCreateInstance(__ComObject.GetCLSID(t), IntPtr.Zero, 21U, __ComObject.IID_IUnknown, out this.iunknown);
Marshal.ThrowExceptionForHR(num);
}
}
// Token: 0x0600418B RID: 16779 RVA: 0x000DE838 File Offset: 0x000DCA38
private static Guid GetCLSID(Type t)
{
if (t.IsImport)
{
return t.GUID;
}
for (Type type = t.BaseType; type != typeof(object); type = type.BaseType)
{
if (type.IsImport)
{
return type.GUID;
}
}
throw new COMException("Could not find base COM type for type " + t.ToString());
}
// Token: 0x0600418C RID: 16780
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern IntPtr GetInterfaceInternal(Type t, bool throwException);
// Token: 0x0600418D RID: 16781 RVA: 0x000DE8A4 File Offset: 0x000DCAA4
internal IntPtr GetInterface(Type t, bool throwException)
{
this.CheckIUnknown();
return this.GetInterfaceInternal(t, throwException);
}
// Token: 0x0600418E RID: 16782 RVA: 0x000DE8B4 File Offset: 0x000DCAB4
internal IntPtr GetInterface(Type t)
{
return this.GetInterface(t, true);
}
// Token: 0x0600418F RID: 16783 RVA: 0x000DE8C0 File Offset: 0x000DCAC0
private void CheckIUnknown()
{
if (this.iunknown == IntPtr.Zero)
{
throw new InvalidComObjectException("COM object that has been separated from its underlying RCW cannot be used.");
}
}
// Token: 0x17000C13 RID: 3091
// (get) Token: 0x06004190 RID: 16784 RVA: 0x000DE8F0 File Offset: 0x000DCAF0
internal IntPtr IUnknown
{
get
{
if (this.iunknown == IntPtr.Zero)
{
throw new InvalidComObjectException("COM object that has been separated from its underlying RCW cannot be used.");
}
return this.iunknown;
}
}
// Token: 0x17000C14 RID: 3092
// (get) Token: 0x06004191 RID: 16785 RVA: 0x000DE924 File Offset: 0x000DCB24
internal IntPtr IDispatch
{
get
{
IntPtr @interface = this.GetInterface(typeof(IDispatch));
if (@interface == IntPtr.Zero)
{
throw new InvalidComObjectException("COM object that has been separated from its underlying RCW cannot be used.");
}
return @interface;
}
}
// Token: 0x17000C15 RID: 3093
// (get) Token: 0x06004192 RID: 16786 RVA: 0x000DE960 File Offset: 0x000DCB60
internal static Guid IID_IUnknown
{
get
{
return new Guid("00000000-0000-0000-C000-000000000046");
}
}
// Token: 0x17000C16 RID: 3094
// (get) Token: 0x06004193 RID: 16787 RVA: 0x000DE96C File Offset: 0x000DCB6C
internal static Guid IID_IDispatch
{
get
{
return new Guid("00020400-0000-0000-C000-000000000046");
}
}
// Token: 0x06004194 RID: 16788 RVA: 0x000DE978 File Offset: 0x000DCB78
public override bool Equals(object obj)
{
this.CheckIUnknown();
if (obj == null)
{
return false;
}
__ComObject _ComObject = obj as __ComObject;
return _ComObject != null && this.iunknown == _ComObject.IUnknown;
}
// Token: 0x06004195 RID: 16789 RVA: 0x000DE9B4 File Offset: 0x000DCBB4
public override int GetHashCode()
{
this.CheckIUnknown();
return this.iunknown.ToInt32();
}
// Token: 0x06004196 RID: 16790
[DllImport("ole32.dll", CallingConvention = CallingConvention.StdCall, ExactSpelling = true)]
private static extern int CoCreateInstance([MarshalAs(UnmanagedType.LPStruct)] [In] Guid rclsid, IntPtr pUnkOuter, uint dwClsContext, [MarshalAs(UnmanagedType.LPStruct)] [In] Guid riid, out IntPtr pUnk);
// Token: 0x04001A42 RID: 6722
private IntPtr iunknown;
// Token: 0x04001A43 RID: 6723
private IntPtr hash_table;
}
}