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 FREERDP_API LONG WINAPI Emulate_SCardFreeMemory(SmartcardEmulationContext* smartcard,
217 SCARDCONTEXT hContext, LPVOID pvMem);
218
219 WINPR_ATTR_NODISCARD
220 FREERDP_API HANDLE WINAPI Emulate_SCardAccessStartedEvent(SmartcardEmulationContext* smartcard);
221
222 FREERDP_API void WINAPI Emulate_SCardReleaseStartedEvent(SmartcardEmulationContext* smartcard);
223
224 WINPR_ATTR_NODISCARD
225 FREERDP_API LONG WINAPI Emulate_SCardLocateCardsA(SmartcardEmulationContext* smartcard,
226 SCARDCONTEXT hContext, LPCSTR mszCards,
227 LPSCARD_READERSTATEA rgReaderStates,
228 DWORD cReaders);
229
230 WINPR_ATTR_NODISCARD
231 FREERDP_API LONG WINAPI Emulate_SCardLocateCardsW(SmartcardEmulationContext* smartcard,
232 SCARDCONTEXT hContext, LPCWSTR mszCards,
233 LPSCARD_READERSTATEW rgReaderStates,
234 DWORD cReaders);
235
236 WINPR_ATTR_NODISCARD
237 FREERDP_API LONG WINAPI Emulate_SCardLocateCardsByATRA(SmartcardEmulationContext* smartcard,
238 SCARDCONTEXT hContext,
239 LPSCARD_ATRMASK rgAtrMasks, DWORD cAtrs,
240 LPSCARD_READERSTATEA rgReaderStates,
241 DWORD cReaders);
242
243 WINPR_ATTR_NODISCARD
244 FREERDP_API LONG WINAPI Emulate_SCardLocateCardsByATRW(SmartcardEmulationContext* smartcard,
245 SCARDCONTEXT hContext,
246 LPSCARD_ATRMASK rgAtrMasks, DWORD cAtrs,
247 LPSCARD_READERSTATEW rgReaderStates,
248 DWORD cReaders);
249
250 WINPR_ATTR_NODISCARD
251 FREERDP_API LONG WINAPI Emulate_SCardGetStatusChangeA(SmartcardEmulationContext* smartcard,
252 SCARDCONTEXT hContext, DWORD dwTimeout,
253 LPSCARD_READERSTATEA rgReaderStates,
254 DWORD cReaders);
255
256 WINPR_ATTR_NODISCARD
257 FREERDP_API LONG WINAPI Emulate_SCardGetStatusChangeW(SmartcardEmulationContext* smartcard,
258 SCARDCONTEXT hContext, DWORD dwTimeout,
259 LPSCARD_READERSTATEW rgReaderStates,
260 DWORD cReaders);
261
262 FREERDP_API LONG WINAPI Emulate_SCardCancel(SmartcardEmulationContext* smartcard,
263 SCARDCONTEXT hContext);
264
265 WINPR_ATTR_NODISCARD
266 FREERDP_API LONG WINAPI Emulate_SCardConnectA(SmartcardEmulationContext* smartcard,
267 SCARDCONTEXT hContext, LPCSTR szReader,
268 DWORD dwShareMode, DWORD dwPreferredProtocols,
269 LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol);
270
271 WINPR_ATTR_NODISCARD
272 FREERDP_API LONG WINAPI Emulate_SCardConnectW(SmartcardEmulationContext* smartcard,
273 SCARDCONTEXT hContext, LPCWSTR szReader,
274 DWORD dwShareMode, DWORD dwPreferredProtocols,
275 LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol);
276
277 WINPR_ATTR_NODISCARD
278 FREERDP_API LONG WINAPI Emulate_SCardReconnect(SmartcardEmulationContext* smartcard,
279 SCARDHANDLE hCard, DWORD dwShareMode,
280 DWORD dwPreferredProtocols,
281 DWORD dwInitialization,
282 LPDWORD pdwActiveProtocol);
283
284 WINPR_ATTR_NODISCARD
285 FREERDP_API LONG WINAPI Emulate_SCardDisconnect(SmartcardEmulationContext* smartcard,
286 SCARDHANDLE hCard, DWORD dwDisposition);
287
288 WINPR_ATTR_NODISCARD
289 FREERDP_API LONG WINAPI Emulate_SCardBeginTransaction(SmartcardEmulationContext* smartcard,
290 SCARDHANDLE hCard);
291
292 WINPR_ATTR_NODISCARD
293 FREERDP_API LONG WINAPI Emulate_SCardEndTransaction(SmartcardEmulationContext* smartcard,
294 SCARDHANDLE hCard, DWORD dwDisposition);
295
296 WINPR_ATTR_NODISCARD
297 FREERDP_API LONG WINAPI Emulate_SCardCancelTransaction(SmartcardEmulationContext* smartcard,
298 SCARDHANDLE hCard);
299
300 WINPR_ATTR_NODISCARD
301 FREERDP_API LONG WINAPI Emulate_SCardState(SmartcardEmulationContext* smartcard,
302 SCARDHANDLE hCard, LPDWORD pdwState,
303 LPDWORD pdwProtocol, LPBYTE pbAtr,
304 LPDWORD pcbAtrLen);
305
306 WINPR_ATTR_NODISCARD
307 FREERDP_API LONG WINAPI Emulate_SCardStatusA(SmartcardEmulationContext* smartcard,
308 SCARDHANDLE hCard, LPSTR mszReaderNames,
309 LPDWORD pcchReaderLen, LPDWORD pdwState,
310 LPDWORD pdwProtocol, LPBYTE pbAtr,
311 LPDWORD pcbAtrLen);
312
313 WINPR_ATTR_NODISCARD
314 FREERDP_API LONG WINAPI Emulate_SCardStatusW(SmartcardEmulationContext* smartcard,
315 SCARDHANDLE hCard, LPWSTR mszReaderNames,
316 LPDWORD pcchReaderLen, LPDWORD pdwState,
317 LPDWORD pdwProtocol, LPBYTE pbAtr,
318 LPDWORD pcbAtrLen);
319
320 WINPR_ATTR_NODISCARD
321 FREERDP_API LONG WINAPI Emulate_SCardTransmit(SmartcardEmulationContext* smartcard,
322 SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci,
323 LPCBYTE pbSendBuffer, DWORD cbSendLength,
324 LPSCARD_IO_REQUEST pioRecvPci,
325 LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength);
326
327 WINPR_ATTR_NODISCARD
328 FREERDP_API LONG WINAPI Emulate_SCardGetTransmitCount(SmartcardEmulationContext* smartcard,
329 SCARDHANDLE hCard,
330 LPDWORD pcTransmitCount);
331
332 WINPR_ATTR_NODISCARD
333 FREERDP_API LONG WINAPI Emulate_SCardControl(SmartcardEmulationContext* smartcard,
334 SCARDHANDLE hCard, DWORD dwControlCode,
335 LPCVOID lpInBuffer, DWORD cbInBufferSize,
336 LPVOID lpOutBuffer, DWORD cbOutBufferSize,
337 LPDWORD lpBytesReturned);
338
339 WINPR_ATTR_NODISCARD
340 FREERDP_API LONG WINAPI Emulate_SCardGetAttrib(SmartcardEmulationContext* smartcard,
341 SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
342 LPDWORD pcbAttrLen);
343
344 WINPR_ATTR_NODISCARD
345 FREERDP_API LONG WINAPI Emulate_SCardSetAttrib(SmartcardEmulationContext* smartcard,
346 SCARDHANDLE hCard, DWORD dwAttrId,
347 LPCBYTE pbAttr, DWORD cbAttrLen);
348
349 WINPR_ATTR_NODISCARD
350 FREERDP_API LONG WINAPI Emulate_SCardUIDlgSelectCardA(SmartcardEmulationContext* smartcard,
351 LPOPENCARDNAMEA_EX pDlgStruc);
352
353 WINPR_ATTR_NODISCARD
354 FREERDP_API LONG WINAPI Emulate_SCardUIDlgSelectCardW(SmartcardEmulationContext* smartcard,
355 LPOPENCARDNAMEW_EX pDlgStruc);
356
357 WINPR_ATTR_NODISCARD
358 FREERDP_API LONG WINAPI Emulate_GetOpenCardNameA(SmartcardEmulationContext* smartcard,
359 LPOPENCARDNAMEA pDlgStruc);
360
361 WINPR_ATTR_NODISCARD
362 FREERDP_API LONG WINAPI Emulate_GetOpenCardNameW(SmartcardEmulationContext* smartcard,
363 LPOPENCARDNAMEW pDlgStruc);
364
365 WINPR_ATTR_NODISCARD
366 FREERDP_API LONG WINAPI Emulate_SCardDlgExtendedError(SmartcardEmulationContext* smartcard);
367
368 WINPR_ATTR_NODISCARD
369 FREERDP_API LONG WINAPI Emulate_SCardReadCacheA(SmartcardEmulationContext* smartcard,
370 SCARDCONTEXT hContext, UUID* CardIdentifier,
371 DWORD FreshnessCounter, LPSTR LookupName,
372 PBYTE Data, DWORD* DataLen);
373
374 WINPR_ATTR_NODISCARD
375 FREERDP_API LONG WINAPI Emulate_SCardReadCacheW(SmartcardEmulationContext* smartcard,
376 SCARDCONTEXT hContext, UUID* CardIdentifier,
377 DWORD FreshnessCounter, LPWSTR LookupName,
378 PBYTE Data, DWORD* DataLen);
379
380 WINPR_ATTR_NODISCARD
381 FREERDP_API LONG WINAPI Emulate_SCardWriteCacheA(SmartcardEmulationContext* smartcard,
382 SCARDCONTEXT hContext, UUID* CardIdentifier,
383 DWORD FreshnessCounter, LPSTR LookupName,
384 PBYTE Data, DWORD DataLen);
385
386 WINPR_ATTR_NODISCARD
387 FREERDP_API LONG WINAPI Emulate_SCardWriteCacheW(SmartcardEmulationContext* smartcard,
388 SCARDCONTEXT hContext, UUID* CardIdentifier,
389 DWORD FreshnessCounter, LPWSTR LookupName,
390 PBYTE Data, DWORD DataLen);
391
392 WINPR_ATTR_NODISCARD
393 FREERDP_API LONG WINAPI Emulate_SCardGetReaderIconA(SmartcardEmulationContext* smartcard,
394 SCARDCONTEXT hContext, LPCSTR szReaderName,
395 LPBYTE pbIcon, LPDWORD pcbIcon);
396
397 WINPR_ATTR_NODISCARD
398 FREERDP_API LONG WINAPI Emulate_SCardGetReaderIconW(SmartcardEmulationContext* smartcard,
399 SCARDCONTEXT hContext, LPCWSTR szReaderName,
400 LPBYTE pbIcon, LPDWORD pcbIcon);
401
402 WINPR_ATTR_NODISCARD
403 FREERDP_API LONG WINAPI Emulate_SCardGetDeviceTypeIdA(SmartcardEmulationContext* smartcard,
404 SCARDCONTEXT hContext,
405 LPCSTR szReaderName,
406 LPDWORD pdwDeviceTypeId);
407
408 WINPR_ATTR_NODISCARD
409 FREERDP_API LONG WINAPI Emulate_SCardGetDeviceTypeIdW(SmartcardEmulationContext* smartcard,
410 SCARDCONTEXT hContext,
411 LPCWSTR szReaderName,
412 LPDWORD pdwDeviceTypeId);
413
414 WINPR_ATTR_NODISCARD
415 FREERDP_API LONG WINAPI Emulate_SCardGetReaderDeviceInstanceIdA(
416 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szReaderName,
417 LPSTR szDeviceInstanceId, LPDWORD pcchDeviceInstanceId);
418
419 WINPR_ATTR_NODISCARD
420 FREERDP_API LONG WINAPI Emulate_SCardGetReaderDeviceInstanceIdW(
421 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szReaderName,
422 LPWSTR szDeviceInstanceId, LPDWORD pcchDeviceInstanceId);
423
424 WINPR_ATTR_NODISCARD
425 FREERDP_API LONG WINAPI Emulate_SCardListReadersWithDeviceInstanceIdA(
426 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szDeviceInstanceId,
427 LPSTR mszReaders, LPDWORD pcchReaders);
428
429 WINPR_ATTR_NODISCARD
430 FREERDP_API LONG WINAPI Emulate_SCardListReadersWithDeviceInstanceIdW(
431 SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szDeviceInstanceId,
432 LPWSTR mszReaders, LPDWORD pcchReaders);
433
434 WINPR_ATTR_NODISCARD
435 FREERDP_API LONG WINAPI Emulate_SCardAudit(SmartcardEmulationContext* smartcard,
436 SCARDCONTEXT hContext, DWORD dwEvent);
437
438#ifdef __cplusplus
439}
440#endif
441
442#endif /* WINPR_SMARTCARD_EMULATE_PRIVATE_H */
Definition wtypes.h:254