using System; using System.Runtime.InteropServices; namespace SARD { public static class SardIntegration { private const string DLL = "armour"; [DllImport(DLL, EntryPoint = "sardInitialize", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)] public static extern int SardInitialize(string armourPath, string sessionId); [DllImport(DLL, EntryPoint = "sardFinalize", CallingConvention = CallingConvention.Cdecl)] public static extern void SardFinalize(); [DllImport(DLL, EntryPoint = "sardSetUserWID", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)] public static extern void SardSetUserId(string userId); [DllImport(DLL, EntryPoint = "sardSetSessionWID", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)] public static extern void SardSetSessionId(string sessionId); [DllImport(DLL, EntryPoint = "sardReloginW", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)] public static extern void SardRelogin(string userId, string sessionId); [DllImport(DLL, EntryPoint = "sardGetSecureSessionID", CallingConvention = CallingConvention.Cdecl)] private static extern IntPtr SardGetSecureSessionIdNative(); public static string GetSecureSessionId() { var ptr = SardGetSecureSessionIdNative(); return ptr == IntPtr.Zero ? null : Marshal.PtrToStringUni(ptr); } } }