24#ifndef FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H
25#define FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H
28#include <winpr/stream.h>
29#include <winpr/smartcard.h>
31#include <freerdp/api.h>
32#include <freerdp/channels/scard.h>
34#define SMARTCARD_COMMON_TYPE_HEADER_LENGTH 8
35#define SMARTCARD_PRIVATE_TYPE_HEADER_LENGTH 8
42 FREERDP_API LONG smartcard_pack_write_size_align(
wStream* s,
size_t size, UINT32 alignment);
43 FREERDP_API LONG smartcard_unpack_read_size_align(
wStream* s,
size_t size, UINT32 alignment);
46 FREERDP_API SCARDCONTEXT smartcard_scard_context_native_from_redir(
REDIR_SCARDCONTEXT* context);
48 SCARDCONTEXT hContext);
51 FREERDP_API SCARDHANDLE smartcard_scard_handle_native_from_redir(
REDIR_SCARDHANDLE* handle);
52 FREERDP_API
void smartcard_scard_handle_native_to_redir(
REDIR_SCARDHANDLE* handle,
56 FREERDP_API LONG smartcard_unpack_common_type_header(
wStream* s);
57 FREERDP_API
void smartcard_pack_common_type_header(
wStream* s);
60 FREERDP_API LONG smartcard_unpack_private_type_header(
wStream* s);
61 FREERDP_API
void smartcard_pack_private_type_header(
wStream* s, UINT32 objectBufferLength);
64 FREERDP_API LONG smartcard_unpack_establish_context_call(
wStream* s,
68 FREERDP_API LONG smartcard_pack_establish_context_return(
wStream* s,
75 FREERDP_API
void smartcard_trace_long_return(
const Long_Return* ret,
const char* name);
78 FREERDP_API LONG smartcard_unpack_list_reader_groups_call(
wStream* s,
83 FREERDP_API LONG smartcard_pack_list_reader_groups_return(
wStream* s,
104 FREERDP_API LONG smartcard_unpack_context_and_string_a_call(
wStream* s,
108 FREERDP_API LONG smartcard_unpack_context_and_string_w_call(
wStream* s,
139 FREERDP_API LONG smartcard_unpack_hcard_and_disposition_call(
wStream* s,
144 FREERDP_API LONG smartcard_unpack_get_status_change_a_call(
wStream* s,
148 FREERDP_API LONG smartcard_unpack_get_status_change_w_call(
wStream* s,
152 FREERDP_API LONG smartcard_pack_get_status_change_return(
wStream* s,
162 FREERDP_API LONG smartcard_unpack_status_call(
wStream* s,
Status_Call* call, BOOL unicode);
173 DWORD dwAttrId, DWORD cbAttrCallLen);
191 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_a_call(
wStream* s,
195 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_w_call(
wStream* s,
214 FREERDP_API LONG smartcard_unpack_get_transmit_count_call(
wStream* s,
217 FREERDP_API LONG smartcard_pack_get_transmit_count_return(
wStream* s,
223 FREERDP_API LONG smartcard_pack_get_reader_icon_return(
wStream* s,
227 FREERDP_API LONG smartcard_unpack_get_device_type_id_call(
wStream* s,
231 FREERDP_API LONG smartcard_pack_device_type_id_return(
wStream* s,