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 
网上搜了很多方法都么解决!