C#
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
这是一个接口的方法
int ReadBaseInfos( char * Name, char * Gender, char * Folk,
char *BirthDay, char * Code, char * Address,char *Agency, char * ExpireStart,char* ExpireEnd)
我在C#中调用,ReadBaseInfos方法第一次调用正常,第二次调用提示"尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
[DllImport("Sdtapi.dll")]
private static extern int ReadBaseInfos(StringBuilder Name, StringBuilder Gender, StringBuilder Folk, StringBuilder BirthDay, StringBuilder Code, StringBuilder Address, StringBuilder Agency, StringBuilder ExpireStart, StringBuilder ExpireEnd);
谁能帮解一下~!
------解决方案--------------------http://www.cnblogs.com/yiki/archive/2008/10/29/1321848.html
数据类型问题,
如果第一次调用正常,第二次调用失败检查是不是open 之后没有close (个人判断)
------解决方案--------------------数据类型没有匹配吧
------解决方案--------------------保证每个StringBuilder 的实例的Capacity足够的大
第一次调用成功后看下每个StringBuilder 的Capacity是否有变小,如果有变小就调整到足够大
------解决方案--------------------[DllImport("sdtapi.dll", EntryPoint = "ReadBaseInfos",//读取卡中基本信息
CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int ReadBaseInfos(StringBuilder Name, StringBuilder Gender, StringBuilder Folk, StringBuilder BirthDay,
StringBuilder Code, StringBuilder Address, StringBuilder Agency, StringBuilder ExpireStart, StringBuilder ExpireEnd);
设置StringBuilder 的大小
------解决方案--------------------