FreeRDP
Loading...
Searching...
No Matches
smartcard_call.h
1
23#ifndef FREERDP_CHANNEL_SMARTCARD_CALL_H
24#define FREERDP_CHANNEL_SMARTCARD_CALL_H
25
26#include <winpr/crt.h>
27#include <winpr/stream.h>
28
29#include <freerdp/api.h>
30#include <freerdp/settings.h>
31#include <freerdp/channels/scard.h>
32#include <freerdp/utils/smartcard_operations.h>
33
34#ifdef __cplusplus
35extern "C"
36{
37#endif
38
39 typedef struct s_scard_call_context scard_call_context;
40
41 FREERDP_API void smartcard_call_context_free(scard_call_context* ctx);
42
43 WINPR_ATTR_MALLOC(smartcard_call_context_free, 1)
44 WINPR_ATTR_NODISCARD
45 FREERDP_API scard_call_context* smartcard_call_context_new(const rdpSettings* settings);
46
47 FREERDP_API BOOL smartcard_call_context_signal_stop(scard_call_context* ctx, BOOL reset);
48
49 WINPR_ATTR_NODISCARD
50 FREERDP_API BOOL smartcard_call_context_add(scard_call_context* ctx, const char* name);
51
52 FREERDP_API BOOL smartcard_call_cancel_context(scard_call_context* ctx, SCARDCONTEXT context);
53
54 FREERDP_API BOOL smartcard_call_cancel_all_context(scard_call_context* ctx);
55
56 FREERDP_API BOOL smartcard_call_release_context(scard_call_context* ctx, SCARDCONTEXT context);
57
58 WINPR_ATTR_NODISCARD
59 FREERDP_API BOOL smartcard_call_is_configured(scard_call_context* ctx);
60
61 WINPR_ATTR_NODISCARD
62 FREERDP_API BOOL smarcard_call_set_callbacks(scard_call_context* ctx, void* userdata,
63 void* (*fn_new)(void*, SCARDCONTEXT),
64 void (*fn_free)(void*));
65 WINPR_ATTR_NODISCARD
66 FREERDP_API void* smartcard_call_get_context(scard_call_context* ctx, SCARDCONTEXT hContext);
67
68 WINPR_ATTR_NODISCARD
69 FREERDP_API LONG smartcard_irp_device_control_call(scard_call_context* ctx, wStream* out,
70 NTSTATUS* pIoStatus,
71 SMARTCARD_OPERATION* operation);
72
73#ifdef __cplusplus
74}
75#endif
76#endif /* FREERDP_CHANNEL_SMARTCARD_CALL_H */