AmsiWrapper.cs 1.5 KB

12345678910111213141516171819202122232425
  1. using System;
  2. using System.Runtime.InteropServices;
  3. namespace Masuit.Tools.Win32.AntiVirus;
  4. internal static class AmsiWrapper
  5. {
  6. [DllImport("Amsi.dll", EntryPoint = "AmsiInitialize", CallingConvention = CallingConvention.StdCall)]
  7. public static extern int AmsiInitialize([MarshalAs(UnmanagedType.LPWStr)] string appName, out nint amsiContext);
  8. [DllImport("Amsi.dll", EntryPoint = "AmsiUninitialize", CallingConvention = CallingConvention.StdCall)]
  9. public static extern void AmsiUninitialize(nint amsiContext);
  10. [DllImport("Amsi.dll", EntryPoint = "AmsiOpenSession", CallingConvention = CallingConvention.StdCall)]
  11. public static extern int AmsiOpenSession(nint amsiContext, out nint session);
  12. [DllImport("Amsi.dll", EntryPoint = "AmsiCloseSession", CallingConvention = CallingConvention.StdCall)]
  13. public static extern void AmsiCloseSession(nint amsiContext, nint session);
  14. [DllImport("Amsi.dll", EntryPoint = "AmsiScanBuffer", CallingConvention = CallingConvention.StdCall)]
  15. public static extern int AmsiScanBuffer(nint amsiContext, byte[] buffer, uint length, string contentName, nint session, out AmsiResult result);
  16. [DllImport("Amsi.dll", EntryPoint = "AmsiScanString", CallingConvention = CallingConvention.StdCall)]
  17. public static extern int AmsiScanString(nint amsiContext, [In()][MarshalAs(UnmanagedType.LPWStr)] string @string, [In()][MarshalAs(UnmanagedType.LPWStr)] string contentName, nint session, out AmsiResult result);
  18. }