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 smartcard_scard_context_native_from_redir(
REDIR_SCARDCONTEXT* context);
72 SCARDCONTEXT hContext);
79 FREERDP_API SCARDHANDLE smartcard_scard_handle_native_from_redir(
REDIR_SCARDHANDLE* handle);
85 FREERDP_API
void smartcard_scard_handle_native_to_redir(
REDIR_SCARDHANDLE* handle,
93 FREERDP_API LONG smartcard_unpack_common_type_header(
wStream* s);
98 FREERDP_API
void smartcard_pack_common_type_header(
wStream* s);
105 FREERDP_API LONG smartcard_unpack_private_type_header(
wStream* s);
111 FREERDP_API
void smartcard_pack_private_type_header(
wStream* s, UINT32 objectBufferLength);
119 FREERDP_API LONG smartcard_unpack_establish_context_call(
wStream* s,
129 FREERDP_API LONG smartcard_pack_establish_context_call(
wStream* s,
138 FREERDP_API LONG smartcard_pack_establish_context_return(
wStream* s,
148 FREERDP_API LONG smartcard_unpack_establish_context_return(
wStream* s,
165 FREERDP_API
void smartcard_trace_long_return(
const Long_Return* ret,
const char* name);
174 FREERDP_API LONG smartcard_unpack_list_reader_groups_call(
wStream* s,
186 FREERDP_API LONG smartcard_pack_list_reader_groups_call(
wStream* s,
198 FREERDP_API LONG smartcard_pack_list_reader_groups_return(
wStream* s,
210 FREERDP_API LONG smartcard_unpack_list_reader_groups_return(
wStream* s,
259 FREERDP_API LONG smartcard_unpack_context_and_string_a_call(
wStream* s,
268 FREERDP_API LONG smartcard_unpack_context_and_string_w_call(
wStream* s,
301 FREERDP_API LONG smartcard_pack_locate_cards_w_return(
wStream* s,
396 FREERDP_API LONG smartcard_unpack_hcard_and_disposition_call(
wStream* s,
406 FREERDP_API LONG smartcard_unpack_get_status_change_a_call(
wStream* s,
415 FREERDP_API LONG smartcard_unpack_get_status_change_w_call(
wStream* s,
426 FREERDP_API LONG smartcard_pack_get_status_change_return(
wStream* s,
453 FREERDP_API LONG smartcard_unpack_status_call(
wStream* s,
Status_Call* call, BOOL unicode);
463 FREERDP_API LONG smartcard_pack_status_call(
wStream* s,
const Status_Call* call, BOOL unicode);
513 DWORD dwAttrId, DWORD cbAttrCallLen);
588 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_a_call(
wStream* s,
597 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_w_call(
wStream* s,
646 FREERDP_API LONG smartcard_unpack_get_transmit_count_call(
wStream* s,
655 FREERDP_API LONG smartcard_pack_get_transmit_count_return(
wStream* s,
672 FREERDP_API LONG smartcard_pack_get_reader_icon_return(
wStream* s,
681 FREERDP_API LONG smartcard_unpack_get_device_type_id_call(
wStream* s,
690 FREERDP_API LONG smartcard_pack_device_type_id_return(
wStream* s,
722 FREERDP_API LONG smartcard_pack_get_status_change_a_call(
wStream* s,
732 FREERDP_API LONG smartcard_pack_get_status_change_w_call(
wStream* s,
761 FREERDP_API LONG smartcard_pack_hcard_and_disposition_call(
wStream* s,
793 FREERDP_API LONG smartcard_unpack_get_status_change_return(
wStream* s,