[includes] add missing c++ guards

This commit is contained in:
akallabeth 2023-02-07 16:56:07 +01:00 committed by akallabeth
parent adce7378c3
commit b342194d4b
10 changed files with 308 additions and 220 deletions

View File

@ -27,4 +27,11 @@
#define ECHO_DVC_CHANNEL_NAME "ECHO" #define ECHO_DVC_CHANNEL_NAME "ECHO"
#ifdef __cplusplus
extern "C"
{
#endif
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_CHANNEL_ECHO_H */ #endif /* FREERDP_CHANNEL_ECHO_H */

View File

@ -25,4 +25,11 @@
#define CHANNELS_TAG(tag) FREERDP_TAG("channels.") tag #define CHANNELS_TAG(tag) FREERDP_TAG("channels.") tag
#ifdef __cplusplus
extern "C"
{
#endif
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_UTILS_DEBUG_H */ #endif /* FREERDP_UTILS_DEBUG_H */

View File

@ -27,4 +27,12 @@
#define RDP2TCP_DVC_CHANNEL_NAME "rdp2tcp" #define RDP2TCP_DVC_CHANNEL_NAME "rdp2tcp"
#ifdef __cplusplus
extern "C"
{
#endif
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_CHANNEL_RDP2TCP_H */ #endif /* FREERDP_CHANNEL_RDP2TCP_H */

View File

@ -27,33 +27,38 @@
#define RDPECAM_DVC_CHANNEL_NAME "rdpecam" #define RDPECAM_DVC_CHANNEL_NAME "rdpecam"
#define RDPECAM_CONTROL_DVC_CHANNEL_NAME "RDCamera_Device_Enumerator" #define RDPECAM_CONTROL_DVC_CHANNEL_NAME "RDCamera_Device_Enumerator"
typedef enum #ifdef __cplusplus
extern "C"
{ {
CAM_MSG_ID_SuccessResponse = 0x01, #endif
CAM_MSG_ID_ErrorResponse = 0x02,
CAM_MSG_ID_SelectVersionRequest = 0x03, typedef enum
CAM_MSG_ID_SelectVersionResponse = 0x04, {
CAM_MSG_ID_DeviceAddedNotification = 0x05, CAM_MSG_ID_SuccessResponse = 0x01,
CAM_MSG_ID_DeviceRemovedNotification = 0x06, CAM_MSG_ID_ErrorResponse = 0x02,
CAM_MSG_ID_ActivateDeviceRequest = 0x07, CAM_MSG_ID_SelectVersionRequest = 0x03,
CAM_MSG_ID_DeactivateDeviceRequest = 0x08, CAM_MSG_ID_SelectVersionResponse = 0x04,
CAM_MSG_ID_StreamListRequest = 0x09, CAM_MSG_ID_DeviceAddedNotification = 0x05,
CAM_MSG_ID_StreamListResponse = 0x0A, CAM_MSG_ID_DeviceRemovedNotification = 0x06,
CAM_MSG_ID_MediaTypeListRequest = 0x0B, CAM_MSG_ID_ActivateDeviceRequest = 0x07,
CAM_MSG_ID_MediaTypeListResponse = 0x0C, CAM_MSG_ID_DeactivateDeviceRequest = 0x08,
CAM_MSG_ID_CurrentMediaTypeRequest = 0x0D, CAM_MSG_ID_StreamListRequest = 0x09,
CAM_MSG_ID_CurrentMediaTypeResponse = 0x0E, CAM_MSG_ID_StreamListResponse = 0x0A,
CAM_MSG_ID_StartStreamsRequest = 0x0F, CAM_MSG_ID_MediaTypeListRequest = 0x0B,
CAM_MSG_ID_StopStreamsRequest = 0x10, CAM_MSG_ID_MediaTypeListResponse = 0x0C,
CAM_MSG_ID_SampleRequest = 0x11, CAM_MSG_ID_CurrentMediaTypeRequest = 0x0D,
CAM_MSG_ID_SampleResponse = 0x12, CAM_MSG_ID_CurrentMediaTypeResponse = 0x0E,
CAM_MSG_ID_SampleErrorResponse = 0x13, CAM_MSG_ID_StartStreamsRequest = 0x0F,
CAM_MSG_ID_PropertyListRequest = 0x14, CAM_MSG_ID_StopStreamsRequest = 0x10,
CAM_MSG_ID_PropertyListResponse = 0x15, CAM_MSG_ID_SampleRequest = 0x11,
CAM_MSG_ID_PropertyValueRequest = 0x16, CAM_MSG_ID_SampleResponse = 0x12,
CAM_MSG_ID_PropertyValueResponse = 0x17, CAM_MSG_ID_SampleErrorResponse = 0x13,
CAM_MSG_ID_SetPropertyValueRequest = 0x18, CAM_MSG_ID_PropertyListRequest = 0x14,
} CAM_MSG_ID; CAM_MSG_ID_PropertyListResponse = 0x15,
CAM_MSG_ID_PropertyValueRequest = 0x16,
CAM_MSG_ID_PropertyValueResponse = 0x17,
CAM_MSG_ID_SetPropertyValueRequest = 0x18,
} CAM_MSG_ID;
#define CAM_HEADER_SIZE 2 #define CAM_HEADER_SIZE 2
@ -333,4 +338,7 @@ typedef struct
CAM_PROPERTY_VALUE PropertyValue; CAM_PROPERTY_VALUE PropertyValue;
} CAM_SET_PROPERTY_VALUE_REQUEST; } CAM_SET_PROPERTY_VALUE_REQUEST;
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_CHANNEL_RDPECAM_H */ #endif /* FREERDP_CHANNEL_RDPECAM_H */

View File

@ -26,23 +26,27 @@
#define RDPGFX_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Graphics" #define RDPGFX_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Graphics"
/** #ifdef __cplusplus
* Common Data Types extern "C"
*/
typedef struct
{ {
UINT16 x; #endif
UINT16 y; /**
} RDPGFX_POINT16; * Common Data Types
*/
typedef struct typedef struct
{ {
BYTE B; UINT16 x;
BYTE G; UINT16 y;
BYTE R; } RDPGFX_POINT16;
BYTE XA;
} RDPGFX_COLOR32; typedef struct
{
BYTE B;
BYTE G;
BYTE R;
BYTE XA;
} RDPGFX_COLOR32;
#define GFX_PIXEL_FORMAT_XRGB_8888 0x20 #define GFX_PIXEL_FORMAT_XRGB_8888 0x20
#define GFX_PIXEL_FORMAT_ARGB_8888 0x21 #define GFX_PIXEL_FORMAT_ARGB_8888 0x21
@ -398,4 +402,7 @@ typedef struct
UINT16 timeDiffEDR; UINT16 timeDiffEDR;
} RDPGFX_QOE_FRAME_ACKNOWLEDGE_PDU; } RDPGFX_QOE_FRAME_ACKNOWLEDGE_PDU;
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_CHANNEL_RDPGFX_H */ #endif /* FREERDP_CHANNEL_RDPGFX_H */

View File

@ -24,18 +24,27 @@
#include <freerdp/client/geometry.h> #include <freerdp/client/geometry.h>
#include <freerdp/client/video.h> #include <freerdp/client/video.h>
typedef struct s_gdiVideoContext gdiVideoContext; #ifdef __cplusplus
extern "C"
{
#endif
FREERDP_API void gdi_video_geometry_init(rdpGdi* gdi, GeometryClientContext* geom); typedef struct s_gdiVideoContext gdiVideoContext;
FREERDP_API void gdi_video_geometry_uninit(rdpGdi* gdi, GeometryClientContext* geom);
FREERDP_API void gdi_video_control_init(rdpGdi* gdi, VideoClientContext* video); FREERDP_API void gdi_video_geometry_init(rdpGdi* gdi, GeometryClientContext* geom);
FREERDP_API void gdi_video_control_uninit(rdpGdi* gdi, VideoClientContext* video); FREERDP_API void gdi_video_geometry_uninit(rdpGdi* gdi, GeometryClientContext* geom);
FREERDP_API void gdi_video_data_init(rdpGdi* gdi, VideoClientContext* video); FREERDP_API void gdi_video_control_init(rdpGdi* gdi, VideoClientContext* video);
FREERDP_API void gdi_video_data_uninit(rdpGdi* gdi, VideoClientContext* context); FREERDP_API void gdi_video_control_uninit(rdpGdi* gdi, VideoClientContext* video);
FREERDP_API gdiVideoContext* gdi_video_new(rdpGdi* gdi); FREERDP_API void gdi_video_data_init(rdpGdi* gdi, VideoClientContext* video);
FREERDP_API void gdi_video_free(gdiVideoContext* context); FREERDP_API void gdi_video_data_uninit(rdpGdi* gdi, VideoClientContext* context);
FREERDP_API gdiVideoContext* gdi_video_new(rdpGdi* gdi);
FREERDP_API void gdi_video_free(gdiVideoContext* context);
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_GDI_VIDEO_H_ */ #endif /* FREERDP_GDI_VIDEO_H_ */

View File

@ -33,22 +33,29 @@
typedef struct s_scard_call_context scard_call_context; typedef struct s_scard_call_context scard_call_context;
FREERDP_API scard_call_context* smartcard_call_context_new(const rdpSettings* settings); #ifdef __cplusplus
FREERDP_API void smartcard_call_context_free(scard_call_context* ctx); extern "C"
FREERDP_API BOOL smartcard_call_context_signal_stop(scard_call_context* ctx, BOOL reset); {
FREERDP_API BOOL smartcard_call_context_add(scard_call_context* ctx, const char* name); #endif
FREERDP_API BOOL smartcard_call_cancel_context(scard_call_context* ctx, SCARDCONTEXT context); FREERDP_API scard_call_context* smartcard_call_context_new(const rdpSettings* settings);
FREERDP_API BOOL smartcard_call_cancel_all_context(scard_call_context* ctx); FREERDP_API void smartcard_call_context_free(scard_call_context* ctx);
FREERDP_API BOOL smartcard_call_release_context(scard_call_context* ctx, SCARDCONTEXT context); FREERDP_API BOOL smartcard_call_context_signal_stop(scard_call_context* ctx, BOOL reset);
FREERDP_API BOOL smartcard_call_is_configured(scard_call_context* ctx); FREERDP_API BOOL smartcard_call_context_add(scard_call_context* ctx, const char* name);
FREERDP_API BOOL smartcard_call_cancel_context(scard_call_context* ctx, SCARDCONTEXT context);
FREERDP_API BOOL smartcard_call_cancel_all_context(scard_call_context* ctx);
FREERDP_API BOOL smartcard_call_release_context(scard_call_context* ctx, SCARDCONTEXT context);
FREERDP_API BOOL smartcard_call_is_configured(scard_call_context* ctx);
FREERDP_API BOOL smarcard_call_set_callbacks(scard_call_context* ctx, void* userdata, FREERDP_API BOOL smarcard_call_set_callbacks(scard_call_context* ctx, void* userdata,
void* (*fn_new)(void*, SCARDCONTEXT), void* (*fn_new)(void*, SCARDCONTEXT),
void (*fn_free)(void*)); void (*fn_free)(void*));
FREERDP_API void* smartcard_call_get_context(scard_call_context* ctx, SCARDCONTEXT hContext); FREERDP_API void* smartcard_call_get_context(scard_call_context* ctx, SCARDCONTEXT hContext);
FREERDP_API LONG smartcard_irp_device_control_call(scard_call_context* context, wStream* out, FREERDP_API LONG smartcard_irp_device_control_call(scard_call_context* context, wStream* out,
UINT32* pIoStatus, UINT32* pIoStatus,
SMARTCARD_OPERATION* operation); SMARTCARD_OPERATION* operation);
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_CHANNEL_SMARTCARD_CALL_H */ #endif /* FREERDP_CHANNEL_SMARTCARD_CALL_H */

View File

@ -30,59 +30,67 @@
#include <freerdp/api.h> #include <freerdp/api.h>
#include <freerdp/channels/scard.h> #include <freerdp/channels/scard.h>
typedef struct #ifdef __cplusplus
extern "C"
{ {
union #endif
typedef struct
{ {
Handles_Call handles; union
Long_Call lng; {
Context_Call context; Handles_Call handles;
ContextAndStringA_Call contextAndStringA; Long_Call lng;
ContextAndStringW_Call contextAndStringW; Context_Call context;
ContextAndTwoStringA_Call contextAndTwoStringA; ContextAndStringA_Call contextAndStringA;
ContextAndTwoStringW_Call contextAndTwoStringW; ContextAndStringW_Call contextAndStringW;
EstablishContext_Call establishContext; ContextAndTwoStringA_Call contextAndTwoStringA;
ListReaderGroups_Call listReaderGroups; ContextAndTwoStringW_Call contextAndTwoStringW;
ListReaders_Call listReaders; EstablishContext_Call establishContext;
GetStatusChangeA_Call getStatusChangeA; ListReaderGroups_Call listReaderGroups;
LocateCardsA_Call locateCardsA; ListReaders_Call listReaders;
LocateCardsW_Call locateCardsW; GetStatusChangeA_Call getStatusChangeA;
LocateCards_ATRMask locateCardsATRMask; LocateCardsA_Call locateCardsA;
LocateCardsByATRA_Call locateCardsByATRA; LocateCardsW_Call locateCardsW;
LocateCardsByATRW_Call locateCardsByATRW; LocateCards_ATRMask locateCardsATRMask;
GetStatusChangeW_Call getStatusChangeW; LocateCardsByATRA_Call locateCardsByATRA;
GetReaderIcon_Call getReaderIcon; LocateCardsByATRW_Call locateCardsByATRW;
GetDeviceTypeId_Call getDeviceTypeId; GetStatusChangeW_Call getStatusChangeW;
Connect_Common_Call connect; GetReaderIcon_Call getReaderIcon;
ConnectA_Call connectA; GetDeviceTypeId_Call getDeviceTypeId;
ConnectW_Call connectW; Connect_Common_Call connect;
Reconnect_Call reconnect; ConnectA_Call connectA;
HCardAndDisposition_Call hCardAndDisposition; ConnectW_Call connectW;
State_Call state; Reconnect_Call reconnect;
Status_Call status; HCardAndDisposition_Call hCardAndDisposition;
SCardIO_Request scardIO; State_Call state;
Transmit_Call transmit; Status_Call status;
GetTransmitCount_Call getTransmitCount; SCardIO_Request scardIO;
Control_Call control; Transmit_Call transmit;
GetAttrib_Call getAttrib; GetTransmitCount_Call getTransmitCount;
SetAttrib_Call setAttrib; Control_Call control;
ReadCache_Common readCache; GetAttrib_Call getAttrib;
ReadCacheA_Call readCacheA; SetAttrib_Call setAttrib;
ReadCacheW_Call readCacheW; ReadCache_Common readCache;
WriteCache_Common writeCache; ReadCacheA_Call readCacheA;
WriteCacheA_Call writeCacheA; ReadCacheW_Call readCacheW;
WriteCacheW_Call writeCacheW; WriteCache_Common writeCache;
} call; WriteCacheA_Call writeCacheA;
UINT32 ioControlCode; WriteCacheW_Call writeCacheW;
UINT32 completionID; } call;
UINT32 deviceID; UINT32 ioControlCode;
SCARDCONTEXT hContext; UINT32 completionID;
SCARDHANDLE hCard; UINT32 deviceID;
const char* ioControlCodeName; SCARDCONTEXT hContext;
} SMARTCARD_OPERATION; SCARDHANDLE hCard;
const char* ioControlCodeName;
} SMARTCARD_OPERATION;
FREERDP_API LONG smartcard_irp_device_control_decode(wStream* s, UINT32 CompletionId, UINT32 FileId, FREERDP_API LONG smartcard_irp_device_control_decode(wStream* s, UINT32 CompletionId,
SMARTCARD_OPERATION* operation); UINT32 FileId,
FREERDP_API void smartcard_operation_free(SMARTCARD_OPERATION* op, BOOL allocated); SMARTCARD_OPERATION* operation);
FREERDP_API void smartcard_operation_free(SMARTCARD_OPERATION* op, BOOL allocated);
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_OPERATIONS_H */ #endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_OPERATIONS_H */

View File

@ -34,135 +34,153 @@
#define SMARTCARD_COMMON_TYPE_HEADER_LENGTH 8 #define SMARTCARD_COMMON_TYPE_HEADER_LENGTH 8
#define SMARTCARD_PRIVATE_TYPE_HEADER_LENGTH 8 #define SMARTCARD_PRIVATE_TYPE_HEADER_LENGTH 8
FREERDP_API LONG smartcard_pack_write_size_align(wStream* s, size_t size, UINT32 alignment); #ifdef __cplusplus
FREERDP_API LONG smartcard_unpack_read_size_align(wStream* s, size_t size, UINT32 alignment); extern "C"
{
#endif
FREERDP_API SCARDCONTEXT smartcard_scard_context_native_from_redir(REDIR_SCARDCONTEXT* context); FREERDP_API LONG smartcard_pack_write_size_align(wStream* s, size_t size, UINT32 alignment);
FREERDP_API void smartcard_scard_context_native_to_redir(REDIR_SCARDCONTEXT* context, FREERDP_API LONG smartcard_unpack_read_size_align(wStream* s, size_t size, UINT32 alignment);
SCARDCONTEXT hContext);
FREERDP_API SCARDHANDLE smartcard_scard_handle_native_from_redir(REDIR_SCARDHANDLE* handle); FREERDP_API SCARDCONTEXT smartcard_scard_context_native_from_redir(REDIR_SCARDCONTEXT* context);
FREERDP_API void smartcard_scard_handle_native_to_redir(REDIR_SCARDHANDLE* handle, FREERDP_API void smartcard_scard_context_native_to_redir(REDIR_SCARDCONTEXT* context,
SCARDHANDLE hCard); SCARDCONTEXT hContext);
FREERDP_API LONG smartcard_unpack_common_type_header(wStream* s); FREERDP_API SCARDHANDLE smartcard_scard_handle_native_from_redir(REDIR_SCARDHANDLE* handle);
FREERDP_API void smartcard_pack_common_type_header(wStream* s); FREERDP_API void smartcard_scard_handle_native_to_redir(REDIR_SCARDHANDLE* handle,
SCARDHANDLE hCard);
FREERDP_API LONG smartcard_unpack_private_type_header(wStream* s); FREERDP_API LONG smartcard_unpack_common_type_header(wStream* s);
FREERDP_API void smartcard_pack_private_type_header(wStream* s, UINT32 objectBufferLength); FREERDP_API void smartcard_pack_common_type_header(wStream* s);
FREERDP_API LONG smartcard_unpack_establish_context_call(wStream* s, EstablishContext_Call* call); FREERDP_API LONG smartcard_unpack_private_type_header(wStream* s);
FREERDP_API void smartcard_pack_private_type_header(wStream* s, UINT32 objectBufferLength);
FREERDP_API LONG smartcard_pack_establish_context_return(wStream* s, FREERDP_API LONG smartcard_unpack_establish_context_call(wStream* s,
const EstablishContext_Return* ret); EstablishContext_Call* call);
FREERDP_API LONG smartcard_unpack_context_call(wStream* s, Context_Call* call, const char* name); FREERDP_API LONG smartcard_pack_establish_context_return(wStream* s,
const EstablishContext_Return* ret);
FREERDP_API void smartcard_trace_long_return(const Long_Return* ret, const char* name); FREERDP_API LONG smartcard_unpack_context_call(wStream* s, Context_Call* call,
const char* name);
FREERDP_API LONG smartcard_unpack_list_reader_groups_call(wStream* s, ListReaderGroups_Call* call, FREERDP_API void smartcard_trace_long_return(const Long_Return* ret, const char* name);
BOOL unicode);
FREERDP_API LONG smartcard_pack_list_reader_groups_return(wStream* s, FREERDP_API LONG smartcard_unpack_list_reader_groups_call(wStream* s,
const ListReaderGroups_Return* ret, ListReaderGroups_Call* call,
BOOL unicode); BOOL unicode);
FREERDP_API LONG smartcard_unpack_list_readers_call(wStream* s, ListReaders_Call* call, FREERDP_API LONG smartcard_pack_list_reader_groups_return(wStream* s,
BOOL unicode); const ListReaderGroups_Return* ret,
BOOL unicode);
FREERDP_API LONG smartcard_pack_list_readers_return(wStream* s, const ListReaders_Return* ret, FREERDP_API LONG smartcard_unpack_list_readers_call(wStream* s, ListReaders_Call* call,
BOOL unicode); BOOL unicode);
FREERDP_API LONG smartcard_unpack_context_and_two_strings_a_call(wStream* s, FREERDP_API LONG smartcard_pack_list_readers_return(wStream* s, const ListReaders_Return* ret,
ContextAndTwoStringA_Call* call); BOOL unicode);
FREERDP_API LONG smartcard_unpack_context_and_two_strings_w_call(wStream* s, FREERDP_API LONG
ContextAndTwoStringW_Call* call); smartcard_unpack_context_and_two_strings_a_call(wStream* s, ContextAndTwoStringA_Call* call);
FREERDP_API LONG smartcard_unpack_context_and_string_a_call(wStream* s, FREERDP_API LONG
ContextAndStringA_Call* call); smartcard_unpack_context_and_two_strings_w_call(wStream* s, ContextAndTwoStringW_Call* call);
FREERDP_API LONG smartcard_unpack_context_and_string_w_call(wStream* s, FREERDP_API LONG smartcard_unpack_context_and_string_a_call(wStream* s,
ContextAndStringW_Call* call); ContextAndStringA_Call* call);
FREERDP_API LONG smartcard_unpack_locate_cards_a_call(wStream* s, LocateCardsA_Call* call); FREERDP_API LONG smartcard_unpack_context_and_string_w_call(wStream* s,
ContextAndStringW_Call* call);
FREERDP_API LONG smartcard_pack_locate_cards_return(wStream* s, const LocateCards_Return* ret); FREERDP_API LONG smartcard_unpack_locate_cards_a_call(wStream* s, LocateCardsA_Call* call);
FREERDP_API LONG smartcard_unpack_locate_cards_w_call(wStream* s, LocateCardsW_Call* call); FREERDP_API LONG smartcard_pack_locate_cards_return(wStream* s, const LocateCards_Return* ret);
FREERDP_API LONG smartcard_pack_locate_cards_w_return(wStream* s, const LocateCardsW_Call* ret); FREERDP_API LONG smartcard_unpack_locate_cards_w_call(wStream* s, LocateCardsW_Call* call);
FREERDP_API LONG smartcard_unpack_connect_a_call(wStream* s, ConnectA_Call* call); FREERDP_API LONG smartcard_pack_locate_cards_w_return(wStream* s, const LocateCardsW_Call* ret);
FREERDP_API LONG smartcard_unpack_connect_w_call(wStream* s, ConnectW_Call* call); FREERDP_API LONG smartcard_unpack_connect_a_call(wStream* s, ConnectA_Call* call);
FREERDP_API LONG smartcard_pack_connect_return(wStream* s, const Connect_Return* ret); FREERDP_API LONG smartcard_unpack_connect_w_call(wStream* s, ConnectW_Call* call);
FREERDP_API LONG smartcard_unpack_reconnect_call(wStream* s, Reconnect_Call* call); FREERDP_API LONG smartcard_pack_connect_return(wStream* s, const Connect_Return* ret);
FREERDP_API LONG smartcard_pack_reconnect_return(wStream* s, const Reconnect_Return* ret); FREERDP_API LONG smartcard_unpack_reconnect_call(wStream* s, Reconnect_Call* call);
FREERDP_API LONG smartcard_unpack_hcard_and_disposition_call(wStream* s, FREERDP_API LONG smartcard_pack_reconnect_return(wStream* s, const Reconnect_Return* ret);
HCardAndDisposition_Call* call,
const char* name);
FREERDP_API LONG smartcard_unpack_get_status_change_a_call(wStream* s, GetStatusChangeA_Call* call); FREERDP_API LONG smartcard_unpack_hcard_and_disposition_call(wStream* s,
HCardAndDisposition_Call* call,
const char* name);
FREERDP_API LONG smartcard_unpack_get_status_change_w_call(wStream* s, GetStatusChangeW_Call* call); FREERDP_API LONG smartcard_unpack_get_status_change_a_call(wStream* s,
GetStatusChangeA_Call* call);
FREERDP_API LONG smartcard_pack_get_status_change_return(wStream* s, FREERDP_API LONG smartcard_unpack_get_status_change_w_call(wStream* s,
const GetStatusChange_Return* ret, GetStatusChangeW_Call* call);
BOOL unicode);
FREERDP_API LONG smartcard_unpack_state_call(wStream* s, State_Call* call); FREERDP_API LONG smartcard_pack_get_status_change_return(wStream* s,
FREERDP_API LONG smartcard_pack_state_return(wStream* s, const State_Return* ret); const GetStatusChange_Return* ret,
BOOL unicode);
FREERDP_API LONG smartcard_unpack_status_call(wStream* s, Status_Call* call, BOOL unicode); FREERDP_API LONG smartcard_unpack_state_call(wStream* s, State_Call* call);
FREERDP_API LONG smartcard_pack_state_return(wStream* s, const State_Return* ret);
FREERDP_API LONG smartcard_pack_status_return(wStream* s, const Status_Return* ret, BOOL unicode); FREERDP_API LONG smartcard_unpack_status_call(wStream* s, Status_Call* call, BOOL unicode);
FREERDP_API LONG smartcard_unpack_get_attrib_call(wStream* s, GetAttrib_Call* call); FREERDP_API LONG smartcard_pack_status_return(wStream* s, const Status_Return* ret,
BOOL unicode);
FREERDP_API LONG smartcard_pack_get_attrib_return(wStream* s, const GetAttrib_Return* ret, FREERDP_API LONG smartcard_unpack_get_attrib_call(wStream* s, GetAttrib_Call* call);
DWORD dwAttrId, DWORD cbAttrCallLen);
FREERDP_API LONG smartcard_unpack_set_attrib_call(wStream* s, SetAttrib_Call* call); FREERDP_API LONG smartcard_pack_get_attrib_return(wStream* s, const GetAttrib_Return* ret,
DWORD dwAttrId, DWORD cbAttrCallLen);
FREERDP_API LONG smartcard_unpack_control_call(wStream* s, Control_Call* call); FREERDP_API LONG smartcard_unpack_set_attrib_call(wStream* s, SetAttrib_Call* call);
FREERDP_API LONG smartcard_pack_control_return(wStream* s, const Control_Return* ret); FREERDP_API LONG smartcard_unpack_control_call(wStream* s, Control_Call* call);
FREERDP_API LONG smartcard_unpack_transmit_call(wStream* s, Transmit_Call* call); FREERDP_API LONG smartcard_pack_control_return(wStream* s, const Control_Return* ret);
FREERDP_API LONG smartcard_pack_transmit_return(wStream* s, const Transmit_Return* ret); FREERDP_API LONG smartcard_unpack_transmit_call(wStream* s, Transmit_Call* call);
FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_a_call(wStream* s, FREERDP_API LONG smartcard_pack_transmit_return(wStream* s, const Transmit_Return* ret);
LocateCardsByATRA_Call* call);
FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_w_call(wStream* s, FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_a_call(wStream* s,
LocateCardsByATRW_Call* call); LocateCardsByATRA_Call* call);
FREERDP_API LONG smartcard_unpack_read_cache_a_call(wStream* s, ReadCacheA_Call* call); FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_w_call(wStream* s,
LocateCardsByATRW_Call* call);
FREERDP_API LONG smartcard_unpack_read_cache_w_call(wStream* s, ReadCacheW_Call* call); FREERDP_API LONG smartcard_unpack_read_cache_a_call(wStream* s, ReadCacheA_Call* call);
FREERDP_API LONG smartcard_pack_read_cache_return(wStream* s, const ReadCache_Return* ret); FREERDP_API LONG smartcard_unpack_read_cache_w_call(wStream* s, ReadCacheW_Call* call);
FREERDP_API LONG smartcard_unpack_write_cache_a_call(wStream* s, WriteCacheA_Call* call); FREERDP_API LONG smartcard_pack_read_cache_return(wStream* s, const ReadCache_Return* ret);
FREERDP_API LONG smartcard_unpack_write_cache_w_call(wStream* s, WriteCacheW_Call* call); FREERDP_API LONG smartcard_unpack_write_cache_a_call(wStream* s, WriteCacheA_Call* call);
FREERDP_API LONG smartcard_unpack_get_transmit_count_call(wStream* s, GetTransmitCount_Call* call); FREERDP_API LONG smartcard_unpack_write_cache_w_call(wStream* s, WriteCacheW_Call* call);
FREERDP_API LONG smartcard_pack_get_transmit_count_return(wStream* s,
const GetTransmitCount_Return* call);
FREERDP_API LONG smartcard_unpack_get_reader_icon_call(wStream* s, GetReaderIcon_Call* call); FREERDP_API LONG smartcard_unpack_get_transmit_count_call(wStream* s,
FREERDP_API LONG smartcard_pack_get_reader_icon_return(wStream* s, const GetReaderIcon_Return* ret); GetTransmitCount_Call* call);
FREERDP_API LONG smartcard_pack_get_transmit_count_return(wStream* s,
const GetTransmitCount_Return* call);
FREERDP_API LONG smartcard_unpack_get_device_type_id_call(wStream* s, GetDeviceTypeId_Call* call); FREERDP_API LONG smartcard_unpack_get_reader_icon_call(wStream* s, GetReaderIcon_Call* call);
FREERDP_API LONG smartcard_pack_get_reader_icon_return(wStream* s,
const GetReaderIcon_Return* ret);
FREERDP_API LONG smartcard_pack_device_type_id_return(wStream* s, FREERDP_API LONG smartcard_unpack_get_device_type_id_call(wStream* s,
const GetDeviceTypeId_Return* ret); GetDeviceTypeId_Call* call);
FREERDP_API LONG smartcard_pack_device_type_id_return(wStream* s,
const GetDeviceTypeId_Return* ret);
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H */ #endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H */

View File

@ -23,31 +23,40 @@
#include <freerdp/settings.h> #include <freerdp/settings.h>
#include <freerdp/crypto/certificate.h> #include <freerdp/crypto/certificate.h>
typedef struct SmartcardKeyInfo_st SmartcardKeyInfo; #ifdef __cplusplus
extern "C"
typedef struct SmartcardCertInfo_st
{ {
LPWSTR csp; #endif
LPWSTR reader;
rdpCertificate* certificate;
char* pkinitArgs;
UINT32 slotId;
char* keyName;
WCHAR* containerName;
char* upn;
char* userHint;
char* domainHint;
char* subject;
char* issuer;
BYTE sha1Hash[20];
SmartcardKeyInfo* key_info;
} SmartcardCertInfo;
FREERDP_API BOOL smartcard_enumerateCerts(const rdpSettings* settings, SmartcardCertInfo*** scCerts, typedef struct SmartcardKeyInfo_st SmartcardKeyInfo;
size_t* retCount, BOOL gateway);
FREERDP_API BOOL smartcard_getCert(const rdpContext* context, SmartcardCertInfo** cert,
BOOL gateway);
FREERDP_API void smartcardCertInfo_Free(SmartcardCertInfo* pscCert);
FREERDP_API void smartcardCertList_Free(SmartcardCertInfo** pscCert, size_t count);
typedef struct SmartcardCertInfo_st
{
LPWSTR csp;
LPWSTR reader;
rdpCertificate* certificate;
char* pkinitArgs;
UINT32 slotId;
char* keyName;
WCHAR* containerName;
char* upn;
char* userHint;
char* domainHint;
char* subject;
char* issuer;
BYTE sha1Hash[20];
SmartcardKeyInfo* key_info;
} SmartcardCertInfo;
FREERDP_API BOOL smartcard_enumerateCerts(const rdpSettings* settings,
SmartcardCertInfo*** scCerts, size_t* retCount,
BOOL gateway);
FREERDP_API BOOL smartcard_getCert(const rdpContext* context, SmartcardCertInfo** cert,
BOOL gateway);
FREERDP_API void smartcardCertInfo_Free(SmartcardCertInfo* pscCert);
FREERDP_API void smartcardCertList_Free(SmartcardCertInfo** pscCert, size_t count);
#ifdef __cplusplus
}
#endif
#endif /* LIBFREERDP_CORE_SMARTCARDLOGON_H */ #endif /* LIBFREERDP_CORE_SMARTCARDLOGON_H */