FreeRDP
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
34 extern "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;
87 
88  FREERDP_API LONG smartcard_irp_device_control_decode(wStream* s, UINT32 CompletionId,
89  UINT32 FileId,
90  SMARTCARD_OPERATION* operation);
91  FREERDP_API void smartcard_operation_free(SMARTCARD_OPERATION* op, BOOL allocated);
92 
93 #ifdef __cplusplus
94 }
95 #endif
96 #endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_OPERATIONS_H */