我正在尝试使用 SCardGetAttrib (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);
}
我从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。
抱歉,我对这个主题知之甚少。有人可以帮忙吗?