FreeRDP
Loading...
Searching...
No Matches
smartcard_emulate.h
1
21#ifndef WINPR_SMARTCARD_EMULATE_PRIVATE_H
22#define WINPR_SMARTCARD_EMULATE_PRIVATE_H
23
24#include <winpr/platform.h>
25#include <winpr/smartcard.h>
26
27#include <freerdp/api.h>
28#include <freerdp/settings.h>
29
30#ifdef __cplusplus
31extern "C"
32{
33#endif
34
35 typedef struct smartcard_emulation_context SmartcardEmulationContext;
36
37 FREERDP_API void Emulate_Free(SmartcardEmulationContext* context);
38
39 WINPR_ATTR_MALLOC(Emulate_Free, 1)
40 WINPR_ATTR_NODISCARD
41 FREERDP_API SmartcardEmulationContext* Emulate_New(const rdpSettings* settings);
42
43 WINPR_ATTR_NODISCARD
44 FREERDP_API BOOL Emulate_IsConfigured(SmartcardEmulationContext* context);
45
46 WINPR_ATTR_NODISCARD
47 FREERDP_API LONG WINAPI Emulate_SCardEstablishContext(SmartcardEmulationContext* smartcard,
48 DWORD dwScope, LPCVOID pvReserved1,
49 LPCVOID pvReserved2,
50 LPSCARDCONTEXT phContext);
51
52 WINPR_ATTR_NODISCARD
53 FREERDP_API LONG WINAPI Emulate_SCardReleaseContext(SmartcardEmulationContext* smartcard,
54 SCARDCONTEXT hContext);
55
56 WINPR_ATTR_NODISCARD
57 FREERDP_API LONG WINAPI Emulate_SCardIsValidContext(SmartcardEmulationContext* smartcard,
58 SCARDCONTEXT hContext);
59
60 WINPR_ATTR_NODISCARD
61 FREERDP_API LONG WINAPI Emulate_SCardListReaderGroupsA(SmartcardEmulationContext* smartcard,
62 SCARDCONTEXT hContext, LPSTR mszGroups,
63 LPDWORD pcchGroups);
64
65 WINPR_ATTR_NODISCARD
66 FREERDP_API LONG WINAPI Emulate_SCardListReaderGroupsW(SmartcardEmulationContext* smartcard,
67 SCARDCONTEXT hContext, LPWSTR mszGroups,
68 LPDWORD pcchGroups);
69
70 WINPR_ATTR_NODISCARD
71 FREERDP_API LONG WINAPI Emulate_SCardListReadersA(SmartcardEmulationContext* smartcard,
72 SCARDCONTEXT hContext, LPCSTR mszGroups,
73 LPSTR mszReaders, LPDWORD pcchReaders);
74
75 WINPR_ATTR_NODISCARD
76 FREERDP_API LONG WINAPI Emulate_SCardListReadersW(SmartcardEmulationContext* smartcard,
77 SCARDCONTEXT hContext, LPCWSTR mszGroups,
78 LPWSTR mszReaders, LPDWORD pcchReaders);
79
80 WINPR_ATTR_NODISCARD
81 FREERDP_API LONG WINAPI Emulate_SCardListCardsA(SmartcardEmulationContext* smartcard,
82 SCARDCONTEXT hContext, LPCBYTE pbAtr,
83 LPCGUID rgquidInterfaces,
84 DWORD cguidInterfaceCount, CHAR* mszCards,
85 LPDWORD pcchCards);
86
87 WINPR_ATTR_NODISCARD
88 FREERDP_API LONG WINAPI Emulate_SCardListCardsW(SmartcardEmulationContext* smartcard,
89 SCARDCONTEXT hContext, LPCBYTE pbAtr,
90 LPCGUID rgquidInterfaces,
91 DWORD cguidInterfaceCount, WCHAR* mszCards,
92 LPDWORD pcchCards);
93
94 WINPR_ATTR_NODISCARD
95 FREERDP_API LONG WINAPI Emulate_SCardListInterfacesA(SmartcardEmulationContext* smartcard,
96 SCARDCONTEXT hContext, LPCSTR szCard,
97 LPGUID pguidInterfaces,
98 LPDWORD pcguidInterfaces);
99
100 WINPR_ATTR_NODISCARD
101 FREERDP_API LONG WINAPI Emulate_SCardListInterfacesW(SmartcardEmulationContext* smartcard,
102 SCARDCONTEXT hContext, LPCWSTR szCard,
103 LPGUID pguidInterfaces,
104 LPDWORD pcguidInterfaces);
105
106 WINPR_ATTR_NODISCARD
107 FREERDP_API LONG WINAPI Emulate_SCardGetProviderIdA(SmartcardEmulationContext* smartcard,
108 SCARDCONTEXT hContext, LPCSTR szCard,
109 LPGUID pguidProviderId);
110
111 WINPR_ATTR_NODISCARD
112 FREERDP_API LONG WINAPI Emulate_SCardGetProviderIdW(SmartcardEmulationContext* smartcard,
113 SCARDCONTEXT hContext, LPCWSTR szCard,
114 LPGUID pguidProviderId);
115
116 WINPR_ATTR_NODISCARD
117 FREERDP_API LONG WINAPI Emulate_SCardGetCardTypeProviderNameA(
118 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szCardName,
119 DWORD dwProviderId, CHAR* szProvider, LPDWORD pcchProvider);
120
121 WINPR_ATTR_NODISCARD
122 FREERDP_API LONG WINAPI Emulate_SCardGetCardTypeProviderNameW(
123 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szCardName,
124 DWORD dwProviderId, WCHAR* szProvider, LPDWORD pcchProvider);
125
126 WINPR_ATTR_NODISCARD
127 FREERDP_API LONG WINAPI Emulate_SCardIntroduceReaderGroupA(SmartcardEmulationContext* smartcard,
128 SCARDCONTEXT hContext,
129 LPCSTR szGroupName);
130
131 WINPR_ATTR_NODISCARD
132 FREERDP_API LONG WINAPI Emulate_SCardIntroduceReaderGroupW(SmartcardEmulationContext* smartcard,
133 SCARDCONTEXT hContext,
134 LPCWSTR szGroupName);
135
136 WINPR_ATTR_NODISCARD
137 FREERDP_API LONG WINAPI Emulate_SCardForgetReaderGroupA(SmartcardEmulationContext* smartcard,
138 SCARDCONTEXT hContext,
139 LPCSTR szGroupName);
140
141 WINPR_ATTR_NODISCARD
142 FREERDP_API LONG WINAPI Emulate_SCardForgetReaderGroupW(SmartcardEmulationContext* smartcard,
143 SCARDCONTEXT hContext,
144 LPCWSTR szGroupName);
145
146 WINPR_ATTR_NODISCARD
147 FREERDP_API LONG WINAPI Emulate_SCardIntroduceReaderA(SmartcardEmulationContext* smartcard,
148 SCARDCONTEXT hContext,
149 LPCSTR szReaderName, LPCSTR szDeviceName);
150
151 WINPR_ATTR_NODISCARD
152 FREERDP_API LONG WINAPI Emulate_SCardIntroduceReaderW(SmartcardEmulationContext* smartcard,
153 SCARDCONTEXT hContext,
154 LPCWSTR szReaderName,
155 LPCWSTR szDeviceName);
156
157 WINPR_ATTR_NODISCARD
158 FREERDP_API LONG WINAPI Emulate_SCardForgetReaderA(SmartcardEmulationContext* smartcard,
159 SCARDCONTEXT hContext, LPCSTR szReaderName);
160
161 WINPR_ATTR_NODISCARD
162 FREERDP_API LONG WINAPI Emulate_SCardForgetReaderW(SmartcardEmulationContext* smartcard,
163 SCARDCONTEXT hContext, LPCWSTR szReaderName);
164
165 WINPR_ATTR_NODISCARD
166 FREERDP_API LONG WINAPI Emulate_SCardAddReaderToGroupA(SmartcardEmulationContext* smartcard,
167 SCARDCONTEXT hContext,
168 LPCSTR szReaderName, LPCSTR szGroupName);
169
170 WINPR_ATTR_NODISCARD
171 FREERDP_API LONG WINAPI Emulate_SCardAddReaderToGroupW(SmartcardEmulationContext* smartcard,
172 SCARDCONTEXT hContext,
173 LPCWSTR szReaderName,
174 LPCWSTR szGroupName);
175
176 WINPR_ATTR_NODISCARD
177 FREERDP_API LONG WINAPI
178 Emulate_SCardRemoveReaderFromGroupA(SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext,
179 LPCSTR szReaderName, LPCSTR szGroupName);
180
181 WINPR_ATTR_NODISCARD
182 FREERDP_API LONG WINAPI
183 Emulate_SCardRemoveReaderFromGroupW(SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext,
184 LPCWSTR szReaderName, LPCWSTR szGroupName);
185
186 WINPR_ATTR_NODISCARD
187 FREERDP_API LONG WINAPI Emulate_SCardIntroduceCardTypeA(
188 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szCardName,
189 LPCGUID pguidPrimaryProvider, LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
190 LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen);
191
192 WINPR_ATTR_NODISCARD
193 FREERDP_API LONG WINAPI Emulate_SCardIntroduceCardTypeW(
194 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szCardName,
195 LPCGUID pguidPrimaryProvider, LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
196 LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen);
197
198 WINPR_ATTR_NODISCARD
199 FREERDP_API LONG WINAPI Emulate_SCardSetCardTypeProviderNameA(
200 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szCardName,
201 DWORD dwProviderId, LPCSTR szProvider);
202
203 WINPR_ATTR_NODISCARD
204 FREERDP_API LONG WINAPI Emulate_SCardSetCardTypeProviderNameW(
205 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szCardName,
206 DWORD dwProviderId, LPCWSTR szProvider);
207
208 WINPR_ATTR_NODISCARD
209 FREERDP_API LONG WINAPI Emulate_SCardForgetCardTypeA(SmartcardEmulationContext* smartcard,
210 SCARDCONTEXT hContext, LPCSTR szCardName);
211
212 WINPR_ATTR_NODISCARD
213 FREERDP_API LONG WINAPI Emulate_SCardForgetCardTypeW(SmartcardEmulationContext* smartcard,
214 SCARDCONTEXT hContext, LPCWSTR szCardName);
215
216 WINPR_ATTR_NODISCARD
217 FREERDP_API LONG WINAPI Emulate_SCardFreeMemory(SmartcardEmulationContext* smartcard,
218 SCARDCONTEXT hContext, LPVOID pvMem);
219
220 WINPR_ATTR_NODISCARD
221 FREERDP_API HANDLE WINAPI Emulate_SCardAccessStartedEvent(SmartcardEmulationContext* smartcard);
222
223 FREERDP_API void WINAPI Emulate_SCardReleaseStartedEvent(SmartcardEmulationContext* smartcard);
224
225 WINPR_ATTR_NODISCARD
226 FREERDP_API LONG WINAPI Emulate_SCardLocateCardsA(SmartcardEmulationContext* smartcard,
227 SCARDCONTEXT hContext, LPCSTR mszCards,
228 LPSCARD_READERSTATEA rgReaderStates,
229 DWORD cReaders);
230
231 WINPR_ATTR_NODISCARD
232 FREERDP_API LONG WINAPI Emulate_SCardLocateCardsW(SmartcardEmulationContext* smartcard,
233 SCARDCONTEXT hContext, LPCWSTR mszCards,
234 LPSCARD_READERSTATEW rgReaderStates,
235 DWORD cReaders);
236
237 WINPR_ATTR_NODISCARD
238 FREERDP_API LONG WINAPI Emulate_SCardLocateCardsByATRA(SmartcardEmulationContext* smartcard,
239 SCARDCONTEXT hContext,
240 LPSCARD_ATRMASK rgAtrMasks, DWORD cAtrs,
241 LPSCARD_READERSTATEA rgReaderStates,
242 DWORD cReaders);
243
244 WINPR_ATTR_NODISCARD
245 FREERDP_API LONG WINAPI Emulate_SCardLocateCardsByATRW(SmartcardEmulationContext* smartcard,
246 SCARDCONTEXT hContext,
247 LPSCARD_ATRMASK rgAtrMasks, DWORD cAtrs,
248 LPSCARD_READERSTATEW rgReaderStates,
249 DWORD cReaders);
250
251 WINPR_ATTR_NODISCARD
252 FREERDP_API LONG WINAPI Emulate_SCardGetStatusChangeA(SmartcardEmulationContext* smartcard,
253 SCARDCONTEXT hContext, DWORD dwTimeout,
254 LPSCARD_READERSTATEA rgReaderStates,
255 DWORD cReaders);
256
257 WINPR_ATTR_NODISCARD
258 FREERDP_API LONG WINAPI Emulate_SCardGetStatusChangeW(SmartcardEmulationContext* smartcard,
259 SCARDCONTEXT hContext, DWORD dwTimeout,
260 LPSCARD_READERSTATEW rgReaderStates,
261 DWORD cReaders);
262
263 WINPR_ATTR_NODISCARD
264 FREERDP_API LONG WINAPI Emulate_SCardCancel(SmartcardEmulationContext* smartcard,
265 SCARDCONTEXT hContext);
266
267 WINPR_ATTR_NODISCARD
268 FREERDP_API LONG WINAPI Emulate_SCardConnectA(SmartcardEmulationContext* smartcard,
269 SCARDCONTEXT hContext, LPCSTR szReader,
270 DWORD dwShareMode, DWORD dwPreferredProtocols,
271 LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol);
272
273 WINPR_ATTR_NODISCARD
274 FREERDP_API LONG WINAPI Emulate_SCardConnectW(SmartcardEmulationContext* smartcard,
275 SCARDCONTEXT hContext, LPCWSTR szReader,
276 DWORD dwShareMode, DWORD dwPreferredProtocols,
277 LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol);
278
279 WINPR_ATTR_NODISCARD
280 FREERDP_API LONG WINAPI Emulate_SCardReconnect(SmartcardEmulationContext* smartcard,
281 SCARDHANDLE hCard, DWORD dwShareMode,
282 DWORD dwPreferredProtocols,
283 DWORD dwInitialization,
284 LPDWORD pdwActiveProtocol);
285
286 WINPR_ATTR_NODISCARD
287 FREERDP_API LONG WINAPI Emulate_SCardDisconnect(SmartcardEmulationContext* smartcard,
288 SCARDHANDLE hCard, DWORD dwDisposition);
289
290 WINPR_ATTR_NODISCARD
291 FREERDP_API LONG WINAPI Emulate_SCardBeginTransaction(SmartcardEmulationContext* smartcard,
292 SCARDHANDLE hCard);
293
294 WINPR_ATTR_NODISCARD
295 FREERDP_API LONG WINAPI Emulate_SCardEndTransaction(SmartcardEmulationContext* smartcard,
296 SCARDHANDLE hCard, DWORD dwDisposition);
297
298 WINPR_ATTR_NODISCARD
299 FREERDP_API LONG WINAPI Emulate_SCardCancelTransaction(SmartcardEmulationContext* smartcard,
300 SCARDHANDLE hCard);
301
302 WINPR_ATTR_NODISCARD
303 FREERDP_API LONG WINAPI Emulate_SCardState(SmartcardEmulationContext* smartcard,
304 SCARDHANDLE hCard, LPDWORD pdwState,
305 LPDWORD pdwProtocol, LPBYTE pbAtr,
306 LPDWORD pcbAtrLen);
307
308 WINPR_ATTR_NODISCARD
309 FREERDP_API LONG WINAPI Emulate_SCardStatusA(SmartcardEmulationContext* smartcard,
310 SCARDHANDLE hCard, LPSTR mszReaderNames,
311 LPDWORD pcchReaderLen, LPDWORD pdwState,
312 LPDWORD pdwProtocol, LPBYTE pbAtr,
313 LPDWORD pcbAtrLen);
314
315 WINPR_ATTR_NODISCARD
316 FREERDP_API LONG WINAPI Emulate_SCardStatusW(SmartcardEmulationContext* smartcard,
317 SCARDHANDLE hCard, LPWSTR mszReaderNames,
318 LPDWORD pcchReaderLen, LPDWORD pdwState,
319 LPDWORD pdwProtocol, LPBYTE pbAtr,
320 LPDWORD pcbAtrLen);
321
322 WINPR_ATTR_NODISCARD
323 FREERDP_API LONG WINAPI Emulate_SCardTransmit(SmartcardEmulationContext* smartcard,
324 SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci,
325 LPCBYTE pbSendBuffer, DWORD cbSendLength,
326 LPSCARD_IO_REQUEST pioRecvPci,
327 LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength);
328
329 WINPR_ATTR_NODISCARD
330 FREERDP_API LONG WINAPI Emulate_SCardGetTransmitCount(SmartcardEmulationContext* smartcard,
331 SCARDHANDLE hCard,
332 LPDWORD pcTransmitCount);
333
334 WINPR_ATTR_NODISCARD
335 FREERDP_API LONG WINAPI Emulate_SCardControl(SmartcardEmulationContext* smartcard,
336 SCARDHANDLE hCard, DWORD dwControlCode,
337 LPCVOID lpInBuffer, DWORD cbInBufferSize,
338 LPVOID lpOutBuffer, DWORD cbOutBufferSize,
339 LPDWORD lpBytesReturned);
340
341 WINPR_ATTR_NODISCARD
342 FREERDP_API LONG WINAPI Emulate_SCardGetAttrib(SmartcardEmulationContext* smartcard,
343 SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
344 LPDWORD pcbAttrLen);
345
346 WINPR_ATTR_NODISCARD
347 FREERDP_API LONG WINAPI Emulate_SCardSetAttrib(SmartcardEmulationContext* smartcard,
348 SCARDHANDLE hCard, DWORD dwAttrId,
349 LPCBYTE pbAttr, DWORD cbAttrLen);
350
351 WINPR_ATTR_NODISCARD
352 FREERDP_API LONG WINAPI Emulate_SCardUIDlgSelectCardA(SmartcardEmulationContext* smartcard,
353 LPOPENCARDNAMEA_EX pDlgStruc);
354
355 WINPR_ATTR_NODISCARD
356 FREERDP_API LONG WINAPI Emulate_SCardUIDlgSelectCardW(SmartcardEmulationContext* smartcard,
357 LPOPENCARDNAMEW_EX pDlgStruc);
358
359 WINPR_ATTR_NODISCARD
360 FREERDP_API LONG WINAPI Emulate_GetOpenCardNameA(SmartcardEmulationContext* smartcard,
361 LPOPENCARDNAMEA pDlgStruc);
362
363 WINPR_ATTR_NODISCARD
364 FREERDP_API LONG WINAPI Emulate_GetOpenCardNameW(SmartcardEmulationContext* smartcard,
365 LPOPENCARDNAMEW pDlgStruc);
366
367 WINPR_ATTR_NODISCARD
368 FREERDP_API LONG WINAPI Emulate_SCardDlgExtendedError(SmartcardEmulationContext* smartcard);
369
370 WINPR_ATTR_NODISCARD
371 FREERDP_API LONG WINAPI Emulate_SCardReadCacheA(SmartcardEmulationContext* smartcard,
372 SCARDCONTEXT hContext, UUID* CardIdentifier,
373 DWORD FreshnessCounter, LPSTR LookupName,
374 PBYTE Data, DWORD* DataLen);
375
376 WINPR_ATTR_NODISCARD
377 FREERDP_API LONG WINAPI Emulate_SCardReadCacheW(SmartcardEmulationContext* smartcard,
378 SCARDCONTEXT hContext, UUID* CardIdentifier,
379 DWORD FreshnessCounter, LPWSTR LookupName,
380 PBYTE Data, DWORD* DataLen);
381
382 WINPR_ATTR_NODISCARD
383 FREERDP_API LONG WINAPI Emulate_SCardWriteCacheA(SmartcardEmulationContext* smartcard,
384 SCARDCONTEXT hContext, UUID* CardIdentifier,
385 DWORD FreshnessCounter, LPSTR LookupName,
386 PBYTE Data, DWORD DataLen);
387
388 WINPR_ATTR_NODISCARD
389 FREERDP_API LONG WINAPI Emulate_SCardWriteCacheW(SmartcardEmulationContext* smartcard,
390 SCARDCONTEXT hContext, UUID* CardIdentifier,
391 DWORD FreshnessCounter, LPWSTR LookupName,
392 PBYTE Data, DWORD DataLen);
393
394 WINPR_ATTR_NODISCARD
395 FREERDP_API LONG WINAPI Emulate_SCardGetReaderIconA(SmartcardEmulationContext* smartcard,
396 SCARDCONTEXT hContext, LPCSTR szReaderName,
397 LPBYTE pbIcon, LPDWORD pcbIcon);
398
399 WINPR_ATTR_NODISCARD
400 FREERDP_API LONG WINAPI Emulate_SCardGetReaderIconW(SmartcardEmulationContext* smartcard,
401 SCARDCONTEXT hContext, LPCWSTR szReaderName,
402 LPBYTE pbIcon, LPDWORD pcbIcon);
403
404 WINPR_ATTR_NODISCARD
405 FREERDP_API LONG WINAPI Emulate_SCardGetDeviceTypeIdA(SmartcardEmulationContext* smartcard,
406 SCARDCONTEXT hContext,
407 LPCSTR szReaderName,
408 LPDWORD pdwDeviceTypeId);
409
410 WINPR_ATTR_NODISCARD
411 FREERDP_API LONG WINAPI Emulate_SCardGetDeviceTypeIdW(SmartcardEmulationContext* smartcard,
412 SCARDCONTEXT hContext,
413 LPCWSTR szReaderName,
414 LPDWORD pdwDeviceTypeId);
415
416 WINPR_ATTR_NODISCARD
417 FREERDP_API LONG WINAPI Emulate_SCardGetReaderDeviceInstanceIdA(
418 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szReaderName,
419 LPSTR szDeviceInstanceId, LPDWORD pcchDeviceInstanceId);
420
421 WINPR_ATTR_NODISCARD
422 FREERDP_API LONG WINAPI Emulate_SCardGetReaderDeviceInstanceIdW(
423 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szReaderName,
424 LPWSTR szDeviceInstanceId, LPDWORD pcchDeviceInstanceId);
425
426 WINPR_ATTR_NODISCARD
427 FREERDP_API LONG WINAPI Emulate_SCardListReadersWithDeviceInstanceIdA(
428 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szDeviceInstanceId,
429 LPSTR mszReaders, LPDWORD pcchReaders);
430
431 WINPR_ATTR_NODISCARD
432 FREERDP_API LONG WINAPI Emulate_SCardListReadersWithDeviceInstanceIdW(
433 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szDeviceInstanceId,
434 LPWSTR mszReaders, LPDWORD pcchReaders);
435
436 WINPR_ATTR_NODISCARD
437 FREERDP_API LONG WINAPI Emulate_SCardAudit(SmartcardEmulationContext* smartcard,
438 SCARDCONTEXT hContext, DWORD dwEvent);
439
440#ifdef __cplusplus
441}
442#endif
443
444#endif /* WINPR_SMARTCARD_EMULATE_PRIVATE_H */
Definition wtypes.h:254