API调用如下:
Imports System.Text@H_404_3@ @H_404_3@ @H_404_3@ Namespace CardReader.API@H_404_3@ Public Class JingLunAPI@H_404_3@ ''' <summary>@H_404_3@ ''' 初始化函数@H_404_3@ ''' </summary>@H_404_3@ ''' <param name="port"></param>@H_404_3@ ''' <returns></returns>@H_404_3@ ''' <remarks></remarks>@H_404_3@ Public Declare Function InitComm Lib "sdtapi.dll" (ByVal port As Integer) As Integer@H_404_3@ @H_404_3@ @H_404_3@ ''' <summary>@H_404_3@ ''' 端口关闭接口@H_404_3@ ''' </summary>@H_404_3@ ''' <returns></returns>@H_404_3@ ''' <remarks></remarks>@H_404_3@ Public Declare Function CloseComm Lib "sdtapi.dll" () As Integer@H_404_3@ @H_404_3@ @H_404_3@ ''' <summary>@H_404_3@ ''' 卡认证接口@H_404_3@ ''' </summary>@H_404_3@ ''' <returns></returns>@H_404_3@ ''' <remarks></remarks>@H_404_3@ Public Declare Function Authenticate Lib "sdtapi.dll" () As Integer@H_404_3@ @H_404_3@ @H_404_3@ ''' <summary>@H_404_3@ ''' 读取卡信息@H_404_3@ ''' </summary>@H_404_3@ ''' <param name="pmsg"></param>@H_404_3@ ''' <param name="len"></param>@H_404_3@ ''' <returns></returns>@H_404_3@ ''' <remarks></remarks>@H_404_3@ Public Declare Function ReadBaseMsg Lib "sdtapi.dll" (ByVal pmsg As Byte(),ByRef len As Integer) As Integer@H_404_3@ @H_404_3@ @H_404_3@ ''' <summary>@H_404_3@ ''' 读取卡信息@H_404_3@ ''' </summary>@H_404_3@ ''' <param name="Name"></param>@H_404_3@ ''' <param name="Gender"></param>@H_404_3@ ''' <param name="Folk"></param>@H_404_3@ ''' <param name="BirthDay"></param>@H_404_3@ ''' <param name="Code"></param>@H_404_3@ ''' <param name="Address"></param>@H_404_3@ ''' <param name="Agency"></param>@H_404_3@ ''' <param name="ExpireStart"></param>@H_404_3@ ''' <param name="ExpireEnd"></param>@H_404_3@ ''' <returns></returns>@H_404_3@ ''' <remarks></remarks>@H_404_3@ Public Declare Function ReadBaseInfos Lib "sdtapi.dll" (ByVal Name As StringBuilder,ByVal Gender As StringBuilder,ByVal Folk As StringBuilder,ByVal BirthDay As StringBuilder,ByVal Code As StringBuilder,ByVal Address As StringBuilder,_@H_404_3@ ByVal Agency As StringBuilder,ByVal ExpireStart As StringBuilder,ByVal ExpireEnd As StringBuilder) As Integer@H_404_3@ @H_404_3@ @H_404_3@ ''' <summary>@H_404_3@ ''' 读取卡信息,图片指定到目录(这个接口目录不能传应该程序根目录,不然生成不了图片;如果图片存在应用程序根目录调用上面的方法:ReadBaseInfos)@H_404_3@ ''' </summary>@H_404_3@ ''' <param name="Name"></param>@H_404_3@ ''' <param name="Gender"></param>@H_404_3@ ''' <param name="Folk"></param>@H_404_3@ ''' <param name="BirthDay"></param>@H_404_3@ ''' <param name="Code"></param>@H_404_3@ ''' <param name="Address"></param>@H_404_3@ ''' <param name="Agency"></param>@H_404_3@ ''' <param name="ExpireStart"></param>@H_404_3@ ''' <param name="ExpireEnd"></param>@H_404_3@ ''' <returns></returns>@H_404_3@ ''' <remarks></remarks>@H_404_3@ Public Declare Function ReadBaseInfosPhoto Lib "sdtapi.dll" (ByVal Name As StringBuilder,ByVal ExpireEnd As StringBuilder,ByVal directoryPath As String) As Integer@H_404_3@ @H_404_3@ @H_404_3@ Public Declare Function ReadNewAppMsg Lib "sdtapi.dll" (ByVal pmsg As StringBuilder,ByRef len As Integer) As Integer@H_404_3@ @H_404_3@ @H_404_3@ End Class@H_404_3@ End Namespace@H_404_3@ @H_404_3@ @H_404_3@ 方法ReadBaseInfosPhoto 调用报错,如下:
正试图在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起@H_404_3@ 解决办法:
http://www.cnblogs.com/winzheng/archive/2008/12/05/1348575.html@H_404_3@
@H_404_3@
来有一个问题:ReadBaseInfosPhoto方法的地址ByVal directoryPath As String,不能是:Byref directoryPath As String
因为:在VB中,应该申明为以Byval方式传递的String,因为VB中的字符串变量(变长的)实际存的就是字符串的指针。