C/C++ 代码,这个是第三方提供的外部方法(调用“华大HD-900身份证阅读器接口函数”):
int HD_Read_BaseInfo(char* pBmpData, char *pName, char *pSex, char *pNation, char *pBirth, char *pAddress, char *pCertNo, char *pDepartment, char *pEffectData, char *pExpire);
我在C#中调用该方法,HD_Read_BaseInfo方法第一次调用正常,第二次调用提示"尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
[DllImport("HDstdapi.dll")]
public static extern int HD_Read_BaseInfo(string pBmpData, string pName, string pSex, string pNation, string pBirth, string pAddress, string pCertNo, string pDepartment, string pEffectData, string pExpire);
附调用代码:
int init_result = 1000;
init_result = HD_InitComm(1001); //初始化连接
if (init_result == 0)
{
int auth_result = 1000;
auth_result= HD_Authenticate(); //卡认证
if (auth_result == 0)
{
try
{
int red_result = 1000;
//读卡操作,报"尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"错误。
red_result = HD_Read_BaseInfo(null, null, null, null, null, null, null, null, null, null);
}
catch(Exception ex)
{
MessageBox.Show("form1====" + ex.Message);
}
}
CHDNetSDK.HD_CloseComm();
请各位帮忙看看,谢谢!