|
- using System;
- using System.Runtime.InteropServices;
-
- namespace Dbcc
- {
- /// <summary>
- /// Imported symbols for interop with dbcc.dll/so.
- /// </summary>
- internal class NativeInterop
- {
- // This shouldn't be needed, even on Windows
- // /// <summary>
- // /// Taken from: http://stackoverflow.com/questions/10852634/using-a-32bit-or-64bit-dll-in-c-sharp-dllimport
- // /// </summary>
- // static NativeInterop()
- // {
- // var myPath = new Uri(typeof(NativeInterop).Assembly.CodeBase).LocalPath;
- // var myFolder = Path.GetDirectoryName(myPath);
-
- // var is64 = IntPtr.Size == 8;
- // var subfolder = is64 ? "\\win64\\" : "\\win32\\";
-
- // string dllPosition = myFolder + subfolder + "keystone.dll";
-
- // // If this file exist, load it.
- // // Otherwise let the marshaller load the appropriate file.
- // if (File.Exists(dllPosition))
- // LoadLibrary(dllPosition);
- // }
-
- // [DllImport("dbcc.dll")]
- // private static extern IntPtr LoadLibrary(string dllToLoad);
-
- [DllImport("dbcc", CallingConvention = CallingConvention.Cdecl, EntryPoint = "version" )]
- internal static extern uint Version(ref uint major, ref uint minor);
-
- [DllImport("dbcc", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SignalProcessor_new")]
- internal static extern uint Create(ref IntPtr h, [MarshalAs(UnmanagedType.LPStr)] string filePath);
-
- [DllImport("dbcc", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SignalProcessor_delete")]
- internal static extern void Dispose(IntPtr h);
-
- [DllImport("dbcc", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SignalProcessor_encode")]
- internal static extern int Encode(IntPtr h,
- double pvs,
- [MarshalAs(UnmanagedType.LPArray)] ref byte[] data, uint length);
-
- [DllImport("dbcc", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SignalProcessor_decode")]
- bool Decode(IntPtr h, uint msgId, [MarshalAs(UnmanagedType.LPArray)] byte[] data, uint length);
- }
- }
|