JNA从crypt32.dll调用现有的C-Function

时间:2014-12-16 16:09:34

标签: c windows dll native jna

我想从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”。

希望有人可以帮助我。谢谢! :)

0 个答案:

没有答案