Hoe kan ik onderstaande c++ functie in java gebruiken?
http://msdn.microsoft.com...op/aa380287(v=vs.85).aspx
Ik heb ondekt dat dit mogelijk met JNA gedaan kan worden, echter krijg ik het niet voor elkaar om de juiste interfaces te genereren. Nu ben ik bezig geweest met het programma jnaerator om voor de volgende code de juiste interfaces te genereren:
Dit is de output van deze actie, maar ik vind nergens de CryptUIDlgSelectCertificate functie terug:
C++:
1
2
3
| PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificate( _In_ PCCRYPTUI_SELECTCERTIFICATE_STRUCT pcsc ); |
http://msdn.microsoft.com...op/aa380287(v=vs.85).aspx
Ik heb ondekt dat dit mogelijk met JNA gedaan kan worden, echter krijg ik het niet voor elkaar om de juiste interfaces te genereren. Nu ben ik bezig geweest met het programma jnaerator om voor de volgende code de juiste interfaces te genereren:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| typedef struct _CRYPTUI_SELECTCERTIFICATE_STRUCT { DWORD dwSize; HWND hwndParent; DWORD dwFlags; LPCTSTR szTitle; DWORD dwDontUseColumn; LPCTSTR szDisplayString; PFNCFILTERPROC pFilterCallback; PFNCCERTDISPLAYPROC pDisplayCallback; void *pvCallbackData; DWORD cDisplayStores; HCERTSTORE *rghDisplayStores; DWORD cStores; HCERTSTORE *rghStores; DWORD cPropSheetPages; LPCPROPSHEETPAGE rgPropSheetPages; HCERTSTORE hSelectedCertStore; } CRYPTUI_SELECTCERTIFICATE_STRUCT, *PCRYPTUI_SELECTCERTIFICATE_STRUCT; typedef struct _CERT_CONTEXT { DWORD dwCertEncodingType; BYTE *pbCertEncoded; DWORD cbCertEncoded; PCERT_INFO pCertInfo; HCERTSTORE hCertStore; } CERT_CONTEXT, *PCERT_CONTEXT;typedef const CERT_CONTEXT *PCCERT_CONTEXT; typedef const CRYPTUI_SELECTCERTIFICATE_STRUCT *PCCRYPTUI_SELECTCERTIFICATE_STRUCT; PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificate( _In_ PCCRYPTUI_SELECTCERTIFICATE_STRUCT pcsc ); |
Dit is de output van deze actie, maar ik vind nergens de CryptUIDlgSelectCertificate functie terug:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
| package test; import com.sun.jna.Pointer; import com.sun.jna.Structure; import java.util.Arrays; import java.util.List; import test.TestLibrary.HCERTSTORE; import test.TestLibrary.HWND; import test.TestLibrary.LPCPROPSHEETPAGE; import test.TestLibrary.LPCTSTR; import test.TestLibrary.PFNCCERTDISPLAYPROC; import test.TestLibrary.PFNCFILTERPROC; /** * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br> * a tool written by <a href="http://ochafik.com/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br> * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> , <a href="http://rococoa.dev.java.net/">Rococoa</a>, or <a href="http://jna.dev.java.net/">JNA</a>. */ public class CRYPTUI_SELECTCERTIFICATE_STRUCT extends Structure { public int dwSize; /** C type : HWND */ public HWND hwndParent; public int dwFlags; /** C type : LPCTSTR */ public LPCTSTR szTitle; public int dwDontUseColumn; /** C type : LPCTSTR */ public LPCTSTR szDisplayString; /** C type : PFNCFILTERPROC */ public PFNCFILTERPROC pFilterCallback; /** C type : PFNCCERTDISPLAYPROC */ public PFNCCERTDISPLAYPROC pDisplayCallback; /** C type : void* */ public Pointer pvCallbackData; public int cDisplayStores; /** C type : HCERTSTORE* */ public HCERTSTORE rghDisplayStores; public int cStores; /** C type : HCERTSTORE* */ public HCERTSTORE rghStores; public int cPropSheetPages; /** C type : LPCPROPSHEETPAGE */ public LPCPROPSHEETPAGE rgPropSheetPages; /** C type : HCERTSTORE */ public HCERTSTORE hSelectedCertStore; public CRYPTUI_SELECTCERTIFICATE_STRUCT() { super(); } protected List<? > getFieldOrder() { return Arrays.asList("dwSize", "hwndParent", "dwFlags", "szTitle", "dwDontUseColumn", "szDisplayString", "pFilterCallback", "pDisplayCallback", "pvCallbackData", "cDisplayStores", "rghDisplayStores", "cStores", "rghStores", "cPropSheetPages", "rgPropSheetPages", "hSelectedCertStore"); } public static class ByReference extends CRYPTUI_SELECTCERTIFICATE_STRUCT implements Structure.ByReference { }; public static class ByValue extends CRYPTUI_SELECTCERTIFICATE_STRUCT implements Structure.ByValue { }; } package test; import com.sun.jna.Pointer; import com.sun.jna.Structure; import java.util.Arrays; import java.util.List; import test.TestLibrary.HCERTSTORE; import test.TestLibrary.PCERT_INFO; /** * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br> * a tool written by <a href="http://ochafik.com/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br> * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> , <a href="http://rococoa.dev.java.net/">Rococoa</a>, or <a href="http://jna.dev.java.net/">JNA</a>. */ public class CERT_CONTEXT extends Structure { public int dwCertEncodingType; /** C type : BYTE* */ public Pointer pbCertEncoded; public int cbCertEncoded; /** C type : PCERT_INFO */ public PCERT_INFO pCertInfo; /** C type : HCERTSTORE */ public HCERTSTORE hCertStore; public CERT_CONTEXT() { super(); } protected List<? > getFieldOrder() { return Arrays.asList("dwCertEncodingType", "pbCertEncoded", "cbCertEncoded", "pCertInfo", "hCertStore"); } /** * @param pbCertEncoded C type : BYTE*<br> * @param pCertInfo C type : PCERT_INFO<br> * @param hCertStore C type : HCERTSTORE */ public CERT_CONTEXT(int dwCertEncodingType, Pointer pbCertEncoded, int cbCertEncoded, PCERT_INFO pCertInfo, HCERTSTORE hCertStore) { super(); this.dwCertEncodingType = dwCertEncodingType; this.pbCertEncoded = pbCertEncoded; this.cbCertEncoded = cbCertEncoded; this.pCertInfo = pCertInfo; this.hCertStore = hCertStore; } public static class ByReference extends CERT_CONTEXT implements Structure.ByReference { }; public static class ByValue extends CERT_CONTEXT implements Structure.ByValue { }; } package test; import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; import com.sun.jna.Pointer; import com.sun.jna.PointerType; /** * JNA Wrapper for library <b>test</b><br> * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br> * a tool written by <a href="http://ochafik.com/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br> * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> , <a href="http://rococoa.dev.java.net/">Rococoa</a>, or <a href="http://jna.dev.java.net/">JNA</a>. */ public class TestLibrary implements Library { public static final String JNA_LIBRARY_NAME = "test"; public static final NativeLibrary JNA_NATIVE_LIB = NativeLibrary.getInstance(TestLibrary.JNA_LIBRARY_NAME); static { Native.register(TestLibrary.JNA_LIBRARY_NAME); } public static class PCERT_INFO extends PointerType { public PCERT_INFO(Pointer address) { super(address); } public PCERT_INFO() { super(); } }; public static class PFNCCERTDISPLAYPROC extends PointerType { public PFNCCERTDISPLAYPROC(Pointer address) { super(address); } public PFNCCERTDISPLAYPROC() { super(); } }; public static class LPCPROPSHEETPAGE extends PointerType { public LPCPROPSHEETPAGE(Pointer address) { super(address); } public LPCPROPSHEETPAGE() { super(); } }; public static class HWND extends PointerType { public HWND(Pointer address) { super(address); } public HWND() { super(); } }; public static class HCERTSTORE extends PointerType { public HCERTSTORE(Pointer address) { super(address); } public HCERTSTORE() { super(); } }; public static class PFNCFILTERPROC extends PointerType { public PFNCFILTERPROC(Pointer address) { super(address); } public PFNCFILTERPROC() { super(); } }; public static class LPCTSTR extends PointerType { public LPCTSTR(Pointer address) { super(address); } public LPCTSTR() { super(); } }; } |
[ Voor 93% gewijzigd door keesdewit op 03-08-2013 18:45 ]