FreeRDP
Loading...
Searching...
No Matches
smartcard_operations.h
1
23#ifndef FREERDP_CHANNEL_SMARTCARD_OPERATIONS_MAIN_H
24#define FREERDP_CHANNEL_SMARTCARD_OPERATIONS_MAIN_H
25
26#include <winpr/crt.h>
27#include <winpr/stream.h>
28#include <winpr/smartcard.h>
29
30#include <freerdp/api.h>
31#include <freerdp/channels/scard.h>
32
33#ifdef __cplusplus
34extern "C"
35{
36#endif
37 typedef struct
38 {
39 union
40 {
41 Handles_Call handles;
42 Long_Call lng;
43 Context_Call context;
44 ContextAndStringA_Call contextAndStringA;
45 ContextAndStringW_Call contextAndStringW;
46 ContextAndTwoStringA_Call contextAndTwoStringA;
47 ContextAndTwoStringW_Call contextAndTwoStringW;
48 EstablishContext_Call establishContext;
49 ListReaderGroups_Call listReaderGroups;
50 ListReaders_Call listReaders;
51 GetStatusChangeA_Call getStatusChangeA;
52 LocateCardsA_Call locateCardsA;
53 LocateCardsW_Call locateCardsW;
54 LocateCards_ATRMask locateCardsATRMask;
55 LocateCardsByATRA_Call locateCardsByATRA;
56 LocateCardsByATRW_Call locateCardsByATRW;
57 GetStatusChangeW_Call getStatusChangeW;
58 GetReaderIcon_Call getReaderIcon;
59 GetDeviceTypeId_Call getDeviceTypeId;
60 Connect_Common_Call connect;
61 ConnectA_Call connectA;
62 ConnectW_Call connectW;
63 Reconnect_Call reconnect;
64 HCardAndDisposition_Call hCardAndDisposition;
65 State_Call state;
66 Status_Call status;
67 SCardIO_Request scardIO;
68 Transmit_Call transmit;
69 GetTransmitCount_Call getTransmitCount;
70 Control_Call control;
71 GetAttrib_Call getAttrib;
72 SetAttrib_Call setAttrib;
73 ReadCache_Common readCache;
74 ReadCacheA_Call readCacheA;
75 ReadCacheW_Call readCacheW;
76 WriteCache_Common writeCache;
77 WriteCacheA_Call writeCacheA;
78 WriteCacheW_Call writeCacheW;
79 } call;
80 UINT32 ioControlCode;
81 UINT32 completionID;
82 UINT32 deviceID;
83 SCARDCONTEXT hContext;
84 SCARDHANDLE hCard;
85 const char* ioControlCodeName;
86 UINT32 outputBufferLength;
87 union
88 {
89 EstablishContext_Return establishContext;
90 ListReaders_Return listReaders;
91 GetStatusChange_Return getStatusChange;
92 Connect_Return connect;
93 Control_Return control;
94 Transmit_Return transmit;
95 GetAttrib_Return getAttrib;
96 Reconnect_Return reconnect;
97 Status_Return status;
98 } ret;
101
106 WINPR_ATTR_NODISCARD
107 FREERDP_API LONG smartcard_irp_device_control_decode(wStream* s, UINT32 CompletionId,
108 UINT32 FileId,
109 SMARTCARD_OPERATION* operation);
110
125 WINPR_ATTR_NODISCARD
126 FREERDP_API LONG smartcard_irp_device_control_decode_request(wStream* s, UINT32 CompletionId,
127 UINT32 FileId,
128 SMARTCARD_OPERATION* operation);
129
143 WINPR_ATTR_NODISCARD
144 FREERDP_API LONG smartcard_irp_device_control_decode_response(wStream* s, UINT32 ioControlCode,
145 SMARTCARD_OPERATION* operation);
146
159 WINPR_ATTR_NODISCARD
160 FREERDP_API LONG
161 smartcard_irp_device_control_encode_request(wStream* s, const SMARTCARD_OPERATION* operation);
162
171 FREERDP_API void smartcard_operation_free(SMARTCARD_OPERATION* op, BOOL allocated);
172
173#ifdef __cplusplus
174}
175#endif
176#endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_OPERATIONS_H */