指针的接入有两种方式,
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);
}}