很头痛的问题:C#调用c++的dll时候出现“尝试读取或写入受保护的内存”错误
iaimg 2010-10-11 10:46:08 /*****************************************************************
** 输入参数hDevice: 设备句柄,为Mf_Open_Reader返回值
** 输入参数 data: 指向数据缓存的指针
** 输入参数dataLen: 指示data缓存的长度,字节为单位(注企业信息最大为1920个字节)
** 输入参数 Key: 6字节的读写密钥,此参数为NULL时使用默认密钥"s_rfid"
** 函数返回值: 0 读操作成功
*****************************************************************/
HEATH2ND_API int WINAPI Mf_R_EntInfo(HANDLE hDevice, char *data, long *dataLen, unsigned char *Key);
以上c++给的接口说明,
c#调用如下:
[DllImport("heath2nd.dll")]
private static extern int Mf_R_EntInfo(IntPtr hDevice, ref string data, long dataLen, string Key);
Mf_R_EntInfo(OpenHandel, ref cards, 1920, "s_rfid");
运行这里就报“尝试读取或写入受保护的内存”错误呢,其中data我试了几种类型都不行。
调用如下方法就没问题:
/*****************************************************************
** 输入参数hDevice: 设备句柄,为Mf_Open_Reader返回值
** 输入参数pCardID: 卡片序列号回写值
** 函数返回值: 0 读卡片序列号操作成功
*****************************************************************/
HEATH2ND_API int WINAPI MF_Read_SN(HANDLE hDevice, unsigned long *pCardID);
请高手指教