using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Win32;
using System.Runtime.InteropServices;
using System.Text;/// <summary>
/// getdll 的摘要说明
/// </summary>
///
public class getdll
{ [DllImport(@"sicard.dll", EntryPoint = "iRCardInfo", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int iRCardInfo(int iReaderHandle, out StringBuilder szCardID, out StringBuilder szCardCertID, out StringBuilder szName, out StringBuilder szEmpComputerId);
StringBuilder i_icpwd, o_errmsg, o_jbjg, o_ic, o_grbh;
int i;
public getdll()
{
//
// TODO: 在此处添加构造函数逻辑
//
i_icpwd = new StringBuilder(20);
o_errmsg = new StringBuilder(20);
o_jbjg = new StringBuilder(20);
o_ic = new StringBuilder(20);
o_grbh = new StringBuilder(20); }
public void getinfo()
{
i = iRCardInfo(1, out i_icpwd, out o_errmsg, out o_jbjg, out o_ic);
}
public void setpwd(string pwd)
{
i_icpwd = new StringBuilder(pwd);
}
public string getgrbh()
{
return o_grbh.ToString();
}
public int ge_i()
{
return this.i;
}
}错误信息:[AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。]
getdll.iRCardInfo(Int32 iReaderHandle, StringBuilder& szCardID, StringBuilder& szCardCertID, StringBuilder& szName, StringBuilder& szEmpComputerId) +0
getdll.getinfo() in c:\WebSite1\App_Code\getdll.cs:41
_Default.Page_Load(Object sender, EventArgs e) in c:\WebSite1\Default.aspx.cs:22
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +13
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +45
System.Web.UI.Control.OnLoad(EventArgs e) +80
System.Web.UI.Control.LoadRecursive() +49
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3743
网上搜了很多方法都么解决!
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Win32;
using System.Runtime.InteropServices;
using System.Text;/// <summary>
/// getdll 的摘要说明
/// </summary>
///
public class getdll
{ [DllImport(@"sicard.dll", EntryPoint = "iRCardInfo", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int iRCardInfo(int iReaderHandle, out StringBuilder szCardID, out StringBuilder szCardCertID, out StringBuilder szName, out StringBuilder szEmpComputerId);
StringBuilder i_icpwd, o_errmsg, o_jbjg, o_ic, o_grbh;
int i;
public getdll()
{
//
// TODO: 在此处添加构造函数逻辑
//
i_icpwd = new StringBuilder(20);
o_errmsg = new StringBuilder(20);
o_jbjg = new StringBuilder(20);
o_ic = new StringBuilder(20);
o_grbh = new StringBuilder(20); }
public void getinfo()
{
i = iRCardInfo(1, out i_icpwd, out o_errmsg, out o_jbjg, out o_ic);
}
public void setpwd(string pwd)
{
i_icpwd = new StringBuilder(pwd);
}
public string getgrbh()
{
return o_grbh.ToString();
}
public int ge_i()
{
return this.i;
}
}错误信息:[AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。]
getdll.iRCardInfo(Int32 iReaderHandle, StringBuilder& szCardID, StringBuilder& szCardCertID, StringBuilder& szName, StringBuilder& szEmpComputerId) +0
getdll.getinfo() in c:\WebSite1\App_Code\getdll.cs:41
_Default.Page_Load(Object sender, EventArgs e) in c:\WebSite1\Default.aspx.cs:22
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +13
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +45
System.Web.UI.Control.OnLoad(EventArgs e) +80
System.Web.UI.Control.LoadRecursive() +49
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3743
网上搜了很多方法都么解决!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货