Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Winscard.dll与JNA一起使用_Java_Dll_Jna - Fatal编程技术网

Java 将Winscard.dll与JNA一起使用

Java 将Winscard.dll与JNA一起使用,java,dll,jna,Java,Dll,Jna,我正在尝试使用scardgettrib(Winscard.dll)函数在带有Java JNA的Windows PC上读取阅读器属性,但我不知道如何确切地使用JNA来获得我想要的 这是接口: public interface Winscard extends Library { Winscard INSTANCE = (Winscard) Native.loadLibrary("winscard", Winscard.class); NativeLong sCardGetAttrib(

我正在尝试使用scardgettrib(Winscard.dll)函数在带有Java JNA的Windows PC上读取阅读器属性,但我不知道如何确切地使用JNA来获得我想要的

这是接口:

public interface Winscard extends Library  {
  Winscard INSTANCE = (Winscard) Native.loadLibrary("winscard", Winscard.class);

  NativeLong sCardGetAttrib(NativeLong hCard, int dwAttrId, ByteBuffer pbAttr, IntBuffer pcbAttrLen);
}

我从中获取了类型签名,但这当然是PCSClite库的签名。我希望它与Winscard函数足够相似。那么我从哪里得到函数的正确签名呢

我尝试使用此函数调用函数,只是为了尝试它是否有效:

public static void main(String[] args) {
  IntBuffer b = IntBuffer.allocate(1024);
  Winscard winscard = Winscard.INSTANCE;
  winscard.sCardGetAttrib(null, 0, null, b);
}
但我得到:

java.lang.UnsatisfiedLinkError: Error looking up function 'sCardGetAttrib':
实际上,我需要使用SCARD\u ATTR\u DEVICE\u-FRIENDLY\u NAME或SCARD\u ATTR\u VENDOR\u NAME作为dwAttrId


对不起,我对这个主题的了解很少。有人能帮忙吗?

尝试
SCard…
而不是
SCard…
。之后,在理解应该传递给函数的参数之前,您将遇到问题。您正在传递一个空缓冲区,以及一个未初始化的、分配的大小为1024的缓冲区,用于保存您的数据缓冲区大小。非常感谢,现在它可以工作了,我可以读取属性了。然而,这仅在读卡器处有卡时才起作用。我把它贴在这里:。也许你可以再帮我一次。我会很高兴的!对于那些感兴趣的人:问题已经解决了,您可以在另一个线程中找到代码(前面注释中的链接)。