Java WinScard智能卡dll 32位64位兼容性
我必须使用WinScard.dll库来访问智能卡。我有一个Java应用程序,它加载并利用这个库访问智能卡 32位系统:最初我们的应用程序是为32位Windows编写的。因此,以下库接口工作良好Java WinScard智能卡dll 32位64位兼容性,java,windows,dll,32bit-64bit,winscard,Java,Windows,Dll,32bit 64bit,Winscard,我必须使用WinScard.dll库来访问智能卡。我有一个Java应用程序,它加载并利用这个库访问智能卡 32位系统:最初我们的应用程序是为32位Windows编写的。因此,以下库接口工作良好 SCard INSTANCE = (SCard)Native.loadLibrary("C:\\Windows\\SysWOW64\\WinSCard.dll", SCard.class); public int SCardEstablishContext(int iScope, Pointer
SCard INSTANCE = (SCard)Native.loadLibrary("C:\\Windows\\SysWOW64\\WinSCard.dll", SCard.class);
public int SCardEstablishContext(int iScope, Pointer pvReserved1, Pointer pvReserved2, /*OUT &long*/LongByReference rRdrlHandle);
public int SCardGetStatusChangeA(int iHandle, int dwTimeout, /*IN/OUT*/SCardReaderState.ByReference rgReaderStates, int cReaders);
64位系统:现在,当我们将应用程序迁移到64位windows时,我们意识到要使其正常工作,我们需要将所有iHandle long intead设置为int。因此,以下工作
SCard INSTANCE = (SCard)Native.loadLibrary("C:\\Windows\\System32\\winscard", SCard.class);
public int SCardEstablishContext(int iScope, Pointer pvReserved1, Pointer pvReserved2, /*OUT &long*/LongByReference rRdrlHandle);
public int SCardGetStatusChangeA(long iHandle, int dwTimeout, /*IN/OUT*/SCardReaderState.ByReference rgReaderStates, int cReaders);
Note: Point of interest is the first param to the SCardGetStatusChangeA api exposed by the library .
现在我的问题是:
Scenario 1 :
- 64位Java虚拟机
- 64位dll(C:\Windows\System32)
- 在界面iHandle中保持长时间
Scenario 2
(在64位系统上运行,但使用32位工件):
- 32位Java虚拟机
- 32位动态链接库
- 久留
指针
,根据进程的不同,指针可以是32位或64位。另请参见中的所有“使用库”链接也考虑使用,它自动从标题中创建JNA接口。如果你能让它工作,它可以节省你很多时间
对于WinSCard库,我实际上制作了一个可供您随意使用或复制的文件,以防您还想将其与Linux或Mac上的pcsclite库一起使用。非常感谢。这看起来确实很有希望。当我从当前计划中退出时,我将尽快检查它。谢谢,我能够解决我的不兼容问题:-)