指標的接入有兩種方式,
1.C#中的參考型別
2.C#中的指標實現
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;/// <summary> /// 離線UK操作類 /// </summary> public unsafe class UK { //參考型別變數實現 [DllImport("UK")] extern static int UniKey_Find(ref uint handle, ref uint s1, ref uint s2); [DllImport("UK")] extern static int UniKey_Logoff(ref uint handle); //[DllImport("UK")] //extern static int UniKey_Log_On_Secu(ref uint handle, ref char[] password); [DllImport("UK")] extern static int UniKey_Log_On_Secu(ref uint handle, char[] password); [DllImport("UK")] extern static int UniKey_Log_Out_Secu(ref uint handle); [DllImport("UK")] extern static int UniKey_Get_Com_PanFu(ref uint handdle, ref char pDriveName); //指標地址實現(不過要設定程式屬性允許不安全的程式碼) [DllImport("UK")] extern static int UniKey_Find(uint* handle, uint* s1, uint* s2); [DllImport("UK")] extern static int UniKey_Logoff(uint* handle); [DllImport("UK")] extern static int UniKey_Log_On_Secu(uint* handle, uint* password); [DllImport("UK")] extern static int UniKey_Log_Out_Secu(uint* handle); [DllImport("UK")] extern static int UniKey_Get_Com_PanFu(uint* handdle, char* pDriveName); /// <summary> /// 尋找UKey /// </summary> /// <returns></returns> protected static int UKeyFind() { uint handle = 0; uint s1 = 0; uint s2 = 0; int result = UniKey_Find(ref handle, ref s1, ref s2); return result; } /// <summary> /// 退出Ukey /// </summary> /// <param name="handle"></param> /// <returns></returns> protected static int UKeyLogoff() { uint handle = 0; return UniKey_Logoff(ref handle); } /// <summary> /// 登陸Ukey /// </summary> /// <returns></returns> protected static int UKeyLogOnSecu() { uint handle = 0; char[] password = new char[6] { '1', '2', '3', '4', '5', '6' }; int result = UniKey_Log_On_Secu(ref handle, password); return result; } /// <summary> /// 退出UKey /// </summary> /// <returns></returns> protected static int UKeyLogOutSecu() { uint handle = 0; return UniKey_Log_Out_Secu(ref handle); }}