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
49 FREERDP_API LONG smartcard_pack_write_size_align(
wStream* s,
size_t size, UINT32 alignment);
58 FREERDP_API LONG smartcard_unpack_read_size_align(
wStream* s,
size_t size, UINT32 alignment);
65 FREERDP_API SCARDCONTEXT
73 SCARDCONTEXT hContext);
80 FREERDP_API SCARDHANDLE
87 FREERDP_API
void smartcard_scard_handle_native_to_redir(
REDIR_SCARDHANDLE* handle,
95 FREERDP_API LONG smartcard_unpack_common_type_header(
wStream* s);
100 FREERDP_API
void smartcard_pack_common_type_header(
wStream* s);
107 FREERDP_API LONG smartcard_unpack_private_type_header(
wStream* s);
113 FREERDP_API
void smartcard_pack_private_type_header(
wStream* s, UINT32 objectBufferLength);
121 FREERDP_API LONG smartcard_unpack_establish_context_call(
wStream* s,
131 FREERDP_API LONG smartcard_pack_establish_context_call(
wStream* s,
140 FREERDP_API LONG smartcard_pack_establish_context_return(
wStream* s,
150 FREERDP_API LONG smartcard_unpack_establish_context_return(
wStream* s,
167 FREERDP_API
void smartcard_trace_long_return(
const Long_Return* ret,
const char* name);
176 FREERDP_API LONG smartcard_unpack_list_reader_groups_call(
wStream* s,
188 FREERDP_API LONG smartcard_pack_list_reader_groups_call(
wStream* s,
200 FREERDP_API LONG smartcard_pack_list_reader_groups_return(
wStream* s,
212 FREERDP_API LONG smartcard_unpack_list_reader_groups_return(
wStream* s,
261 FREERDP_API LONG smartcard_unpack_context_and_string_a_call(
wStream* s,
270 FREERDP_API LONG smartcard_unpack_context_and_string_w_call(
wStream* s,
303 FREERDP_API LONG smartcard_pack_locate_cards_w_return(
wStream* s,
398 FREERDP_API LONG smartcard_unpack_hcard_and_disposition_call(
wStream* s,
408 FREERDP_API LONG smartcard_unpack_get_status_change_a_call(
wStream* s,
417 FREERDP_API LONG smartcard_unpack_get_status_change_w_call(
wStream* s,
428 FREERDP_API LONG smartcard_pack_get_status_change_return(
wStream* s,
455 FREERDP_API LONG smartcard_unpack_status_call(
wStream* s,
Status_Call* call, BOOL unicode);
465 FREERDP_API LONG smartcard_pack_status_call(
wStream* s,
const Status_Call* call, BOOL unicode);
515 DWORD dwAttrId, DWORD cbAttrCallLen);
590 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_a_call(
wStream* s,
599 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_w_call(
wStream* s,
648 FREERDP_API LONG smartcard_unpack_get_transmit_count_call(
wStream* s,
657 FREERDP_API LONG smartcard_pack_get_transmit_count_return(
wStream* s,
674 FREERDP_API LONG smartcard_pack_get_reader_icon_return(
wStream* s,
683 FREERDP_API LONG smartcard_unpack_get_device_type_id_call(
wStream* s,
692 FREERDP_API LONG smartcard_pack_device_type_id_return(
wStream* s,
724 FREERDP_API LONG smartcard_pack_get_status_change_a_call(
wStream* s,
734 FREERDP_API LONG smartcard_pack_get_status_change_w_call(
wStream* s,
763 FREERDP_API LONG smartcard_pack_hcard_and_disposition_call(
wStream* s,
795 FREERDP_API LONG smartcard_unpack_get_status_change_return(
wStream* s,