Advertisement
RamireDu06

Untitled

Aug 27th, 2019
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.40 KB | None | 0 0
  1. using System.Text;
  2. using System.Runtime.InteropServices;
  3. using RGiesecke.DllExport;
  4.  
  5. class MyExtension {
  6.  
  7. #if WIN64
  8.         [DllExport("RVExtensionVersion", CallingConvention = CallingConvention.Winapi)]
  9. #else
  10.         [DllExport("_RVExtensionVersion@8", CallingConvention = CallingConvention.Winapi)]
  11. #endif
  12.         public static void RvExtensionVersion(StringBuilder output, int outputSize)
  13.         {
  14.             output.Append("Test-Extension v1.0");
  15.         }
  16.  
  17. #if WIN64
  18.         [DllExport("RVExtension", CallingConvention = CallingConvention.Winapi)]
  19. #else
  20.         [DllExport("_RVExtension@12", CallingConvention = CallingConvention.Winapi)]
  21. #endif
  22.         public static void RvExtension(StringBuilder output, int outputSize,
  23.             [MarshalAs(UnmanagedType.LPStr)] string function)
  24.         {
  25.             output.Append(function);
  26.         }
  27.  
  28. #if WIN64
  29.         [DllExport("RVExtensionArgs", CallingConvention = CallingConvention.Winapi)]
  30. #else
  31.         [DllExport("_RVExtensionArgs@20", CallingConvention = CallingConvention.Winapi)]
  32. #endif
  33.         public static int RvExtensionArgs(StringBuilder output, int outputSize,
  34.             [MarshalAs(UnmanagedType.LPStr)] string function,
  35.             [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr, SizeParamIndex = 4)] string[] args, int argCount)
  36.         {
  37.             foreach(var arg in args)
  38.             {
  39.                 output.Append(arg);
  40.             }
  41.             return 0;
  42.         }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement