You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

52 lines
1.6 KiB

#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace IPA.AntiMalware.ComAPI
{
[ComImport]
[Guid(AmsiConstants.IAntimalwareGuidStr)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAntimalware
{
void Scan([In] IAmsiStream stream, [Out] out AmsiResult result, [Out] out IAntimalwareProvider provider);
void CloseSession([In] ulong session);
}
[ComImport]
[Guid("3e47f2e5-81d4-4d3b-897f-545096770373")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAmsiStream
{
unsafe void GetAttribute([In] AmsiAttribute attribute, [In] uint dataSize, [Out] byte* buffer, [Out] out uint writtenData);
unsafe void Read([In] ulong position, [In] uint dataSize, [Out] byte* buffer, [Out] out uint readSize);
}
[ComImport]
[Guid("b2cabfe3-fe04-42b1-a5df-08d483d4d125")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAntimalwareProvider
{
[return: MarshalAs(UnmanagedType.LPWStr)] string DisplayName();
AmsiResult Scan([In] IAmsiStream stream);
void CloseSession([In] ulong session);
}
internal enum AmsiAttribute
{
AppName = 0,
ContentName = 1,
ContentSize = 2,
ContentAddress = 3,
Session = 4,
RedirectChainSize = 5,
RedirectChainAddress = 6,
AllSize = 7,
AllAddress = 8,
}
}