23#ifndef FREERDP_CHANNEL_SMARTCARD_CALL_H
24#define FREERDP_CHANNEL_SMARTCARD_CALL_H
27#include <winpr/stream.h>
29#include <freerdp/api.h>
30#include <freerdp/settings.h>
31#include <freerdp/channels/scard.h>
32#include <freerdp/utils/smartcard_operations.h>
39 typedef struct s_scard_call_context scard_call_context;
41 FREERDP_API
void smartcard_call_context_free(scard_call_context* ctx);
43#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
44 WINPR_DEPRECATED_VAR(
"[since 3.24.0] use smartcard_call_context_new_with_context instead",
45 WINPR_ATTR_MALLOC(smartcard_call_context_free, 1)
46 FREERDP_API scard_call_context* smartcard_call_context_new(
47 const rdpSettings* settings));
50 WINPR_ATTR_MALLOC(smartcard_call_context_free, 1)
51 FREERDP_API scard_call_context* smartcard_call_context_new_with_context(rdpContext* context);
60 FREERDP_API BOOL smartcard_call_context_signal_stop(scard_call_context* ctx, BOOL reset);
63 FREERDP_API BOOL smartcard_call_context_add(scard_call_context* ctx, const
char* name);
65 FREERDP_API BOOL smartcard_call_cancel_context(scard_call_context* ctx, SCARDCONTEXT context);
67 FREERDP_API BOOL smartcard_call_cancel_all_context(scard_call_context* ctx);
69 FREERDP_API BOOL smartcard_call_release_context(scard_call_context* ctx, SCARDCONTEXT context);
72 FREERDP_API BOOL smartcard_call_is_configured(scard_call_context* ctx);
75 FREERDP_API BOOL smarcard_call_set_callbacks(scard_call_context* ctx,
void* userdata,
76 void* (*fn_new)(
void*, SCARDCONTEXT),
77 void (*fn_free)(
void*));
79 FREERDP_API
void* smartcard_call_get_context(scard_call_context* ctx, SCARDCONTEXT hContext);
82 FREERDP_API LONG smartcard_irp_device_control_call(scard_call_context* ctx,
wStream* out,