使用Winscard.dll和JNA

时间:2013-08-20 14:29:46

标签: java dll jna

我正在尝试使用Java JNA使用SCardGetAttrib(Winscard.dll)函数读取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);

}

我从http://crypto-native.sourceforge.net/crypto-native-pcsc/apidocs/net/sf/crypton/scard/pcsclite/PcscliteLibrary.html#SCardGetAttrib%28com.sun.jna.NativeLong,%20int,%20java.nio.ByteBuffer,%20java.nio.IntBuffer%29获取了类型签名,但当然这是PcscliteLibrary的签名。我希望它与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_ATTR_DEVICE_FRIENDLY_NAME或SCARD_ATTR_VENDOR_NAME的内容作为dwAttrId。

抱歉,我对这个主题知之甚少。有人可以帮忙吗?

0 个答案:

没有答案