我想从Java中的crypt32.dll调用函数:CertOpenStore()。我发现Java中的JNA是可行的。
然后我试着建立它。这就是我现在所拥有的:
public class Example {
public interface Crypt32 extends Library {
public boolean CertOpenStore(String lpszStoreProvider, int dwMsgAndCertEncodingType, Pointer hCryptProv, int dwFlags, Pointer pvPara);
/* MSDN Docu
HCERTSTORE WINAPI CertOpenStore(
_In_ LPCSTR lpszStoreProvider,
_In_ DWORD dwMsgAndCertEncodingType,
_In_ HCRYPTPROV_LEGACY hCryptProv,
_In_ DWORD dwFlags,
_In_ const void *pvPara
);
*/
}
public static void main(String[] args) {
Crypt32 lib = (Crypt32) Native.loadLibrary("Crypt32", Crypt32.class);
System.out.println(lib.CertOpenStore(10, 0, null, 0, null));
} }
但我有很多问题,而且我不是一个优秀的程序员。所以我需要帮助。
首先是:这个函数的返回类型是什么?在msdn文档中,返回类型是 HCERTSTORE - 但这在Java中是什么?
接下来是:我的论点可以吗? LPCSTR lpszStoreProvider 例如是C中String的指针,所以在Java中它应该是一个String或者我错了?
此函数的main()上的确切值是什么,可以访问“当前用户”-Keystore上的密钥库“MY”。
希望有人可以帮助我。谢谢! :)