c# 调用 RAPI 的连接判断

在 c# 中调用 rapi 来完成 windows ce 的文件操作。

详细参见:http://blog.csdn.net/jarvisj/archive/2005/06/05/387902.aspx

详细 api 文档(msdn 英文):http://msdn.microsoft.com/en-us/library/aa458022.aspx

但是如果用 CeRapiInit 来判断链接有一个问题:这个函数的运行过程是开始判断是否连接了设备,如果没有设备,这个进程将一直挂着,直到插上了设备才继续执行,这样就不能马上给出判断,所以可以采用 CeRapiInitEx 函数。

CeRapiInit 和 CeRapiInitEx 的区别:前者是将进程一直挂着,等待设备的插入,而后者是即刻判断。

主要讲解 CeRapiInitEx 的使用:

// 接口声明
[DllImport("rapi.dll")]
public static extern void CeRapiInitEx(ref RAPIINIT pRapiInit);

// 自定义返回类型结构
[StructLayout(LayoutKind.Sequential)]
public struct RAPIINIT
{ public int cbsize;
public IntPtr heRapiInit;
public UInt32 hrRapiInit;
};

// 函数使用
RAPIINIT r = new RAPIINIT();
r.cbsize = Marshal.SizeOf(r);
CeRapiInitEx(ref r);
//r.hrRapiInit==0 判断连接成功