Initial commit: Complete open-source Decal rebuild

All 5 phases of the open-source Decal rebuild:

Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil)
Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs
  - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters
  - Decal.Core, DecalControls, DecalRender, D3DService
Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL
Phase 4: DenAgent WinForms tray application
Phase 5: WiX installer and build script

25 C# projects building with 0 errors.
Native C++ projects require VS 2022 + Windows SDK (x86).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
erik 2026-02-08 18:27:56 +01:00
commit d1442e3747
1382 changed files with 170725 additions and 0 deletions

View file

@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AssemblyName>Decal.Interop.Net</AssemblyName>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Decal.Interop.Core\Decal.Interop.Core.csproj" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,75 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[TypeLibType(4160)]
[Guid("23EE0804-EAC7-493B-BB9D-2298FD44FFA1")]
[SuppressUnmanagedCodeSecurity]
public interface IMessage
{
[DispId(1610743808)]
int Type
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743808)]
get;
}
[DispId(1610743809)]
byte[] RawData
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743809)]
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UI1)]
get;
}
[DispId(1610743810)]
object Value
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743810)]
[TypeLibFunc(256)]
[return: MarshalAs(UnmanagedType.Struct)]
get;
}
[DispId(1610743811)]
IMessageMember Struct
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743811)]
[TypeLibFunc(256)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610743812)]
byte[] RawValue
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743812)]
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UI1)]
get;
}
[DispId(1610743813)]
string FieldName
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743813)]
[return: MarshalAs(UnmanagedType.BStr)]
get;
}
[DispId(1610743814)]
int Count
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743814)]
get;
}
}

View file

@ -0,0 +1,84 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[TypeLibType(4160)]
[Guid("38AFE740-9189-4F7C-8DE2-E61087DD9F19")]
[SuppressUnmanagedCodeSecurity]
public interface IMessage2 : IMessage
{
[DispId(1610743808)]
new int Type
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743808)]
get;
}
[DispId(1610743809)]
new byte[] RawData
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743809)]
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UI1)]
get;
}
[DispId(1610743810)]
new object Value
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743810)]
[TypeLibFunc(256)]
[return: MarshalAs(UnmanagedType.Struct)]
get;
}
[DispId(1610743811)]
new IMessageMember Struct
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[TypeLibFunc(256)]
[DispId(1610743811)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610743812)]
new byte[] RawValue
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743812)]
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UI1)]
get;
}
[DispId(1610743813)]
new string FieldName
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743813)]
[return: MarshalAs(UnmanagedType.BStr)]
get;
}
[DispId(1610743814)]
new int Count
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743814)]
get;
}
[DispId(1610809344)]
MessageRoot Begin
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610809344)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
}

View file

@ -0,0 +1,17 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[TypeLibType(4160)]
[SuppressUnmanagedCodeSecurity]
[Guid("2D030423-5D22-4100-8C3A-6BF721C4DE50")]
public interface IMessageFactory
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743808)]
[return: MarshalAs(UnmanagedType.Interface)]
IMessage2 CreateMessage(int pData, int size, bool outgoing);
}

View file

@ -0,0 +1,111 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[SuppressUnmanagedCodeSecurity]
[Guid("853BFE61-6C14-4244-8B96-96F0C9647DE6")]
[TypeLibType(4160)]
public interface IMessageIterator
{
[DispId(1610743808)]
object Next
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743808)]
[return: MarshalAs(UnmanagedType.Struct)]
get;
}
[DispId(1610743809)]
object Current
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743809)]
[return: MarshalAs(UnmanagedType.Struct)]
get;
}
[DispId(1610743810)]
string FieldName
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743810)]
[return: MarshalAs(UnmanagedType.BStr)]
get;
}
[DispId(1610743811)]
int Index
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743811)]
get;
}
[DispId(1610743812)]
string NextString
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743812)]
[return: MarshalAs(UnmanagedType.BStr)]
get;
}
[DispId(1610743813)]
int NextInt
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743813)]
get;
}
[DispId(1610743814)]
double NextFloat
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743814)]
get;
}
[DispId(1610743815)]
MessageRoot NextObject
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743815)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610743816)]
MessageRoot NextObjectIndex
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743816)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610743817)]
IMessage Message
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743817)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743818)]
void Reset();
[DispId(1610743819)]
ulong NextQWord
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743819)]
get;
}
}

View file

@ -0,0 +1,74 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[SuppressUnmanagedCodeSecurity]
[TypeLibType(4160)]
[Guid("05D14E34-0A23-4A9F-95CF-9DB24B3CFB9F")]
public interface IMessageMember
{
[DispId(1610743808)]
object Value
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743808)]
[TypeLibFunc(256)]
[return: MarshalAs(UnmanagedType.Struct)]
get;
}
[DispId(1610743809)]
byte[] RawValue
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743809)]
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UI1)]
get;
}
[DispId(1610743810)]
IMessageMember Struct
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[TypeLibFunc(256)]
[DispId(1610743810)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610743811)]
string FieldName
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743811)]
[return: MarshalAs(UnmanagedType.BStr)]
get;
}
[DispId(1610743812)]
int Count
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743812)]
get;
}
[DispId(1610743813)]
int BeginOffset
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743813)]
get;
}
[DispId(1610743814)]
int EndOffset
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743814)]
get;
}
}

View file

@ -0,0 +1,45 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using Decal.Interop.Core;
namespace Decal.Interop.Net;
[ComImport]
[InterfaceType(1)]
[Guid("AA405035-E001-4CC3-B43A-156206843D64")]
[SuppressUnmanagedCodeSecurity]
public interface INetService
{
[DispId(1610678272)]
DecalCore Decal
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610678273)]
object Filter
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[return: MarshalAs(UnmanagedType.IUnknown)]
get;
}
[DispId(1610678274)]
object FilterVB
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[return: MarshalAs(UnmanagedType.IDispatch)]
get;
}
[DispId(1610678275)]
ACHooks Hooks
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
}

View file

@ -0,0 +1,16 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[TypeLibType(4160)]
[SuppressUnmanagedCodeSecurity]
[Guid("B04FC03E-504A-4711-AB82-6258149AB8E9")]
public interface INetworkFilter
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1)]
void Dispatch([MarshalAs(UnmanagedType.Interface)] IMessage Message);
}

View file

@ -0,0 +1,24 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[Guid("07F65937-387A-4539-8745-5603A2E029B1")]
[SuppressUnmanagedCodeSecurity]
[InterfaceType(1)]
public interface INetworkFilter2
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
void DispatchServer([MarshalAs(UnmanagedType.Interface)] IMessage2 Message);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
void DispatchClient([MarshalAs(UnmanagedType.Interface)] IMessage2 Message);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
void Initialize([MarshalAs(UnmanagedType.Interface)] NetService pService);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
void Terminate();
}

View file

@ -0,0 +1,20 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[Guid("03F3E2D0-7026-4C11-988A-4B3C58C71917")]
[TypeLibType(4160)]
[SuppressUnmanagedCodeSecurity]
public interface IWebRequest
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743808)]
void Get([MarshalAs(UnmanagedType.BStr)] string strURL);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743809)]
void Post([MarshalAs(UnmanagedType.BStr)] string strURL, [MarshalAs(UnmanagedType.BStr)] string strPostData);
}

View file

@ -0,0 +1,21 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[Guid("EEFA38DC-15B2-4232-B5BE-5A9ECB8E1A58")]
[InterfaceType(2)]
[SuppressUnmanagedCodeSecurity]
[TypeLibType(4096)]
public interface IWebRequestEvents
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1)]
void Begin();
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(2)]
void End(int nResultCode, [MarshalAs(UnmanagedType.BStr)] string strText);
}

View file

@ -0,0 +1,6 @@
using System.Runtime.InteropServices;
namespace Decal.Interop.Net;
[ComVisible(false)]
public delegate void IWebRequestEvents_BeginEventHandler();

View file

@ -0,0 +1,6 @@
using System.Runtime.InteropServices;
namespace Decal.Interop.Net;
[ComVisible(false)]
public delegate void IWebRequestEvents_EndEventHandler(int nResultCode, [MarshalAs(UnmanagedType.BStr)] string strText);

View file

@ -0,0 +1,12 @@
using System.Runtime.InteropServices;
namespace Decal.Interop.Net;
[ComVisible(false)]
[TypeLibType(16)]
public interface IWebRequestEvents_Event
{
event IWebRequestEvents_BeginEventHandler Begin;
event IWebRequestEvents_EndEventHandler End;
}

View file

@ -0,0 +1,230 @@
using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Threading;
namespace Decal.Interop.Net;
internal sealed class IWebRequestEvents_EventProvider : IWebRequestEvents_Event, IDisposable
{
private IConnectionPointContainer m_ConnectionPointContainer;
private ArrayList m_aEventSinkHelpers;
private IConnectionPoint m_ConnectionPoint;
private void Init()
{
IConnectionPoint ppCP = null;
Guid riid = new Guid(new byte[16]
{
220, 56, 250, 238, 178, 21, 50, 66, 181, 190,
90, 158, 203, 142, 26, 88
});
m_ConnectionPointContainer.FindConnectionPoint(ref riid, out ppCP);
m_ConnectionPoint = ppCP;
m_aEventSinkHelpers = new ArrayList();
}
event IWebRequestEvents_BeginEventHandler IWebRequestEvents_Event.Begin
{
add
{
bool lockTaken = default(bool);
try
{
Monitor.Enter(this, ref lockTaken);
if (m_ConnectionPoint == null)
{
Init();
}
IWebRequestEvents_SinkHelper webRequestEvents_SinkHelper = new IWebRequestEvents_SinkHelper();
int pdwCookie = 0;
m_ConnectionPoint.Advise(webRequestEvents_SinkHelper, out pdwCookie);
webRequestEvents_SinkHelper.m_dwCookie = pdwCookie;
webRequestEvents_SinkHelper.m_BeginDelegate = value;
m_aEventSinkHelpers.Add(webRequestEvents_SinkHelper);
}
finally
{
if (lockTaken)
{
Monitor.Exit(this);
}
}
}
remove
{
bool lockTaken = default(bool);
try
{
Monitor.Enter(this, ref lockTaken);
if (m_aEventSinkHelpers == null)
{
return;
}
int count = m_aEventSinkHelpers.Count;
int num = 0;
if (0 >= count)
{
return;
}
do
{
IWebRequestEvents_SinkHelper webRequestEvents_SinkHelper = (IWebRequestEvents_SinkHelper)m_aEventSinkHelpers[num];
if (webRequestEvents_SinkHelper.m_BeginDelegate != null && ((webRequestEvents_SinkHelper.m_BeginDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0)
{
m_aEventSinkHelpers.RemoveAt(num);
m_ConnectionPoint.Unadvise(webRequestEvents_SinkHelper.m_dwCookie);
if (count <= 1)
{
Marshal.ReleaseComObject(m_ConnectionPoint);
m_ConnectionPoint = null;
m_aEventSinkHelpers = null;
}
break;
}
num++;
}
while (num < count);
}
finally
{
if (lockTaken)
{
Monitor.Exit(this);
}
}
}
}
event IWebRequestEvents_EndEventHandler IWebRequestEvents_Event.End
{
add
{
bool lockTaken = default(bool);
try
{
Monitor.Enter(this, ref lockTaken);
if (m_ConnectionPoint == null)
{
Init();
}
IWebRequestEvents_SinkHelper webRequestEvents_SinkHelper = new IWebRequestEvents_SinkHelper();
int pdwCookie = 0;
m_ConnectionPoint.Advise(webRequestEvents_SinkHelper, out pdwCookie);
webRequestEvents_SinkHelper.m_dwCookie = pdwCookie;
webRequestEvents_SinkHelper.m_EndDelegate = value;
m_aEventSinkHelpers.Add(webRequestEvents_SinkHelper);
}
finally
{
if (lockTaken)
{
Monitor.Exit(this);
}
}
}
remove
{
bool lockTaken = default(bool);
try
{
Monitor.Enter(this, ref lockTaken);
if (m_aEventSinkHelpers == null)
{
return;
}
int count = m_aEventSinkHelpers.Count;
int num = 0;
if (0 >= count)
{
return;
}
do
{
IWebRequestEvents_SinkHelper webRequestEvents_SinkHelper = (IWebRequestEvents_SinkHelper)m_aEventSinkHelpers[num];
if (webRequestEvents_SinkHelper.m_EndDelegate != null && ((webRequestEvents_SinkHelper.m_EndDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0)
{
m_aEventSinkHelpers.RemoveAt(num);
m_ConnectionPoint.Unadvise(webRequestEvents_SinkHelper.m_dwCookie);
if (count <= 1)
{
Marshal.ReleaseComObject(m_ConnectionPoint);
m_ConnectionPoint = null;
m_aEventSinkHelpers = null;
}
break;
}
num++;
}
while (num < count);
}
finally
{
if (lockTaken)
{
Monitor.Exit(this);
}
}
}
}
public IWebRequestEvents_EventProvider(object P_0)
{
//Error decoding local variables: Signature type sequence must have at least one element.
m_ConnectionPointContainer = (IConnectionPointContainer)P_0;
}
public void Finalize()
{
bool lockTaken = default(bool);
try
{
Monitor.Enter(this, ref lockTaken);
if (m_ConnectionPoint == null)
{
return;
}
int count = m_aEventSinkHelpers.Count;
int num = 0;
if (0 < count)
{
do
{
IWebRequestEvents_SinkHelper webRequestEvents_SinkHelper = (IWebRequestEvents_SinkHelper)m_aEventSinkHelpers[num];
m_ConnectionPoint.Unadvise(webRequestEvents_SinkHelper.m_dwCookie);
num++;
}
while (num < count);
}
Marshal.ReleaseComObject(m_ConnectionPoint);
}
catch (Exception)
{
}
finally
{
if (lockTaken)
{
Monitor.Exit(this);
}
}
}
public void Dispose()
{
//Error decoding local variables: Signature type sequence must have at least one element.
Finalize();
GC.SuppressFinalize(this);
}
}

View file

@ -0,0 +1,40 @@
using System.Runtime.InteropServices;
namespace Decal.Interop.Net;
[TypeLibType(TypeLibTypeFlags.FHidden)]
[ClassInterface(ClassInterfaceType.None)]
public sealed class IWebRequestEvents_SinkHelper : IWebRequestEvents
{
public IWebRequestEvents_BeginEventHandler m_BeginDelegate;
public IWebRequestEvents_EndEventHandler m_EndDelegate;
public int m_dwCookie;
public void Begin()
{
//Error decoding local variables: Signature type sequence must have at least one element.
if (m_BeginDelegate != null)
{
m_BeginDelegate();
}
}
public void End(int P_0, string P_1)
{
//Error decoding local variables: Signature type sequence must have at least one element.
if (m_EndDelegate != null)
{
m_EndDelegate(P_0, P_1);
}
}
internal IWebRequestEvents_SinkHelper()
{
//Error decoding local variables: Signature type sequence must have at least one element.
m_dwCookie = 0;
m_BeginDelegate = null;
m_EndDelegate = null;
}
}

View file

@ -0,0 +1,10 @@
using System.Runtime.InteropServices;
namespace Decal.Interop.Net;
[ComImport]
[CoClass(typeof(MessageRootClass))]
[Guid("853BFE61-6C14-4244-8B96-96F0C9647DE6")]
public interface MessageRoot : IMessageIterator
{
}

View file

@ -0,0 +1,111 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[SuppressUnmanagedCodeSecurity]
[ClassInterface(ClassInterfaceType.None)]
[Guid("7A85E352-B133-4AB5-A9DA-85978005BF88")]
public class MessageRootClass : IMessageIterator, MessageRoot
{
[DispId(1610743808)]
public virtual extern object Next
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743808)]
[return: MarshalAs(UnmanagedType.Struct)]
get;
}
[DispId(1610743809)]
public virtual extern object Current
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743809)]
[return: MarshalAs(UnmanagedType.Struct)]
get;
}
[DispId(1610743810)]
public virtual extern string FieldName
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743810)]
[return: MarshalAs(UnmanagedType.BStr)]
get;
}
[DispId(1610743811)]
public virtual extern int Index
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743811)]
get;
}
[DispId(1610743812)]
public virtual extern string NextString
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743812)]
[return: MarshalAs(UnmanagedType.BStr)]
get;
}
[DispId(1610743813)]
public virtual extern int NextInt
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743813)]
get;
}
[DispId(1610743814)]
public virtual extern double NextFloat
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743814)]
get;
}
[DispId(1610743815)]
public virtual extern MessageRoot NextObject
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743815)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610743816)]
public virtual extern MessageRoot NextObjectIndex
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743816)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610743817)]
public virtual extern IMessage Message
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743817)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610743819)]
public virtual extern ulong NextQWord
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743819)]
get;
}
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743818)]
public virtual extern void Reset();
}

View file

@ -0,0 +1,10 @@
using System.Runtime.InteropServices;
namespace Decal.Interop.Net;
[ComImport]
[Guid("AA405035-E001-4CC3-B43A-156206843D64")]
[CoClass(typeof(NetServiceClass))]
public interface NetService : INetService
{
}

View file

@ -0,0 +1,46 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using Decal.Interop.Core;
namespace Decal.Interop.Net;
[ComImport]
[Guid("C8C406F8-BA2E-4964-8B04-FF38394A8E0E")]
[TypeLibType(2)]
[SuppressUnmanagedCodeSecurity]
[ClassInterface(ClassInterfaceType.None)]
public class NetServiceClass : INetService, NetService
{
[DispId(1610678272)]
public virtual extern DecalCore Decal
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
[DispId(1610678273)]
public virtual extern object Filter
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[return: MarshalAs(UnmanagedType.IUnknown)]
get;
}
[DispId(1610678274)]
public virtual extern object FilterVB
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[return: MarshalAs(UnmanagedType.IDispatch)]
get;
}
[DispId(1610678275)]
public virtual extern ACHooks Hooks
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[return: MarshalAs(UnmanagedType.Interface)]
get;
}
}

View file

@ -0,0 +1,10 @@
using System.Runtime.InteropServices;
namespace Decal.Interop.Net;
[ComImport]
[Guid("03F3E2D0-7026-4C11-988A-4B3C58C71917")]
[CoClass(typeof(WebRequestClass))]
public interface WebRequest : IWebRequest, IWebRequestEvents_Event
{
}

View file

@ -0,0 +1,26 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
namespace Decal.Interop.Net;
[ComImport]
[TypeLibType(2)]
[SuppressUnmanagedCodeSecurity]
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces("Decal.Interop.Net.IWebRequestEvents\0\0")]
[Guid("15631E36-55CB-4D16-ADE7-74D9F8A5F4B6")]
public class WebRequestClass : IWebRequest, WebRequest, IWebRequestEvents_Event
{
public virtual extern event IWebRequestEvents_BeginEventHandler Begin;
public virtual extern event IWebRequestEvents_EndEventHandler End;
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743808)]
public virtual extern void Get([MarshalAs(UnmanagedType.BStr)] string strURL);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[DispId(1610743809)]
public virtual extern void Post([MarshalAs(UnmanagedType.BStr)] string strURL, [MarshalAs(UnmanagedType.BStr)] string strPostData);
}

View file

@ -0,0 +1,10 @@
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security;
[assembly: ImportedFromTypeLib("DecalNet")]
[assembly: SecurityRules(SecurityRuleSet.Level2)]
[assembly: Guid("572b87c4-93bd-46b3-a291-cd58181d25dc")]
[assembly: TypeLibVersion(2, 0)]
[assembly: PrimaryInteropAssembly(2, 0)]
[assembly: AssemblyVersion("2.9.8.3")]