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