zoukankan      html  css  js  c++  java
  • 身份证刷卡 System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

    #region

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 8)]
            public struct PERSONINFOW
            {
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
                public string name;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
                public string sex;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
                public string nation;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
                public string birthday;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
                public string address;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
                public string cardId;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
                public string police;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
                public string validStart;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
                public string validEnd;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
                public string sexCode;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
                public string nationCode;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
                public string appendMsg;
            }


    #endregion
    #region
        
            [DllImport("cardapi3.dll", EntryPoint = "OpenCardReader", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
            public static extern Int32 OpenCardReader(Int32 lPort, UInt32 ulFlag, UInt32 ulBaudRate);
    
            [DllImport("cardapi3.dll", EntryPoint = "GetPersonMsgW", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            public static extern Int32 GetPersonMsgW(ref PERSONINFOW pInfo,string pszImageFile);
    
            [DllImport("cardapi3.dll", EntryPoint = "CloseCardReader", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            public static extern Int32 CloseCardReader();
    
            [DllImport("cardapi3.dll", EntryPoint = "GetErrorTextW", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            public static extern void GetErrorTextW(StringBuilder pszBuffer, UInt32 dwBufLen);
    
            [DllImport("cardapi3.dll", EntryPoint = "ResetCardReader", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            public static extern Int32 ResetCardReader();
    #endregion
    

      设置返回的ref参数为static 解决……

  • 相关阅读:
    Java调用本地接口:java.lang.UnsatisfiedLinkError
    httpSession
    <mvc:annotation-driven>和DefaultAnnotationHandlerMapping 配置教训
    Spring 中的HiddenHttpMethodFilter类
    Myeclipse Jquery代码提示
    修改MyEclipse8.5的默认工作空间
    React 实战系列:模块化
    兼容性 memo
    破解 JS(原型)继承
    CSS Basic Memo
  • 原文地址:https://www.cnblogs.com/Linc2010/p/3423220.html
Copyright © 2011-2022 走看看