[freerdp,api] mark API functions [[nodiscard]]

Mark (most) of the API functions returning a value [[nodiscard]]. This
will assist application developers spotting bad return checks.
This commit is contained in:
Armin Novak
2026-02-16 10:54:24 +01:00
parent fac35c3abb
commit 20a24fe36e
76 changed files with 967 additions and 109 deletions

View File

@@ -56,19 +56,30 @@ extern "C"
LPCSTR pszType,
DWORD dwFlags);
WINPR_ATTR_NODISCARD
FREERDP_API LPSTR freerdp_get_library_install_path(void);
WINPR_ATTR_NODISCARD
FREERDP_API LPSTR freerdp_get_dynamic_addin_install_path(void);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_register_addin_provider(FREERDP_LOAD_CHANNEL_ADDIN_ENTRY_FN provider,
DWORD dwFlags);
WINPR_ATTR_NODISCARD
FREERDP_API FREERDP_LOAD_CHANNEL_ADDIN_ENTRY_FN freerdp_get_current_addin_provider(void);
WINPR_ATTR_NODISCARD
FREERDP_API PVIRTUALCHANNELENTRY freerdp_load_dynamic_addin(LPCSTR pszFileName, LPCSTR pszPath,
LPCSTR pszEntryName);
WINPR_ATTR_NODISCARD
FREERDP_API PVIRTUALCHANNELENTRY freerdp_load_dynamic_channel_addin_entry(LPCSTR pszName,
LPCSTR pszSubsystem,
LPCSTR pszType,
DWORD dwFlags);
WINPR_ATTR_NODISCARD
FREERDP_API PVIRTUALCHANNELENTRY freerdp_load_channel_addin_entry(LPCSTR pszName,
LPCSTR pszSubsystem,
LPCSTR pszType,

View File

@@ -53,18 +53,25 @@ extern "C"
const char* passStub,
size_t* pEncryptedSize);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_assistance_set_connection_string2(rdpAssistanceFile* file,
const char* string,
const char* password);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_assistance_parse_file_buffer(rdpAssistanceFile* file,
const char* buffer, size_t size,
const char* password);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_assistance_parse_file(rdpAssistanceFile* file, const char* name,
const char* password);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_assistance_populate_settings_from_assistance_file(
rdpAssistanceFile* file, rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_assistance_get_encrypted_pass_stub(rdpAssistanceFile* file,
const char** pwd, size_t* size);

View File

@@ -139,6 +139,8 @@ extern "C"
OnConnectTimeAutoDetectProgress; /* 28 */
UINT64 paddingB[32 - 29]; /* 29 */
};
WINPR_ATTR_NODISCARD
FREERDP_API rdpAutoDetect* autodetect_get(rdpContext* context);
#ifdef __cplusplus

View File

@@ -76,16 +76,24 @@ extern "C"
BYTE* data;
} PERSISTENT_CACHE_ENTRY;
WINPR_ATTR_NODISCARD
FREERDP_API int persistent_cache_get_version(rdpPersistentCache* persistent);
WINPR_ATTR_NODISCARD
FREERDP_API int persistent_cache_get_count(rdpPersistentCache* persistent);
WINPR_ATTR_NODISCARD
FREERDP_API int persistent_cache_read_entry(rdpPersistentCache* persistent,
PERSISTENT_CACHE_ENTRY* entry);
WINPR_ATTR_NODISCARD
FREERDP_API int persistent_cache_write_entry(rdpPersistentCache* persistent,
const PERSISTENT_CACHE_ENTRY* entry);
WINPR_ATTR_NODISCARD
FREERDP_API int persistent_cache_open(rdpPersistentCache* persistent, const char* filename,
BOOL write, UINT32 version);
FREERDP_API int persistent_cache_close(rdpPersistentCache* persistent);
FREERDP_API void persistent_cache_free(rdpPersistentCache* persistent);

View File

@@ -36,20 +36,27 @@ extern "C"
/** @since version 3.9.0 */
typedef BOOL (*freerdp_channel_handle_fkt_t)(rdpContext* context, void* userdata);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_channels_client_load(rdpChannels* channels, rdpSettings* settings,
PVIRTUALCHANNELENTRY entry, void* data);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_channels_client_load_ex(rdpChannels* channels, rdpSettings* settings,
PVIRTUALCHANNELENTRYEX entryEx, void* data);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_channels_load_plugin(rdpChannels* channels, rdpSettings* settings,
const char* name, void* data);
#if defined(WITH_FREERDP_DEPRECATED)
WINPR_DEPRECATED_VAR("Use freerdp_channels_get_event_handle",
FREERDP_API BOOL freerdp_channels_get_fds(
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_channels_get_fds(
rdpChannels* channels, freerdp* instance, void** read_fds,
int* read_count, void** write_fds, int* write_count));
#endif
FREERDP_API BOOL freerdp_channels_check_fds(rdpChannels* channels, freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API void* freerdp_channels_get_static_channel_interface(rdpChannels* channels,
const char* name);
@@ -73,6 +80,7 @@ extern "C"
*
* @return \b TRUE if successful, \b FALSE if any error occurs.
* @since version 3.9.0 */
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_channel_register(rdpChannels* channels, HANDLE handle,
freerdp_channel_handle_fkt_t fkt,
void* userdata);
@@ -87,15 +95,23 @@ extern "C"
* @since version 3.9.0 */
FREERDP_API BOOL freerdp_client_channel_unregister(rdpChannels* channels, HANDLE handle);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE freerdp_channels_get_event_handle(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_channels_process_pending_messages(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_channels_data(freerdp* instance, UINT16 channelId, const BYTE* data,
size_t dataSize, UINT32 flags, size_t totalSize);
WINPR_ATTR_NODISCARD
FREERDP_API UINT16 freerdp_channels_get_id_by_name(freerdp* instance, const char* channel_name);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_channels_get_name_by_id(freerdp* instance, UINT16 channelId);
WINPR_ATTR_NODISCARD
FREERDP_API const WtsApiFunctionTable* FreeRDP_InitWtsApi(void);
#ifdef __cplusplus

View File

@@ -63,12 +63,24 @@ extern "C"
FREERDP_API void WTSVirtualChannelManagerGetFileDescriptor(
HANDLE hServer, void** fds, int* fds_count));
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL WTSVirtualChannelManagerOpen(HANDLE hServer);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL WTSVirtualChannelManagerCheckFileDescriptor(HANDLE hServer);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL WTSVirtualChannelManagerCheckFileDescriptorEx(HANDLE hServer, BOOL autoOpen);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE WTSVirtualChannelManagerGetEventHandle(HANDLE hServer);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL WTSVirtualChannelManagerIsChannelJoined(HANDLE hServer, const char* name);
WINPR_ATTR_NODISCARD
FREERDP_API BYTE WTSVirtualChannelManagerGetDrdynvcState(HANDLE hServer);
FREERDP_API void WTSVirtualChannelManagerSetDVCCreationCallback(HANDLE hServer,
psDVCCreationStatusCallback cb,
void* userdata);
@@ -76,18 +88,38 @@ extern "C"
/**
* Extended FreeRDP WTS functions for channel handling
*/
WINPR_ATTR_NODISCARD
FREERDP_API UINT16 WTSChannelGetId(freerdp_peer* client, const char* channel_name);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL WTSIsChannelJoinedByName(freerdp_peer* client, const char* channel_name);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL WTSIsChannelJoinedById(freerdp_peer* client, UINT16 channel_id);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL WTSChannelSetHandleByName(freerdp_peer* client, const char* channel_name,
void* handle);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL WTSChannelSetHandleById(freerdp_peer* client, UINT16 channel_id, void* handle);
WINPR_ATTR_NODISCARD
FREERDP_API void* WTSChannelGetHandleByName(freerdp_peer* client, const char* channel_name);
WINPR_ATTR_NODISCARD
FREERDP_API void* WTSChannelGetHandleById(freerdp_peer* client, UINT16 channel_id);
WINPR_ATTR_NODISCARD
FREERDP_API const char* WTSChannelGetName(freerdp_peer* client, UINT16 channel_id);
WINPR_ATTR_NODISCARD
FREERDP_API char** WTSGetAcceptedChannelNames(freerdp_peer* client, size_t* count);
WINPR_ATTR_NODISCARD
FREERDP_API INT64 WTSChannelGetOptions(freerdp_peer* client, UINT16 channel_id);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 WTSChannelGetIdByHandle(HANDLE hChannelHandle);
#ifdef __cplusplus

View File

@@ -156,12 +156,18 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API rdpContext* freerdp_client_context_new(const RDP_CLIENT_ENTRY_POINTS* pEntryPoints);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_start(rdpContext* context);
FREERDP_API int freerdp_client_stop(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API freerdp* freerdp_client_get_instance(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE freerdp_client_get_thread(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_parse_command_line(rdpSettings* settings, int argc,
char** argv, BOOL allowUnknown);
@@ -178,36 +184,50 @@ extern "C"
* @return >=0 for success, <0 in case of parsing failures
* @since version 3.9.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_parse_command_line_ex(
rdpSettings* settings, int argc, char** argv, BOOL allowUnknown,
COMMAND_LINE_ARGUMENT_A* args, size_t count,
freerdp_command_line_handle_option_t handle_option, void* handle_userdata);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_parse_connection_file(rdpSettings* settings,
const char* filename);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_parse_connection_file_buffer(rdpSettings* settings,
const BYTE* buffer,
size_t size);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_write_connection_file(const rdpSettings* settings,
const char* filename,
BOOL unicode);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_parse_assistance_file(rdpSettings* settings, int argc,
char* argv[]);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL client_cli_authenticate_ex(freerdp* instance, char** username, char** password,
char** domain, rdp_auth_reason reason);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL client_cli_choose_smartcard(freerdp* instance, SmartcardCertInfo** cert_list,
DWORD count, DWORD* choice, BOOL gateway);
WINPR_ATTR_NODISCARD
FREERDP_API int client_cli_logon_error_info(freerdp* instance, UINT32 data, UINT32 type);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL client_cli_get_access_token(freerdp* instance, AccessTokenType tokenType,
char** token, size_t count, ...);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL client_common_get_access_token(freerdp* instance, const char* request,
char** token);
WINPR_ATTR_NODISCARD
FREERDP_API SSIZE_T client_common_retry_dialog(freerdp* instance, const char* what,
size_t current, void* userarg);
@@ -220,43 +240,49 @@ extern "C"
#if defined(WITH_FREERDP_DEPRECATED)
WINPR_DEPRECATED_VAR("Use client_cli_authenticate_ex",
FREERDP_API BOOL client_cli_authenticate(freerdp* instance,
char** username, char** password,
char** domain));
WINPR_ATTR_NODISCARD FREERDP_API BOOL client_cli_authenticate(
freerdp* instance, char** username, char** password, char** domain));
WINPR_DEPRECATED_VAR("Use client_cli_authenticate_ex",
FREERDP_API BOOL client_cli_gw_authenticate(
WINPR_ATTR_NODISCARD FREERDP_API BOOL client_cli_gw_authenticate(
freerdp* instance, char** username, char** password, char** domain));
WINPR_DEPRECATED_VAR("Use client_cli_verify_certificate_ex",
FREERDP_API DWORD client_cli_verify_certificate(
WINPR_ATTR_NODISCARD FREERDP_API DWORD client_cli_verify_certificate(
freerdp* instance, const char* common_name, const char* subject,
const char* issuer, const char* fingerprint, BOOL host_mismatch));
#endif
WINPR_ATTR_NODISCARD
FREERDP_API DWORD client_cli_verify_certificate_ex(freerdp* instance, const char* host,
UINT16 port, const char* common_name,
const char* subject, const char* issuer,
const char* fingerprint, DWORD flags);
#if defined(WITH_FREERDP_DEPRECATED)
WINPR_DEPRECATED_VAR("Use client_cli_verify_changed_certificate_ex",
FREERDP_API DWORD client_cli_verify_changed_certificate(
freerdp* instance, const char* common_name, const char* subject,
const char* issuer, const char* fingerprint, const char* old_subject,
const char* old_issuer, const char* old_fingerprint));
WINPR_DEPRECATED_VAR(
"Use client_cli_verify_changed_certificate_ex",
WINPR_ATTR_NODISCARD FREERDP_API DWORD client_cli_verify_changed_certificate(
freerdp* instance, const char* common_name, const char* subject, const char* issuer,
const char* fingerprint, const char* old_subject, const char* old_issuer,
const char* old_fingerprint));
#endif
WINPR_ATTR_NODISCARD
FREERDP_API DWORD client_cli_verify_changed_certificate_ex(
freerdp* instance, const char* host, UINT16 port, const char* common_name,
const char* subject, const char* issuer, const char* fingerprint, const char* old_subject,
const char* old_issuer, const char* old_fingerprint, DWORD flags);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL client_cli_present_gateway_message(freerdp* instance, UINT32 type,
BOOL isDisplayMandatory,
BOOL isConsentMandatory, size_t length,
const WCHAR* message);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL client_auto_reconnect(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL client_auto_reconnect_ex(freerdp* instance,
BOOL (*window_events)(freerdp* instance));
@@ -289,6 +315,7 @@ extern "C"
FREERDP_API BOOL freerdp_client_handle_pen(rdpClientContext* cctx, UINT32 flags, INT32 deviceid,
...);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_is_pen(rdpClientContext* cctx, INT32 deviceid);
FREERDP_API BOOL freerdp_client_pen_cancel_all(rdpClientContext* cctx);
@@ -302,6 +329,7 @@ extern "C"
*
* @return \b TRUE if relative mouse events are to be sent, \b FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_use_relative_mouse_events(rdpClientContext* cctx);
FREERDP_API BOOL freerdp_client_send_button_event(rdpClientContext* cctx, BOOL relative,
@@ -311,12 +339,16 @@ extern "C"
BOOL relative, UINT16 mflags,
INT32 x, INT32 y);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_common_stop(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_load_channels(freerdp* instance);
#if defined(CHANNEL_ENCOMSP_CLIENT)
FREERDP_API BOOL freerdp_client_encomsp_toggle_control(EncomspClientContext* encomsp);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_encomsp_set_control(EncomspClientContext* encomsp,
BOOL control);
#endif

View File

@@ -68,18 +68,25 @@ extern "C"
};
#if defined(WITH_CHANNELS)
WINPR_ATTR_NODISCARD
FREERDP_API void* freerdp_channels_client_find_static_entry(const char* name,
const char* identifier);
WINPR_ATTR_NODISCARD
FREERDP_API PVIRTUALCHANNELENTRY freerdp_channels_load_static_addin_entry(LPCSTR pszName,
LPCSTR pszSubsystem,
LPCSTR pszType,
DWORD dwFlags);
WINPR_ATTR_NODISCARD
FREERDP_API FREERDP_ADDIN** freerdp_channels_list_addins(LPCSTR lpName, LPCSTR lpSubsystem,
LPCSTR lpType, DWORD dwFlags);
FREERDP_API void freerdp_channels_addin_list_free(FREERDP_ADDIN** ppAddins);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_initialize_generic_dynvc_plugin(GENERIC_DYNVC_PLUGIN* plugin);
WINPR_ATTR_NODISCARD
FREERDP_API UINT freerdp_generic_DVCPluginEntry(
IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* logTag, const char* name,
size_t pluginSize, size_t channelCallbackSize,

View File

@@ -44,6 +44,7 @@ extern "C"
*
* \return \b TRUE if files can be pasted locally, \b FALSE if not (e.g. no FUSE, ...)
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL cliprdr_file_context_has_local_support(CliprdrFileContext* file);
/**! \brief sets state of local file paste support
@@ -54,25 +55,35 @@ extern "C"
*
* \return \b TRUE for success, \b FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL cliprdr_file_context_set_locally_available(CliprdrFileContext* file,
BOOL available);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL cliprdr_file_context_remote_set_flags(CliprdrFileContext* file, UINT32 flags);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 cliprdr_file_context_remote_get_flags(CliprdrFileContext* file);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 cliprdr_file_context_current_flags(CliprdrFileContext* file);
WINPR_ATTR_NODISCARD
FREERDP_API void* cliprdr_file_context_get_context(CliprdrFileContext* file);
FREERDP_API BOOL cliprdr_file_context_init(CliprdrFileContext* file,
CliprdrClientContext* cliprdr);
FREERDP_API BOOL cliprdr_file_context_uninit(CliprdrFileContext* file,
CliprdrClientContext* cliprdr);
FREERDP_API BOOL cliprdr_file_context_clear(CliprdrFileContext* file);
WINPR_ATTR_NODISCARD
FREERDP_API UINT
cliprdr_file_context_notify_new_server_format_list(CliprdrFileContext* file_context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT
cliprdr_file_context_notify_new_client_format_list(CliprdrFileContext* file_context);
@@ -95,6 +106,7 @@ extern "C"
*
* \return \b TRUE for success, \b FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL cliprdr_file_context_update_server_data(CliprdrFileContext* file,
wClipboard* clip, const void* data,
size_t size);

View File

@@ -52,6 +52,7 @@ extern "C"
*
* \return \b 0 in case of success, a negative number in case of failure.
*/
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
int argc, char** argv,
BOOL allowUnknown);
@@ -72,18 +73,24 @@ extern "C"
*
* \return \b 0 in case of success, a negative number in case of failure.
*/
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_parse_command_line_arguments_ex(
rdpSettings* settings, int argc, char** argv, BOOL allowUnknown,
COMMAND_LINE_ARGUMENT_A* args, size_t count,
freerdp_command_line_handle_option_t handle_option, void* handle_userdata);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_settings_command_line_status_print(rdpSettings* settings,
int status, int argc,
char** argv);
WINPR_ATTR_NODISCARD
FREERDP_API int
freerdp_client_settings_command_line_status_print_ex(rdpSettings* settings, int status,
int argc, char** argv,
const COMMAND_LINE_ARGUMENT_A* custom);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_load_addins(rdpChannels* channels, rdpSettings* settings);
/** Print a command line warning about the component being unmaintained.
@@ -116,6 +123,7 @@ extern "C"
* @since version 3.10.0
*/
FREERDP_API BOOL freerdp_client_print_version_ex(int argc, char** argv);
FREERDP_API BOOL freerdp_client_print_buildconfig(void);
/** @brief prints the buidconfiguration of the client including the binary name extracted from
@@ -129,21 +137,37 @@ extern "C"
* @since version 3.10.0
*/
FREERDP_API BOOL freerdp_client_print_buildconfig_ex(int argc, char** argv);
FREERDP_API BOOL freerdp_client_print_command_line_help(int argc, char** argv);
FREERDP_API BOOL freerdp_client_print_command_line_help_ex(
int argc, char** argv, const COMMAND_LINE_ARGUMENT_A* custom);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_parse_username(const char* username, char** user, char** domain);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_parse_hostname(const char* hostname, char** host, int* port);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_set_connection_type(rdpSettings* settings, UINT32 type);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_add_device_channel(rdpSettings* settings, size_t count,
const char* const* params);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_add_static_channel(rdpSettings* settings, size_t count,
const char* const* params);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_del_static_channel(rdpSettings* settings, const char* name);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_add_dynamic_channel(rdpSettings* settings, size_t count,
const char* const* params);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_del_dynamic_channel(rdpSettings* settings, const char* name);
#ifdef __cplusplus

View File

@@ -40,11 +40,18 @@ extern "C"
* set the context for the callback with this function. */
FREERDP_API void freerdp_client_rdp_file_set_callback_context(rdpFile* file, void* context);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_parse_rdp_file(rdpFile* file, const char* name);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_parse_rdp_file_ex(rdpFile* file, const char* name,
rdp_file_fkt_parse parse);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_parse_rdp_file_buffer(rdpFile* file, const BYTE* buffer,
size_t size);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_parse_rdp_file_buffer_ex(rdpFile* file, const BYTE* buffer,
size_t size, rdp_file_fkt_parse parse);
@@ -57,6 +64,7 @@ extern "C"
* @return \b TRUE for success, \b FALSE otherwise
* @version since 3.17.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_populate_settings_from_rdp_file_unchecked(
const rdpFile* file, rdpSettings* settings);
@@ -67,23 +75,35 @@ extern "C"
*
* @return \b TRUE for success, \b FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_populate_settings_from_rdp_file(const rdpFile* file,
rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_populate_rdp_file_from_settings(rdpFile* file,
const rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_write_rdp_file(const rdpFile* file, const char* name,
BOOL unicode);
WINPR_ATTR_NODISCARD
FREERDP_API size_t freerdp_client_write_rdp_file_buffer(const rdpFile* file, char* buffer,
size_t size);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_rdp_file_set_string_option(rdpFile* file, const char* name,
const char* value);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_client_rdp_file_get_string_option(const rdpFile* file,
const char* name);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_rdp_file_set_integer_option(rdpFile* file, const char* name,
int value);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_client_rdp_file_get_integer_option(const rdpFile* file,
const char* name);

View File

@@ -134,6 +134,7 @@ extern "C"
WINPR_ATTR_NODISCARD pcRailClientCaretBlinkRate ClientCaretBlinkRate;
};
WINPR_ATTR_NODISCARD
FREERDP_API UINT client_rail_server_start_cmd(RailClientContext* context);
#ifdef __cplusplus

View File

@@ -83,6 +83,7 @@ typedef FREERDP_RDPSND_DEVICE_ENTRY_POINTS* PFREERDP_RDPSND_DEVICE_ENTRY_POINTS;
typedef UINT(VCAPITYPE* PFREERDP_RDPSND_DEVICE_ENTRY)(
PFREERDP_RDPSND_DEVICE_ENTRY_POINTS pEntryPoints);
WINPR_ATTR_NODISCARD
FREERDP_API rdpContext* freerdp_rdpsnd_get_context(rdpsndPlugin* plugin);
#ifdef __cplusplus

View File

@@ -63,6 +63,7 @@ extern "C"
pcVideoDeleteSurface deleteSurface;
};
WINPR_ATTR_NODISCARD
FREERDP_API VideoSurface* VideoClient_CreateCommonContext(size_t size, UINT32 x, UINT32 y,
UINT32 w, UINT32 h);
FREERDP_API void VideoClient_DestroyCommonContext(VideoSurface* surface);

View File

@@ -203,18 +203,26 @@ extern "C"
* Audio Format Functions
*/
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 audio_format_compute_time_length(const AUDIO_FORMAT* format, size_t size);
WINPR_ATTR_NODISCARD
FREERDP_API const char* audio_format_get_tag_string(UINT16 wFormatTag);
FREERDP_API void audio_format_print(wLog* log, DWORD level, const AUDIO_FORMAT* format);
FREERDP_API void audio_formats_print(wLog* log, DWORD level, const AUDIO_FORMAT* formats,
UINT16 count);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL audio_format_read(wStream* s, AUDIO_FORMAT* format);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL audio_format_write(wStream* s, const AUDIO_FORMAT* format);
FREERDP_API BOOL audio_format_copy(const AUDIO_FORMAT* WINPR_RESTRICT srcFormat,
AUDIO_FORMAT* WINPR_RESTRICT dstFormat);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL audio_format_compatible(const AUDIO_FORMAT* with, const AUDIO_FORMAT* what);
FREERDP_API void audio_format_free(AUDIO_FORMAT* format);

View File

@@ -33,6 +33,7 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API SSIZE_T freerdp_bitmap_compress(const void* WINPR_RESTRICT srcData, UINT32 width,
UINT32 height, wStream* WINPR_RESTRICT s,
UINT32 bpp, UINT32 byte_limit, UINT32 start_line,

View File

@@ -33,11 +33,13 @@ extern "C"
typedef struct S_CLEAR_CONTEXT CLEAR_CONTEXT;
WINPR_ATTR_NODISCARD
FREERDP_API int clear_compress(CLEAR_CONTEXT* WINPR_RESTRICT clear,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
BYTE** WINPR_RESTRICT ppDstData,
UINT32* WINPR_RESTRICT pDstSize);
WINPR_ATTR_NODISCARD
FREERDP_API INT32 clear_decompress(CLEAR_CONTEXT* WINPR_RESTRICT clear,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
UINT32 nWidth, UINT32 nHeight, BYTE* WINPR_RESTRICT pDstData,
@@ -45,6 +47,7 @@ extern "C"
UINT32 nYDst, UINT32 nDstWidth, UINT32 nDstHeight,
const gdiPalette* WINPR_RESTRICT palette);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL clear_context_reset(CLEAR_CONTEXT* WINPR_RESTRICT clear);
FREERDP_API void clear_context_free(CLEAR_CONTEXT* WINPR_RESTRICT clear);

View File

@@ -117,21 +117,23 @@ typedef struct gdi_palette gdiPalette;
/* Compare two color formats but ignore differences in alpha channel.
*/
FREERDP_API DWORD FreeRDPAreColorFormatsEqualNoAlpha(DWORD first, DWORD second);
WINPR_ATTR_NODISCARD
FREERDP_API DWORD FreeRDPAreColorFormatsEqualNoAlpha(DWORD first, DWORD second);
/* Color Space Conversions: http://msdn.microsoft.com/en-us/library/ff566496/ */
/* Color Space Conversions: http://msdn.microsoft.com/en-us/library/ff566496/ */
/***
*
* Get a string representation of a color
*
* @param format The pixel color format
*
* @return A string representation of format
*/
/***
*
* Get a string representation of a color
*
* @param format The pixel color format
*
* @return A string representation of format
*/
#if defined(WITH_FREERDP_DEPRECATED)
#define GetColorFormatName(...) FreeRDPGetColorFormatName(__VA_ARGS__)
#endif
WINPR_ATTR_NODISCARD
FREERDP_API const char* FreeRDPGetColorFormatName(UINT32 format);
/** @brief convert a string to a \ref PIXEL_FORMAT
@@ -141,21 +143,22 @@ typedef struct gdi_palette gdiPalette;
* @return the \ref PIXEL_FORMAT value or \b 0 for failure
* @since version 3.18.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API uint32_t FreeRDPGetColorFromatFromName(const char* name);
/***
*
* Converts a pixel color in internal representation to its red, green, blue
* and alpha components.
*
* @param color The color in format internal representation
* @param format one of PIXEL_FORMAT_* color format defines
* @param _r red color value
* @param _g green color value
* @param _b blue color value
* @param _a alpha color value
* @param palette palette to use (only used for 8 bit color!)
*/
/***
*
* Converts a pixel color in internal representation to its red, green, blue
* and alpha components.
*
* @param color The color in format internal representation
* @param format one of PIXEL_FORMAT_* color format defines
* @param _r red color value
* @param _g green color value
* @param _b blue color value
* @param _a alpha color value
* @param palette palette to use (only used for 8 bit color!)
*/
#if defined(WITH_FREERDP_DEPRECATED)
#define SplitColor(...) FreeRDPSplitColor(__VA_ARGS__)
#endif
@@ -178,6 +181,7 @@ typedef struct gdi_palette gdiPalette;
#if defined(WITH_FREERDP_DEPRECATED)
#define GetColor(...) FreeRDPGetColor(__VA_ARGS__)
#endif
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 FreeRDPGetColor(UINT32 format, BYTE r, BYTE g, BYTE b, BYTE a);
/***
@@ -191,6 +195,7 @@ typedef struct gdi_palette gdiPalette;
#if defined(WITH_FREERDP_DEPRECATED)
#define GetBitsPerPixel(...) FreeRDPGetBitsPerPixel(__VA_ARGS__)
#endif
WINPR_ATTR_NODISCARD
static inline UINT32 FreeRDPGetBitsPerPixel(UINT32 format)
{
return (((format) >> 24) & 0x3F);
@@ -204,6 +209,7 @@ typedef struct gdi_palette gdiPalette;
#if defined(WITH_FREERDP_DEPRECATED)
#define ColorHasAlpha(...) FreeRDPColorHasAlpha(__VA_ARGS__)
#endif
WINPR_ATTR_NODISCARD
static inline BOOL FreeRDPColorHasAlpha(UINT32 format)
{
UINT32 alpha = (((format) >> 12) & 0x0F);
@@ -226,6 +232,7 @@ typedef struct gdi_palette gdiPalette;
#if defined(WITH_FREERDP_DEPRECATED)
#define ReadColor(...) FreeRDPReadColor(__VA_ARGS__)
#endif
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 FreeRDPReadColor(const BYTE* WINPR_RESTRICT src, UINT32 format);
/***
@@ -243,6 +250,7 @@ typedef struct gdi_palette gdiPalette;
#define WriteColorIgnoreAlpha(...) FreeRDPWriteColorIgnoreAlpha(__VA_ARGS__)
#endif
FREERDP_API BOOL FreeRDPWriteColor(BYTE* WINPR_RESTRICT dst, UINT32 format, UINT32 color);
FREERDP_API BOOL FreeRDPWriteColorIgnoreAlpha(BYTE* WINPR_RESTRICT dst, UINT32 format,
UINT32 color);
@@ -261,6 +269,7 @@ typedef struct gdi_palette gdiPalette;
#if defined(WITH_FREERDP_DEPRECATED)
#define ConvertColor(...) FreeRDPConvertColor(__VA_ARGS__)
#endif
WINPR_ATTR_NODISCARD
static inline UINT32 FreeRDPConvertColor(UINT32 color, UINT32 srcFormat, UINT32 dstFormat,
const gdiPalette* palette)
{
@@ -283,6 +292,7 @@ typedef struct gdi_palette gdiPalette;
#if defined(WITH_FREERDP_DEPRECATED)
#define GetBytesPerPixel(...) FreeRDPGetBytesPerPixel(__VA_ARGS__)
#endif
WINPR_ATTR_NODISCARD
static inline UINT32 FreeRDPGetBytesPerPixel(UINT32 format)
{
return (FreeRDPGetBitsPerPixel(format) + 7) / 8;
@@ -337,6 +347,7 @@ typedef struct gdi_palette gdiPalette;
*
* @return TRUE if success, FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_copy_from_monochrome(
BYTE* WINPR_RESTRICT pDstData, UINT32 DstFormat, UINT32 nDstStep, UINT32 nXDst,
UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE* WINPR_RESTRICT pSrcData,
@@ -361,6 +372,7 @@ typedef struct gdi_palette gdiPalette;
*
* @return TRUE if success, FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_copy_from_icon_data(
BYTE* WINPR_RESTRICT pDstData, UINT32 DstFormat, UINT32 nDstStep, UINT32 nXDst,
UINT32 nYDst, UINT16 nWidth, UINT16 nHeight, const BYTE* WINPR_RESTRICT bitsColor,
@@ -385,6 +397,7 @@ typedef struct gdi_palette gdiPalette;
*
* @return TRUE if success, FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_copy_from_pointer_data(
BYTE* WINPR_RESTRICT pDstData, UINT32 DstFormat, UINT32 nDstStep, UINT32 nXDst,
UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE* WINPR_RESTRICT xorMask,
@@ -411,6 +424,7 @@ typedef struct gdi_palette gdiPalette;
*
* @return TRUE if success, FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, UINT32 nDstStep,
UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight,
const BYTE* pSrcData, DWORD SrcFormat, UINT32 nSrcStep,
@@ -421,6 +435,7 @@ typedef struct gdi_palette gdiPalette;
* @brief Same as @ref freerdp_image_copy but only for overlapping source and destination
* @since version 3.6.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_copy_overlap(
BYTE* pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth,
UINT32 nHeight, const BYTE* pSrcData, DWORD SrcFormat, UINT32 nSrcStep, UINT32 nXSrc,
@@ -429,6 +444,7 @@ typedef struct gdi_palette gdiPalette;
/*** Same as @ref freerdp_image_copy but only for non overlapping source and destination
* @since version 3.6.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_copy_no_overlap(
BYTE* WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
UINT32 nWidth, UINT32 nHeight, const BYTE* WINPR_RESTRICT pSrcData, DWORD SrcFormat,
@@ -454,6 +470,7 @@ typedef struct gdi_palette gdiPalette;
*
* @return TRUE if success, FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_scale(BYTE* WINPR_RESTRICT pDstData, DWORD DstFormat,
UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
UINT32 nDstWidth, UINT32 nDstHeight,
@@ -475,6 +492,7 @@ typedef struct gdi_palette gdiPalette;
*
* @return TRUE if success, FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_fill(BYTE* WINPR_RESTRICT pDstData, DWORD DstFormat,
UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth,
UINT32 nHeight, UINT32 color);
@@ -499,6 +517,7 @@ typedef struct gdi_palette gdiPalette;
*
* @since version 3.13.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_image_fill_ex(BYTE* WINPR_RESTRICT pDstData, DWORD DstFormat,
UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
UINT32 nWidth, UINT32 nHeight, UINT32 color,

View File

@@ -38,17 +38,23 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API FREERDP_DSP_CONTEXT* freerdp_dsp_context_new(BOOL encoder);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_dsp_supports_format(const AUDIO_FORMAT* WINPR_RESTRICT format,
BOOL encode);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_dsp_encode(FREERDP_DSP_CONTEXT* WINPR_RESTRICT context,
const AUDIO_FORMAT* WINPR_RESTRICT srcFormat,
const BYTE* WINPR_RESTRICT data, size_t length,
wStream* WINPR_RESTRICT out);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_dsp_decode(FREERDP_DSP_CONTEXT* WINPR_RESTRICT context,
const AUDIO_FORMAT* WINPR_RESTRICT srcFormat,
const BYTE* WINPR_RESTRICT data, size_t length,
wStream* WINPR_RESTRICT out);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_dsp_context_reset(FREERDP_DSP_CONTEXT* WINPR_RESTRICT context,
const AUDIO_FORMAT* WINPR_RESTRICT targetFormat,
UINT32 FramesPerPacket);

View File

@@ -67,10 +67,14 @@ extern "C"
FREERDP_API void free_h264_metablock(RDPGFX_H264_METABLOCK* meta);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL h264_context_set_option(H264_CONTEXT* h264, H264_CONTEXT_OPTION option,
UINT32 value);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 h264_context_get_option(H264_CONTEXT* h264, H264_CONTEXT_OPTION option);
WINPR_ATTR_NODISCARD
FREERDP_API INT32 avc420_compress(H264_CONTEXT* h264, const BYTE* pSrcData, DWORD SrcFormat,
UINT32 nSrcStep, UINT32 nSrcWidth, UINT32 nSrcHeight,
const RECTANGLE_16* regionRect, BYTE** ppDstData,
@@ -87,6 +91,7 @@ extern "C"
* @return \b >= 0 for success, \b <0 for an error
* @since version 3.6.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API INT32 h264_get_yuv_buffer(H264_CONTEXT* h264, UINT32 nSrcStride, UINT32 nSrcWidth,
UINT32 nSrcHeight, BYTE* YUVData[3], UINT32 stride[3]);
@@ -99,13 +104,16 @@ extern "C"
* @return \b >= 0 for success, \b <0 for an error
* @since version 3.6.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API INT32 h264_compress(H264_CONTEXT* h264, BYTE** ppDstData, UINT32* pDstSize);
WINPR_ATTR_NODISCARD
FREERDP_API INT32 avc420_decompress(H264_CONTEXT* h264, const BYTE* pSrcData, UINT32 SrcSize,
BYTE* pDstData, DWORD DstFormat, UINT32 nDstStep,
UINT32 nDstWidth, UINT32 nDstHeight,
const RECTANGLE_16* regionRects, UINT32 numRegionRect);
WINPR_ATTR_NODISCARD
FREERDP_API INT32 avc444_compress(H264_CONTEXT* h264, const BYTE* pSrcData, DWORD SrcFormat,
UINT32 nSrcStep, UINT32 nSrcWidth, UINT32 nSrcHeight,
BYTE version, const RECTANGLE_16* regionRect, BYTE* op,
@@ -113,6 +121,7 @@ extern "C"
UINT32* pAuxDstSize, RDPGFX_H264_METABLOCK* meta,
RDPGFX_H264_METABLOCK* auxMeta);
WINPR_ATTR_NODISCARD
FREERDP_API INT32 avc444_decompress(H264_CONTEXT* h264, BYTE op,
const RECTANGLE_16* regionRects, UINT32 numRegionRect,
const BYTE* pSrcData, UINT32 SrcSize,
@@ -121,6 +130,7 @@ extern "C"
DWORD DstFormat, UINT32 nDstStep, UINT32 nDstWidth,
UINT32 nDstHeight, UINT32 codecId);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL h264_context_reset(H264_CONTEXT* h264, UINT32 width, UINT32 height);
FREERDP_API void h264_context_free(H264_CONTEXT* h264);

View File

@@ -33,6 +33,7 @@ extern "C"
typedef struct S_BITMAP_INTERLEAVED_CONTEXT BITMAP_INTERLEAVED_CONTEXT;
WINPR_ATTR_NODISCARD
FREERDP_API BOOL interleaved_decompress(BITMAP_INTERLEAVED_CONTEXT* WINPR_RESTRICT interleaved,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
UINT32 nSrcWidth, UINT32 nSrcHeight, UINT32 bpp,
@@ -41,6 +42,7 @@ extern "C"
UINT32 nDstWidth, UINT32 nDstHeight,
const gdiPalette* WINPR_RESTRICT palette);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL interleaved_compress(BITMAP_INTERLEAVED_CONTEXT* WINPR_RESTRICT interleaved,
BYTE* WINPR_RESTRICT pDstData,
UINT32* WINPR_RESTRICT pDstSize, UINT32 nWidth,
@@ -49,6 +51,7 @@ extern "C"
UINT32 nYSrc, const gdiPalette* WINPR_RESTRICT palette,
UINT32 bpp);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL
bitmap_interleaved_context_reset(BITMAP_INTERLEAVED_CONTEXT* WINPR_RESTRICT interleaved);

View File

@@ -28,6 +28,7 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL jpeg_decompress(const BYTE* input, BYTE* output, int width, int height,
int size, int bpp);

View File

@@ -48,8 +48,8 @@ extern "C"
#if defined(WITH_FREERDP_DEPRECATED)
WINPR_DEPRECATED_VAR("Use nsc_context_set_parameters(NSC_COLOR_FORMAT)",
FREERDP_API BOOL nsc_context_set_pixel_format(NSC_CONTEXT* context,
UINT32 pixel_format));
WINPR_ATTR_NODISCARD FREERDP_API BOOL nsc_context_set_pixel_format(
NSC_CONTEXT* context, UINT32 pixel_format));
#endif
/** @brief Set a \ref NSC_PARAMETER for a \ref NSC_CONTEXT
@@ -60,6 +60,7 @@ extern "C"
*
* @return \b TRUE if successful, \b FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL nsc_context_set_parameters(NSC_CONTEXT* WINPR_RESTRICT context,
NSC_PARAMETER what, UINT32 value);
@@ -84,6 +85,7 @@ extern "C"
*
* @return \b TRUE in case of success, \b FALSE for any error. Check WLog for details.
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL nsc_process_message(NSC_CONTEXT* WINPR_RESTRICT context, UINT16 bpp,
UINT32 width, UINT32 height, const BYTE* data,
UINT32 length, BYTE* WINPR_RESTRICT pDstData,
@@ -102,6 +104,7 @@ extern "C"
*
* @bug Versions < 3.23.0 do not support \b 0 for scanlines and abort.
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL nsc_compose_message(NSC_CONTEXT* WINPR_RESTRICT context,
wStream* WINPR_RESTRICT s,
const BYTE* WINPR_RESTRICT bmpdata, UINT32 width,
@@ -111,11 +114,10 @@ extern "C"
WINPR_DEPRECATED_VAR(
"[since 3.23.0] deprecated, insecure! missing length checks. use nsc_process_message",
FREERDP_API BOOL nsc_decompose_message(NSC_CONTEXT* WINPR_RESTRICT context,
wStream* WINPR_RESTRICT s,
BYTE* WINPR_RESTRICT bmpdata, UINT32 x, UINT32 y,
UINT32 width, UINT32 height, UINT32 rowstride,
UINT32 format, UINT32 flip));
WINPR_ATTR_NODISCARD FREERDP_API BOOL
nsc_decompose_message(NSC_CONTEXT* WINPR_RESTRICT context, wStream* WINPR_RESTRICT s,
BYTE* WINPR_RESTRICT bmpdata, UINT32 x, UINT32 y, UINT32 width,
UINT32 height, UINT32 rowstride, UINT32 format, UINT32 flip));
#endif
/** @brief This function resets a \ref NSC_CONTEXT to a new resolution
@@ -126,6 +128,7 @@ extern "C"
*
* @return \b TRUE if successful, \b FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL nsc_context_reset(NSC_CONTEXT* WINPR_RESTRICT context, UINT32 width,
UINT32 height);

View File

@@ -41,12 +41,14 @@ extern "C"
typedef struct S_BITMAP_PLANAR_CONTEXT BITMAP_PLANAR_CONTEXT;
WINPR_ATTR_NODISCARD
FREERDP_API BYTE* freerdp_bitmap_compress_planar(BITMAP_PLANAR_CONTEXT* WINPR_RESTRICT context,
const BYTE* WINPR_RESTRICT data, UINT32 format,
UINT32 width, UINT32 height, UINT32 scanline,
BYTE* WINPR_RESTRICT dstData,
UINT32* WINPR_RESTRICT pDstSize);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_bitmap_planar_context_reset(
BITMAP_PLANAR_CONTEXT* WINPR_RESTRICT context, UINT32 width, UINT32 height);
@@ -64,7 +66,7 @@ extern "C"
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
WINPR_DEPRECATED_VAR("use freerdp_bitmap_decompress_planar instead",
FREERDP_API BOOL planar_decompress(
WINPR_ATTR_NODISCARD FREERDP_API BOOL planar_decompress(
BITMAP_PLANAR_CONTEXT* WINPR_RESTRICT planar,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize, UINT32 nSrcWidth,
UINT32 nSrcHeight, BYTE* WINPR_RESTRICT pDstData, UINT32 DstFormat,
@@ -72,6 +74,7 @@ extern "C"
UINT32 nDstHeight, BOOL vFlip));
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_bitmap_decompress_planar(
BITMAP_PLANAR_CONTEXT* WINPR_RESTRICT planar, const BYTE* WINPR_RESTRICT pSrcData,
UINT32 SrcSize, UINT32 nSrcWidth, UINT32 nSrcHeight, BYTE* WINPR_RESTRICT pDstData,

View File

@@ -37,6 +37,7 @@ extern "C"
typedef struct S_PROGRESSIVE_CONTEXT PROGRESSIVE_CONTEXT;
WINPR_ATTR_NODISCARD
FREERDP_API int progressive_compress(PROGRESSIVE_CONTEXT* WINPR_RESTRICT progressive,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
UINT32 SrcFormat, UINT32 Width, UINT32 Height,
@@ -45,6 +46,7 @@ extern "C"
BYTE** WINPR_RESTRICT ppDstData,
UINT32* WINPR_RESTRICT pDstSize);
WINPR_ATTR_NODISCARD
FREERDP_API INT32 progressive_decompress(PROGRESSIVE_CONTEXT* WINPR_RESTRICT progressive,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
BYTE* WINPR_RESTRICT pDstData, UINT32 DstFormat,
@@ -52,13 +54,16 @@ extern "C"
REGION16* WINPR_RESTRICT invalidRegion,
UINT16 surfaceId, UINT32 frameId);
WINPR_ATTR_NODISCARD
FREERDP_API INT32
progressive_create_surface_context(PROGRESSIVE_CONTEXT* WINPR_RESTRICT progressive,
UINT16 surfaceId, UINT32 width, UINT32 height);
FREERDP_API int
progressive_delete_surface_context(PROGRESSIVE_CONTEXT* WINPR_RESTRICT progressive,
UINT16 surfaceId);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL progressive_context_reset(PROGRESSIVE_CONTEXT* WINPR_RESTRICT progressive);
FREERDP_API void progressive_context_free(PROGRESSIVE_CONTEXT* progressive);
@@ -81,6 +86,7 @@ extern "C"
* @since version 3.0.0
* @return \b TRUE in case of success, \b FALSE for any error
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL progressive_rfx_write_message_progressive_simple(
PROGRESSIVE_CONTEXT* WINPR_RESTRICT progressive, wStream* WINPR_RESTRICT s,
const RFX_MESSAGE* WINPR_RESTRICT msg);

View File

@@ -45,6 +45,7 @@ extern "C"
* @param r2 second rectangle
* @return if the two rectangles are equal
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rectangles_equal(const RECTANGLE_16* r1, const RECTANGLE_16* r2);
/** computes if two rectangles intersect
@@ -52,6 +53,7 @@ extern "C"
* @param r2 second rectangle
* @return if the two rectangles intersect
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rectangles_intersects(const RECTANGLE_16* r1, const RECTANGLE_16* r2);
/** computes the intersection of two rectangles
@@ -60,6 +62,7 @@ extern "C"
* @param dst resulting intersection
* @return if the two rectangles intersect
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rectangles_intersection(const RECTANGLE_16* r1, const RECTANGLE_16* r2,
RECTANGLE_16* dst);
@@ -69,6 +72,7 @@ extern "C"
FREERDP_API void region16_init(REGION16* region);
/** @return the number of rectangles of this region16 */
WINPR_ATTR_NODISCARD
FREERDP_API int region16_n_rects(const REGION16* region);
/** returns a pointer to rectangles and the number of rectangles in this region.
@@ -77,21 +81,25 @@ extern "C"
* @param nbRects if non-NULL returns the number of rectangles
* @return a pointer on the rectangles
*/
WINPR_ATTR_NODISCARD
FREERDP_API const RECTANGLE_16* region16_rects(const REGION16* region, UINT32* nbRects);
/** @return the extents rectangle of this region */
WINPR_ATTR_NODISCARD
FREERDP_API const RECTANGLE_16* region16_extents(const REGION16* region);
/** returns if the rectangle is empty
* @param rect the rectangle to check
* @return if the rectangle is empty
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rectangle_is_empty(const RECTANGLE_16* rect);
/** returns if the region is empty
* @param region the region to check
* @return if the region is empty
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL region16_is_empty(const REGION16* region);
/** clears the region, the region is reset to a (0,0,0,0) region
@@ -109,6 +117,7 @@ extern "C"
* @param src source region
* @return if the operation was successful (false meaning out-of-memory)
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL region16_copy(REGION16* dst, const REGION16* src);
/** adds a rectangle in src and stores the resulting region in dst
@@ -117,6 +126,7 @@ extern "C"
* @param rect the rectangle to add
* @return if the operation was successful (false meaning out-of-memory)
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL region16_union_rect(REGION16* dst, const REGION16* src,
const RECTANGLE_16* rect);
@@ -125,6 +135,7 @@ extern "C"
* @param arg2 the rectangle
* @return if region and rectangle intersect
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL region16_intersects_rect(const REGION16* src, const RECTANGLE_16* arg2);
/** computes the intersection between a region and a rectangle
@@ -133,6 +144,7 @@ extern "C"
* @param arg2 the rectangle that intersects
* @return if the operation was successful (false meaning out-of-memory)
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL region16_intersect_rect(REGION16* dst, const REGION16* src,
const RECTANGLE_16* arg2);

View File

@@ -75,27 +75,38 @@ extern "C"
typedef struct S_RFX_MESSAGE RFX_MESSAGE;
typedef struct S_RFX_CONTEXT RFX_CONTEXT;
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rfx_process_message(RFX_CONTEXT* WINPR_RESTRICT context,
const BYTE* WINPR_RESTRICT data, UINT32 length,
UINT32 left, UINT32 top, BYTE* WINPR_RESTRICT dst,
UINT32 dstFormat, UINT32 dstStride, UINT32 dstHeight,
REGION16* WINPR_RESTRICT invalidRegion);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 rfx_message_get_frame_idx(const RFX_MESSAGE* WINPR_RESTRICT message);
WINPR_ATTR_NODISCARD
FREERDP_API const UINT32* rfx_message_get_quants(const RFX_MESSAGE* WINPR_RESTRICT message,
UINT16* WINPR_RESTRICT numQuantVals);
WINPR_ATTR_NODISCARD
FREERDP_API const RFX_TILE** rfx_message_get_tiles(const RFX_MESSAGE* WINPR_RESTRICT message,
UINT16* WINPR_RESTRICT numTiles);
WINPR_ATTR_NODISCARD
FREERDP_API UINT16 rfx_message_get_tile_count(const RFX_MESSAGE* WINPR_RESTRICT message);
WINPR_ATTR_NODISCARD
FREERDP_API const RFX_RECT* rfx_message_get_rects(const RFX_MESSAGE* WINPR_RESTRICT message,
UINT16* WINPR_RESTRICT numRects);
WINPR_ATTR_NODISCARD
FREERDP_API UINT16 rfx_message_get_rect_count(const RFX_MESSAGE* WINPR_RESTRICT message);
FREERDP_API void rfx_message_free(RFX_CONTEXT* WINPR_RESTRICT context,
RFX_MESSAGE* WINPR_RESTRICT message);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rfx_compose_message(RFX_CONTEXT* WINPR_RESTRICT context,
wStream* WINPR_RESTRICT s,
const RFX_RECT* WINPR_RESTRICT rects, size_t num_rects,
@@ -119,9 +130,11 @@ extern "C"
UINT32 height, UINT32 scanline, size_t* WINPR_RESTRICT numMessages,
size_t maxDataSize);
WINPR_ATTR_NODISCARD
FREERDP_API const RFX_MESSAGE*
rfx_message_list_get(const RFX_MESSAGE_LIST* WINPR_RESTRICT messages, size_t idx);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rfx_write_message(RFX_CONTEXT* WINPR_RESTRICT context,
wStream* WINPR_RESTRICT s,
const RFX_MESSAGE* WINPR_RESTRICT message);
@@ -136,9 +149,11 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API RFX_CONTEXT* rfx_context_new(BOOL encoder);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rfx_context_reset(RFX_CONTEXT* WINPR_RESTRICT context, UINT32 width,
UINT32 height);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rfx_context_set_mode(RFX_CONTEXT* WINPR_RESTRICT context, RLGR_MODE mode);
/** Getter for RFX mode
@@ -148,6 +163,7 @@ extern "C"
*
* @return The RFX mode that is currently in use
*/
WINPR_ATTR_NODISCARD
FREERDP_API RLGR_MODE rfx_context_get_mode(RFX_CONTEXT* WINPR_RESTRICT context);
FREERDP_API void rfx_context_set_pixel_format(RFX_CONTEXT* WINPR_RESTRICT context,
@@ -160,6 +176,7 @@ extern "C"
*
* @return The RFX pixel format that is currently in use
*/
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 rfx_context_get_pixel_format(RFX_CONTEXT* WINPR_RESTRICT context);
FREERDP_API void rfx_context_set_palette(RFX_CONTEXT* WINPR_RESTRICT context,
@@ -172,8 +189,10 @@ extern "C"
*
* @return The RFX palette that is currently in use or \b NULL
*/
WINPR_ATTR_NODISCARD
FREERDP_API const BYTE* rfx_context_get_palette(RFX_CONTEXT* WINPR_RESTRICT context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 rfx_context_get_frame_idx(const RFX_CONTEXT* WINPR_RESTRICT context);
/** Write a RFX message as simple progressive message to a stream.
@@ -185,6 +204,7 @@ extern "C"
* @since version 3.0.0
* @return \b TRUE in case of success, \b FALSE for any error
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rfx_write_message_progressive_simple(RFX_CONTEXT* WINPR_RESTRICT rfx,
wStream* WINPR_RESTRICT s,
const RFX_MESSAGE* WINPR_RESTRICT msg);

View File

@@ -31,10 +31,13 @@ extern "C"
typedef struct S_YUV_CONTEXT YUV_CONTEXT;
WINPR_ATTR_NODISCARD
FREERDP_API BOOL yuv420_context_decode(
YUV_CONTEXT* WINPR_RESTRICT context, const BYTE* WINPR_RESTRICT pYUVData[3],
const UINT32 iStride[3], UINT32 yuvHeight, DWORD DstFormat, BYTE* WINPR_RESTRICT dest,
UINT32 nDstStep, const RECTANGLE_16* WINPR_RESTRICT regionRects, UINT32 numRegionRects);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL yuv420_context_encode(YUV_CONTEXT* WINPR_RESTRICT context,
const BYTE* WINPR_RESTRICT rgbData, UINT32 srcStep,
UINT32 srcFormat, const UINT32 iStride[3],
@@ -42,11 +45,14 @@ extern "C"
const RECTANGLE_16* WINPR_RESTRICT regionRects,
UINT32 numRegionRects);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL yuv444_context_decode(
YUV_CONTEXT* WINPR_RESTRICT context, BYTE type, const BYTE* WINPR_RESTRICT pYUVData[3],
const UINT32 iStride[3], UINT32 srcYuvHeight, BYTE* WINPR_RESTRICT pYUVDstData[3],
const UINT32 iDstStride[3], DWORD DstFormat, BYTE* WINPR_RESTRICT dest, UINT32 nDstStep,
const RECTANGLE_16* WINPR_RESTRICT regionRects, UINT32 numRegionRects);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL yuv444_context_encode(YUV_CONTEXT* WINPR_RESTRICT context, BYTE version,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 nSrcStep,
UINT32 SrcFormat, const UINT32 iStride[3],
@@ -55,6 +61,7 @@ extern "C"
const RECTANGLE_16* WINPR_RESTRICT regionRects,
UINT32 numRegionRects);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL yuv_context_reset(YUV_CONTEXT* WINPR_RESTRICT context, UINT32 width,
UINT32 height);

View File

@@ -39,14 +39,19 @@ extern "C"
typedef struct S_ZGFX_CONTEXT ZGFX_CONTEXT;
WINPR_ATTR_NODISCARD
FREERDP_API int zgfx_decompress(ZGFX_CONTEXT* WINPR_RESTRICT zgfx,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
BYTE** WINPR_RESTRICT ppDstData,
UINT32* WINPR_RESTRICT pDstSize, UINT32 flags);
WINPR_ATTR_NODISCARD
FREERDP_API int zgfx_compress(ZGFX_CONTEXT* WINPR_RESTRICT zgfx,
const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
BYTE** WINPR_RESTRICT ppDstData, UINT32* WINPR_RESTRICT pDstSize,
UINT32* WINPR_RESTRICT pFlags);
WINPR_ATTR_NODISCARD
FREERDP_API int zgfx_compress_to_stream(ZGFX_CONTEXT* WINPR_RESTRICT zgfx,
wStream* WINPR_RESTRICT sDst,
const BYTE* WINPR_RESTRICT pUncompressed,

View File

@@ -66,8 +66,11 @@ extern "C"
};
typedef struct rdp_codecs rdpCodecs;
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_codecs_prepare(rdpCodecs* codecs, UINT32 flags, UINT32 width,
UINT32 height);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_client_codecs_reset(rdpCodecs* codecs, UINT32 flags, UINT32 width,
UINT32 height);
@@ -102,6 +105,7 @@ extern "C"
* @return The name of the codecid
* @since version 3.18.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_codec_id_to_str(UINT32 id);
#ifdef __cplusplus

View File

@@ -57,48 +57,104 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_length(wStream* s, size_t* length);
FREERDP_API size_t ber_write_length(wStream* s, size_t length);
// NOLINTNEXTLINE(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
WINPR_ATTR_NODISCARD
FREERDP_API size_t _ber_sizeof_length(size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_universal_tag(wStream* s, BYTE tag, BOOL pc);
FREERDP_API size_t ber_write_universal_tag(wStream* s, BYTE tag, BOOL pc);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_application_tag(wStream* s, BYTE tag, size_t* length);
FREERDP_API void ber_write_application_tag(wStream* s, BYTE tag, size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_enumerated(wStream* s, BYTE* enumerated, BYTE count);
FREERDP_API void ber_write_enumerated(wStream* s, BYTE enumerated, BYTE count);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_contextual_tag(wStream* s, BYTE tag, size_t* length, BOOL pc);
FREERDP_API size_t ber_write_contextual_tag(wStream* s, BYTE tag, size_t length, BOOL pc);
WINPR_ATTR_NODISCARD
FREERDP_API size_t ber_sizeof_contextual_tag(size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_sequence_tag(wStream* s, size_t* length);
FREERDP_API size_t ber_write_sequence_tag(wStream* s, size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API size_t ber_sizeof_sequence(size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API size_t ber_sizeof_sequence_tag(size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_bit_string(wStream* s, size_t* length, BYTE* padding);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_octet_string_tag(wStream* s, size_t* length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_octet_string(wStream* s, BYTE** content, size_t* length);
FREERDP_API size_t ber_write_octet_string_tag(wStream* s, size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API size_t ber_sizeof_octet_string(size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API size_t ber_sizeof_contextual_octet_string(size_t length);
FREERDP_API size_t ber_write_char_to_unicode_octet_string(wStream* s, const char* str);
FREERDP_API size_t ber_write_contextual_char_to_unicode_octet_string(wStream* s, BYTE tag,
const char* oct_str);
FREERDP_API size_t ber_write_octet_string(wStream* s, const BYTE* oct_str, size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_char_from_unicode_octet_string(wStream* s, char** str);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_unicode_octet_string(wStream* s, LPWSTR* str);
FREERDP_API size_t ber_write_contextual_octet_string(wStream* s, BYTE tag, const BYTE* oct_str,
size_t length);
FREERDP_API size_t ber_write_contextual_unicode_octet_string(wStream* s, BYTE tag, LPWSTR str);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_BOOL(wStream* s, BOOL* value);
FREERDP_API void ber_write_BOOL(wStream* s, BOOL value);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_integer(wStream* s, UINT32* value);
FREERDP_API size_t ber_write_integer(wStream* s, UINT32 value);
FREERDP_API size_t ber_write_contextual_integer(wStream* s, BYTE tag, UINT32 value);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL ber_read_integer_length(wStream* s, size_t* length);
WINPR_ATTR_NODISCARD
FREERDP_API size_t ber_sizeof_integer(UINT32 value);
WINPR_ATTR_NODISCARD
FREERDP_API size_t ber_sizeof_contextual_integer(UINT32 value);
#ifdef __cplusplus

View File

@@ -56,6 +56,7 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API rdpCertificate* freerdp_certificate_new_from_der(const BYTE* data, size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_certificate_is_rsa(const rdpCertificate* certificate);
WINPR_ATTR_MALLOC(free, 1)
@@ -130,6 +131,7 @@ extern "C"
FREERDP_API char* freerdp_certificate_get_validity(const rdpCertificate* certificate,
BOOL startDate);
WINPR_ATTR_NODISCARD
FREERDP_API WINPR_MD_TYPE freerdp_certificate_get_signature_alg(const rdpCertificate* cert);
WINPR_ATTR_MALLOC(free, 1)
@@ -144,14 +146,18 @@ extern "C"
FREERDP_API void freerdp_certificate_free_dns_names(size_t count, size_t* lengths,
char** names);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_certificate_check_eku(const rdpCertificate* certificate, int nid);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_certificate_get_public_key(const rdpCertificate* cert,
BYTE** PublicKey, DWORD* PublicKeyLength);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_certificate_verify(const rdpCertificate* cert,
const char* certificate_store_path);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_certificate_is_rdp_security_compatible(const rdpCertificate* cert);
WINPR_ATTR_MALLOC(free, 1)

View File

@@ -56,19 +56,32 @@ extern "C"
FREERDP_API rdpCertificateData*
freerdp_certificate_data_new_from_file(const char* hostname, UINT16 port, const char* file);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_certificate_data_equal(const rdpCertificateData* a,
const rdpCertificateData* b);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_certificate_data_get_hash(const rdpCertificateData* cert);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_certificate_data_get_host(const rdpCertificateData* cert);
WINPR_ATTR_NODISCARD
FREERDP_API UINT16 freerdp_certificate_data_get_port(const rdpCertificateData* cert);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_certificate_data_get_pem(const rdpCertificateData* cert);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_certificate_data_get_pem_ex(const rdpCertificateData* cert,
BOOL withFullChain);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_certificate_data_get_subject(const rdpCertificateData* cert);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_certificate_data_get_issuer(const rdpCertificateData* cert);
WINPR_ATTR_NODISCARD
FREERDP_API const char*
freerdp_certificate_data_get_fingerprint(const rdpCertificateData* cert);

View File

@@ -46,6 +46,7 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API rdpCertificateStore* freerdp_certificate_store_new(const rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API freerdp_certificate_store_result freerdp_certificate_store_contains_data(
rdpCertificateStore* store, const rdpCertificateData* data);
@@ -54,13 +55,19 @@ extern "C"
FREERDP_API rdpCertificateData*
freerdp_certificate_store_load_data(rdpCertificateStore* store, const char* host, UINT16 port);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_certificate_store_save_data(rdpCertificateStore* store,
const rdpCertificateData* data);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_certificate_store_remove_data(rdpCertificateStore* store,
const rdpCertificateData* data);
WINPR_ATTR_NODISCARD
FREERDP_API const char*
freerdp_certificate_store_get_certs_path(const rdpCertificateStore* store);
WINPR_ATTR_NODISCARD
FREERDP_API const char*
freerdp_certificate_store_get_hosts_path(const rdpCertificateStore* store);

View File

@@ -38,6 +38,7 @@ extern "C"
};
typedef struct rdp_CertInfo rdpCertInfo;
WINPR_ATTR_NODISCARD
FREERDP_API char* crypto_base64_encode(const BYTE* WINPR_RESTRICT data, size_t length);
/** BASE64 encode data
@@ -50,6 +51,7 @@ extern "C"
*
* @return The encoded BASE64 string or \b NULL if failed
*/
WINPR_ATTR_NODISCARD
FREERDP_API char* crypto_base64_encode_ex(const BYTE* WINPR_RESTRICT data, size_t length,
BOOL withCrLf);
@@ -57,13 +59,17 @@ extern "C"
BYTE** WINPR_RESTRICT dec_data,
size_t* WINPR_RESTRICT res_length);
WINPR_ATTR_NODISCARD
FREERDP_API char* crypto_base64url_encode(const BYTE* WINPR_RESTRICT data, size_t length);
FREERDP_API void crypto_base64url_decode(const char* WINPR_RESTRICT enc_data, size_t length,
BYTE** WINPR_RESTRICT dec_data,
size_t* WINPR_RESTRICT res_length);
WINPR_ATTR_NODISCARD
FREERDP_API char* crypto_read_pem(const char* WINPR_RESTRICT filename,
size_t* WINPR_RESTRICT plength);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL crypto_write_pem(const char* WINPR_RESTRICT filename,
const char* WINPR_RESTRICT pem, size_t length);

View File

@@ -29,29 +29,72 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_length(wStream* s, UINT16* length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_length(wStream* s, UINT16 length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_choice(wStream* s, BYTE* choice);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_choice(wStream* s, BYTE choice);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_selection(wStream* s, BYTE* selection);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_selection(wStream* s, BYTE selection);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_number_of_sets(wStream* s, BYTE* number);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_number_of_sets(wStream* s, BYTE number);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_padding(wStream* s, UINT16 length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_padding(wStream* s, UINT16 length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_integer(wStream* s, UINT32* integer);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_integer16(wStream* s, UINT16* integer, UINT16 min);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_integer(wStream* s, UINT32 integer);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_integer16(wStream* s, UINT16 integer, UINT16 min);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_enumerated(wStream* s, BYTE* enumerated, BYTE count);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_enumerated(wStream* s, BYTE enumerated, BYTE count);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_object_identifier(wStream* s, const BYTE oid[6]);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_object_identifier(wStream* s, const BYTE oid[6]);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_octet_string(wStream* s, const BYTE* oct_str, UINT16 length,
UINT16 min);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_octet_string(wStream* s, const BYTE* oct_str, UINT16 length,
UINT16 min);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_read_numeric_string(wStream* s, UINT16 min);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL per_write_numeric_string(wStream* s, const BYTE* num_str, UINT16 length,
UINT16 min);

View File

@@ -36,6 +36,7 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API rdpPrivateKey* freerdp_key_new(void);
WINPR_ATTR_NODISCARD
FREERDP_API rdpPrivateKey* freerdp_key_new_from_file(const char* keyfile);
WINPR_ATTR_MALLOC(freerdp_key_free, 1)
@@ -65,8 +66,10 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API rdpPrivateKey* freerdp_key_new_from_pem_enc(const char* pem, const char* password);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_key_is_rsa(const rdpPrivateKey* key);
WINPR_ATTR_NODISCARD
FREERDP_API size_t freerdp_key_get_bits(const rdpPrivateKey* key);
/** @brief Create a PEM from a private key
@@ -91,6 +94,7 @@ extern "C"
* @return \b TRUE for success, \b FALSE otherwise
* @since version 3.16.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_key_generate(rdpPrivateKey* key, const char* type, size_t count, ...);
#ifdef __cplusplus

View File

@@ -29,6 +29,7 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_display_send_monitor_layout(rdpContext* context, UINT32 monitorCount,
const MONITOR_DEF* monitorDefArray);

View File

@@ -173,9 +173,10 @@ extern "C"
typedef WINPR_ATTR_NODISCARD UINT(VCAPITYPE* PDVC_PLUGIN_ENTRY)(IDRDYNVC_ENTRY_POINTS*);
void* get_callback_by_name(const char* name, void** context);
void add_callback_by_name(const char* name, void* fkt, void* context);
void remove_callback_by_name(const char* name, void* context);
WINPR_ATTR_NODISCARD
FREERDP_API void* get_callback_by_name(const char* name, void** context);
FREERDP_API void add_callback_by_name(const char* name, void* fkt, void* context);
FREERDP_API void remove_callback_by_name(const char* name, void* context);
#ifdef __cplusplus
}

View File

@@ -40,320 +40,400 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API SmartcardEmulationContext* Emulate_New(const rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL Emulate_IsConfigured(SmartcardEmulationContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardEstablishContext(SmartcardEmulationContext* smartcard,
DWORD dwScope, LPCVOID pvReserved1,
LPCVOID pvReserved2,
LPSCARDCONTEXT phContext);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardReleaseContext(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardIsValidContext(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListReaderGroupsA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPSTR mszGroups,
LPDWORD pcchGroups);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListReaderGroupsW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPWSTR mszGroups,
LPDWORD pcchGroups);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListReadersA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCSTR mszGroups,
LPSTR mszReaders, LPDWORD pcchReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListReadersW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCWSTR mszGroups,
LPWSTR mszReaders, LPDWORD pcchReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListCardsA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCBYTE pbAtr,
LPCGUID rgquidInterfaces,
DWORD cguidInterfaceCount, CHAR* mszCards,
LPDWORD pcchCards);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListCardsW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCBYTE pbAtr,
LPCGUID rgquidInterfaces,
DWORD cguidInterfaceCount, WCHAR* mszCards,
LPDWORD pcchCards);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListInterfacesA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCSTR szCard,
LPGUID pguidInterfaces,
LPDWORD pcguidInterfaces);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListInterfacesW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCWSTR szCard,
LPGUID pguidInterfaces,
LPDWORD pcguidInterfaces);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetProviderIdA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCSTR szCard,
LPGUID pguidProviderId);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetProviderIdW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCWSTR szCard,
LPGUID pguidProviderId);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetCardTypeProviderNameA(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szCardName,
DWORD dwProviderId, CHAR* szProvider, LPDWORD pcchProvider);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetCardTypeProviderNameW(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szCardName,
DWORD dwProviderId, WCHAR* szProvider, LPDWORD pcchProvider);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardIntroduceReaderGroupA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCSTR szGroupName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardIntroduceReaderGroupW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCWSTR szGroupName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardForgetReaderGroupA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCSTR szGroupName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardForgetReaderGroupW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCWSTR szGroupName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardIntroduceReaderA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCSTR szReaderName, LPCSTR szDeviceName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardIntroduceReaderW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCWSTR szReaderName,
LPCWSTR szDeviceName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardForgetReaderA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCSTR szReaderName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardForgetReaderW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCWSTR szReaderName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardAddReaderToGroupA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCSTR szReaderName, LPCSTR szGroupName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardAddReaderToGroupW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCWSTR szReaderName,
LPCWSTR szGroupName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI
Emulate_SCardRemoveReaderFromGroupA(SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext,
LPCSTR szReaderName, LPCSTR szGroupName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI
Emulate_SCardRemoveReaderFromGroupW(SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext,
LPCWSTR szReaderName, LPCWSTR szGroupName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardIntroduceCardTypeA(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szCardName,
LPCGUID pguidPrimaryProvider, LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardIntroduceCardTypeW(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szCardName,
LPCGUID pguidPrimaryProvider, LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardSetCardTypeProviderNameA(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szCardName,
DWORD dwProviderId, LPCSTR szProvider);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardSetCardTypeProviderNameW(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szCardName,
DWORD dwProviderId, LPCWSTR szProvider);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardForgetCardTypeA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCSTR szCardName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardForgetCardTypeW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCWSTR szCardName);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardFreeMemory(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPVOID pvMem);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE WINAPI Emulate_SCardAccessStartedEvent(SmartcardEmulationContext* smartcard);
FREERDP_API void WINAPI Emulate_SCardReleaseStartedEvent(SmartcardEmulationContext* smartcard);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardLocateCardsA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCSTR mszCards,
LPSCARD_READERSTATEA rgReaderStates,
DWORD cReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardLocateCardsW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCWSTR mszCards,
LPSCARD_READERSTATEW rgReaderStates,
DWORD cReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardLocateCardsByATRA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPSCARD_ATRMASK rgAtrMasks, DWORD cAtrs,
LPSCARD_READERSTATEA rgReaderStates,
DWORD cReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardLocateCardsByATRW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPSCARD_ATRMASK rgAtrMasks, DWORD cAtrs,
LPSCARD_READERSTATEW rgReaderStates,
DWORD cReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetStatusChangeA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, DWORD dwTimeout,
LPSCARD_READERSTATEA rgReaderStates,
DWORD cReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetStatusChangeW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, DWORD dwTimeout,
LPSCARD_READERSTATEW rgReaderStates,
DWORD cReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardCancel(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardConnectA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCSTR szReader,
DWORD dwShareMode, DWORD dwPreferredProtocols,
LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardConnectW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCWSTR szReader,
DWORD dwShareMode, DWORD dwPreferredProtocols,
LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardReconnect(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, DWORD dwShareMode,
DWORD dwPreferredProtocols,
DWORD dwInitialization,
LPDWORD pdwActiveProtocol);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardDisconnect(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, DWORD dwDisposition);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardBeginTransaction(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardEndTransaction(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, DWORD dwDisposition);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardCancelTransaction(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardState(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, LPDWORD pdwState,
LPDWORD pdwProtocol, LPBYTE pbAtr,
LPDWORD pcbAtrLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardStatusA(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, LPSTR mszReaderNames,
LPDWORD pcchReaderLen, LPDWORD pdwState,
LPDWORD pdwProtocol, LPBYTE pbAtr,
LPDWORD pcbAtrLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardStatusW(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, LPWSTR mszReaderNames,
LPDWORD pcchReaderLen, LPDWORD pdwState,
LPDWORD pdwProtocol, LPBYTE pbAtr,
LPDWORD pcbAtrLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardTransmit(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci,
LPCBYTE pbSendBuffer, DWORD cbSendLength,
LPSCARD_IO_REQUEST pioRecvPci,
LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetTransmitCount(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard,
LPDWORD pcTransmitCount);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardControl(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, DWORD dwControlCode,
LPCVOID lpInBuffer, DWORD cbInBufferSize,
LPVOID lpOutBuffer, DWORD cbOutBufferSize,
LPDWORD lpBytesReturned);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetAttrib(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
LPDWORD pcbAttrLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardSetAttrib(SmartcardEmulationContext* smartcard,
SCARDHANDLE hCard, DWORD dwAttrId,
LPCBYTE pbAttr, DWORD cbAttrLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardUIDlgSelectCardA(SmartcardEmulationContext* smartcard,
LPOPENCARDNAMEA_EX pDlgStruc);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardUIDlgSelectCardW(SmartcardEmulationContext* smartcard,
LPOPENCARDNAMEW_EX pDlgStruc);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_GetOpenCardNameA(SmartcardEmulationContext* smartcard,
LPOPENCARDNAMEA pDlgStruc);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_GetOpenCardNameW(SmartcardEmulationContext* smartcard,
LPOPENCARDNAMEW pDlgStruc);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardDlgExtendedError(SmartcardEmulationContext* smartcard);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardReadCacheA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, UUID* CardIdentifier,
DWORD FreshnessCounter, LPSTR LookupName,
PBYTE Data, DWORD* DataLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardReadCacheW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, UUID* CardIdentifier,
DWORD FreshnessCounter, LPWSTR LookupName,
PBYTE Data, DWORD* DataLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardWriteCacheA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, UUID* CardIdentifier,
DWORD FreshnessCounter, LPSTR LookupName,
PBYTE Data, DWORD DataLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardWriteCacheW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, UUID* CardIdentifier,
DWORD FreshnessCounter, LPWSTR LookupName,
PBYTE Data, DWORD DataLen);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetReaderIconA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCSTR szReaderName,
LPBYTE pbIcon, LPDWORD pcbIcon);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetReaderIconW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, LPCWSTR szReaderName,
LPBYTE pbIcon, LPDWORD pcbIcon);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetDeviceTypeIdA(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCSTR szReaderName,
LPDWORD pdwDeviceTypeId);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetDeviceTypeIdW(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext,
LPCWSTR szReaderName,
LPDWORD pdwDeviceTypeId);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetReaderDeviceInstanceIdA(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szReaderName,
LPSTR szDeviceInstanceId, LPDWORD pcchDeviceInstanceId);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardGetReaderDeviceInstanceIdW(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szReaderName,
LPWSTR szDeviceInstanceId, LPDWORD pcchDeviceInstanceId);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListReadersWithDeviceInstanceIdA(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCSTR szDeviceInstanceId,
LPSTR mszReaders, LPDWORD pcchReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardListReadersWithDeviceInstanceIdW(
SmartcardEmulationContext* smartcard, SCARDCONTEXT hContext, LPCWSTR szDeviceInstanceId,
LPWSTR mszReaders, LPDWORD pcchReaders);
WINPR_ATTR_NODISCARD
FREERDP_API LONG WINAPI Emulate_SCardAudit(SmartcardEmulationContext* smartcard,
SCARDCONTEXT hContext, DWORD dwEvent);

View File

@@ -173,8 +173,13 @@ extern "C"
#define ERRINFO_SUCCESS 0x00000000
#define ERRINFO_NONE 0xFFFFFFFF
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_info_string(UINT32 code);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_info_name(UINT32 code);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_info_category(UINT32 code);
/**
@@ -199,8 +204,13 @@ extern "C"
#define ERRBASE_SUCCESS ERRINFO_SUCCESS
#define ERRBASE_NONE ERRINFO_NONE
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_base_string(UINT32 code);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_base_name(UINT32 code);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_base_category(UINT32 code);
#define FREERDP_ERROR_SUCCESS ERRINFO_SUCCESS
@@ -275,8 +285,13 @@ extern "C"
#define ERRCONNECT_SUCCESS ERRINFO_SUCCESS
#define ERRCONNECT_NONE ERRINFO_NONE
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_connect_string(UINT32 code);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_connect_name(UINT32 code);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_error_connect_category(UINT32 code);
#define FREERDP_ERROR_CONNECT_CLASS (FREERDP_ERROR_BASE + 2)

View File

@@ -617,11 +617,16 @@ owned by rdpRdp */
FREERDP_API void freerdp_context_free(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_context_new(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_context_new_ex(freerdp* instance, rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_context_reset(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_connect(freerdp* instance);
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
@@ -630,14 +635,19 @@ owned by rdpRdp */
#endif
FREERDP_API BOOL freerdp_abort_connect_context(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE freerdp_abort_event(rdpContext* context);
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
WINPR_DEPRECATED_VAR("use freerdp_shall_disconnect_context instead",
FREERDP_API BOOL freerdp_shall_disconnect(const freerdp* instance));
WINPR_ATTR_NODISCARD FREERDP_API BOOL
freerdp_shall_disconnect(const freerdp* instance));
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_shall_disconnect_context(const rdpContext* context);
FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
/** @brief stringify disconnect reason of type Disconnect_Ultimatum
@@ -648,46 +658,77 @@ owned by rdpRdp */
*
* @since version 3.13.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_disconnect_reason_string(int reason);
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
WINPR_DEPRECATED_VAR("use freerdp_disconnect_before_reconnect_context instead",
FREERDP_API BOOL freerdp_disconnect_before_reconnect(freerdp* instance));
WINPR_ATTR_NODISCARD FREERDP_API BOOL
freerdp_disconnect_before_reconnect(freerdp* instance));
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_reconnect(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API UINT freerdp_channels_attach(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API UINT freerdp_channels_detach(freerdp* instance);
#if defined(WITH_FREERDP_DEPRECATED)
WINPR_DEPRECATED_VAR("Use freerdp_get_event_handles",
FREERDP_API BOOL freerdp_get_fds(freerdp* instance, void** rfds,
int* rcount, void** wfds, int* wcount));
WINPR_ATTR_NODISCARD FREERDP_API BOOL
freerdp_get_fds(freerdp* instance, void** rfds, int* rcount,
void** wfds, int* wcount));
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_check_event_handles(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
wMessage* message);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 freerdp_error_info(const freerdp* instance);
FREERDP_API void freerdp_set_error_info(rdpRdp* rdp, UINT32 error);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_send_error_info(rdpRdp* rdp);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_get_stats(const rdpRdp* rdp, UINT64* inBytes, UINT64* outBytes,
UINT64* inPackets, UINT64* outPackets);
FREERDP_API void freerdp_get_version(int* major, int* minor, int* revision);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_version_string(void);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_build_revision(void);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_build_config(void);
FREERDP_API void freerdp_free(freerdp* instance);
@@ -696,14 +737,23 @@ owned by rdpRdp */
WINPR_ATTR_NODISCARD
FREERDP_API freerdp* freerdp_new(void);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
FREERDP_API void freerdp_set_focus(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_get_disconnect_ultimatum(const rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 freerdp_get_last_error(const rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_last_error_name(UINT32 error);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_last_error_string(UINT32 error);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_last_error_category(UINT32 error);
#define freerdp_set_last_error(context, lastError) \
@@ -721,19 +771,30 @@ owned by rdpRdp */
FREERDP_API void freerdp_set_last_error_ex(rdpContext* context, UINT32 lastError,
const char* fkt, const char* file, int line);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_logon_error_info_type(UINT32 type);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_logon_error_info_type_ex(UINT32 type, char* buffer,
size_t size);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_logon_error_info_data(UINT32 data);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_logon_error_info_data_ex(UINT32 data, char* buffer,
size_t size);
WINPR_ATTR_NODISCARD
FREERDP_API ULONG freerdp_get_transport_sent(const rdpContext* context, BOOL resetCount);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_nla_impersonate(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_nla_revert_to_self(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 freerdp_get_nla_sspi_error(const rdpContext* context);
/** Encrypts the provided buffer using the NLA's GSSAPI context
@@ -744,6 +805,7 @@ owned by rdpRdp */
* \returns if the operation completed successfully
* \since version 3.9.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_nla_encrypt(rdpContext* context, const SecBuffer* inBuffer,
SecBuffer* outBuffer);
@@ -755,6 +817,7 @@ owned by rdpRdp */
* \returns if the operation completed successfully
* \since version 3.9.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_nla_decrypt(rdpContext* context, const SecBuffer* inBuffer,
SecBuffer* outBuffer);
@@ -767,6 +830,7 @@ owned by rdpRdp */
* \returns a SECURITY_STATUS indicating if the operation completed successfully
* \since version 3.9.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API SECURITY_STATUS freerdp_nla_QueryContextAttributes(rdpContext* context,
DWORD ulAttr, PVOID pBuffer);
@@ -779,15 +843,26 @@ owned by rdpRdp */
*
* Supported buffers are ones retrieved from SECPKG_ATTR_PACKAGE_INFO.
*/
WINPR_ATTR_NODISCARD
FREERDP_API SECURITY_STATUS freerdp_nla_FreeContextBuffer(rdpContext* context, PVOID pBuffer);
FREERDP_API void clearChannelError(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE getChannelErrorEventHandle(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT getChannelError(const rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API const char* getChannelErrorDescription(const rdpContext* context);
FREERDP_API void setChannelError(rdpContext* context, UINT errorNum, const char* format, ...);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL checkChannelErrorEvent(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_nego_get_routing_token(const rdpContext* context,
DWORD* length);
@@ -797,6 +872,7 @@ owned by rdpRdp */
*
* \return A \b CONNECTION_STATE the context is currently in
*/
WINPR_ATTR_NODISCARD
FREERDP_API CONNECTION_STATE freerdp_get_state(const rdpContext* context);
/** \brief returns a string representation of a \b CONNECTION_STATE
@@ -805,6 +881,7 @@ owned by rdpRdp */
*
* \return The string representation of the \b CONNECTION_STATE
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_state_string(CONNECTION_STATE state);
/** \brief Queries if the current \b CONNECTION_STATE of the context is an active connection.
@@ -816,11 +893,16 @@ owned by rdpRdp */
*
* \return \b TRUE if the connection state indicates an active connection, \b FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_is_active_state(const rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_channels_from_mcs(rdpSettings* settings, const rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_is_valid_mcs_create_request(const BYTE* data, size_t size);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_is_valid_mcs_create_response(const BYTE* data, size_t size);
/** \brief Persist the current credentials (gateway, target server, ...)
@@ -835,6 +917,7 @@ owned by rdpRdp */
* state, ...)
* \since version 3.12.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_persist_credentials(rdpContext* context);
/** @brief set a new function to be called when an access token is requested.
@@ -845,6 +928,7 @@ owned by rdpRdp */
* @return \b TRUE for success, \b FALSE otherwise
* @since version 3.16.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_set_common_access_token(rdpContext* context,
pGetCommonAccessToken GetCommonAccessToken);
@@ -854,6 +938,7 @@ owned by rdpRdp */
* @return The current function pointer set or \b NULL
* @since version 3.16.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API pGetCommonAccessToken freerdp_get_common_access_token(const rdpContext* context);
#ifdef __cplusplus

View File

@@ -30,16 +30,26 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 gdi_GetPixel(HGDI_DC hdc, UINT32 nXPos, UINT32 nYPos);
FREERDP_API UINT32 gdi_SetPixel(HGDI_DC hdc, UINT32 X, UINT32 Y, UINT32 crColor);
WINPR_ATTR_NODISCARD
FREERDP_API BYTE* gdi_GetPointer(HGDI_BITMAP hBmp, UINT32 X, UINT32 Y);
WINPR_ATTR_NODISCARD
FREERDP_API HGDI_BITMAP gdi_CreateBitmap(UINT32 nWidth, UINT32 nHeight, UINT32 format,
BYTE* data);
WINPR_ATTR_NODISCARD
FREERDP_API HGDI_BITMAP gdi_CreateBitmapEx(UINT32 nWidth, UINT32 nHeight, UINT32 format,
UINT32 stride, BYTE* data, void (*fkt_free)(void*));
WINPR_ATTR_NODISCARD
FREERDP_API HGDI_BITMAP gdi_CreateCompatibleBitmap(HGDI_DC hdc, UINT32 nWidth, UINT32 nHeight);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_BitBlt(HGDI_DC hdcDest, INT32 nXDest, INT32 nYDest, INT32 nWidth,
INT32 nHeight, HGDI_DC hdcSrc, INT32 nXSrc, INT32 nYSrc, DWORD rop,
const gdiPalette* palette);

View File

@@ -30,11 +30,19 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API HGDI_DC gdi_GetDC(void);
WINPR_ATTR_NODISCARD
FREERDP_API HGDI_DC gdi_CreateDC(UINT32 format);
WINPR_ATTR_NODISCARD
FREERDP_API HGDI_DC gdi_CreateCompatibleDC(HGDI_DC hdc);
FREERDP_API HGDIOBJECT gdi_SelectObject(HGDI_DC hdc, HGDIOBJECT hgdiobject);
FREERDP_API BOOL gdi_DeleteObject(HGDIOBJECT hgdiobject);
FREERDP_API BOOL gdi_DeleteDC(HGDI_DC hdc);
#ifdef __cplusplus

View File

@@ -523,20 +523,37 @@ extern "C"
};
typedef struct rdp_gdi rdpGdi;
WINPR_ATTR_NODISCARD
FREERDP_API DWORD gdi_rop3_code(BYTE code);
WINPR_ATTR_NODISCARD
FREERDP_API const char* gdi_rop3_code_string(BYTE code);
WINPR_ATTR_NODISCARD
FREERDP_API const char* gdi_rop3_string(DWORD rop);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 gdi_get_pixel_format(UINT32 bitsPerPixel);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_decode_color(rdpGdi* gdi, UINT32 srcColor, UINT32* color, UINT32* format);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_resize(rdpGdi* gdi, UINT32 width, UINT32 height);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_resize_ex(rdpGdi* gdi, UINT32 width, UINT32 height, UINT32 stride,
UINT32 format, BYTE* buffer, void (*pfree)(void*));
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_init(freerdp* instance, UINT32 format);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_init_ex(freerdp* instance, UINT32 format, UINT32 stride, BYTE* buffer,
void (*pfree)(void*));
FREERDP_API void gdi_free(freerdp* instance);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_send_suppress_output(rdpGdi* gdi, BOOL suppress);
#ifdef __cplusplus

View File

@@ -64,6 +64,7 @@ extern "C"
typedef struct gdi_gfx_cache_entry gdiGfxCacheEntry;
FREERDP_API BOOL gdi_graphics_pipeline_init(rdpGdi* gdi, RdpgfxClientContext* gfx);
FREERDP_API BOOL gdi_graphics_pipeline_init_ex(rdpGdi* gdi, RdpgfxClientContext* gfx,
pcRdpgfxMapWindowForSurface map,
pcRdpgfxUnmapWindowForSurface unmap,

View File

@@ -28,8 +28,11 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API HGDI_PEN gdi_CreatePen(UINT32 fnPenStyle, UINT32 nWidth, UINT32 crColor,
UINT32 format, const gdiPalette* palette);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 gdi_GetPenColor(HGDI_PEN pen, UINT32 format);
#ifdef __cplusplus

View File

@@ -30,31 +30,66 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API HGDI_RGN gdi_CreateRectRgn(INT32 nLeftRect, INT32 nTopRect, INT32 nRightRect,
INT32 nBottomRect);
WINPR_ATTR_NODISCARD
FREERDP_API GDI_RECT* gdi_CreateRect(INT32 xLeft, INT32 yTop, INT32 xRight, INT32 yBottom);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_RectToRgn(const GDI_RECT* rect, HGDI_RGN rgn);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_CRectToRgn(INT32 left, INT32 top, INT32 right, INT32 bottom, HGDI_RGN rgn);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_RectToCRgn(const GDI_RECT* rect, INT32* x, INT32* y, INT32* w, INT32* h);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_CRectToCRgn(INT32 left, INT32 top, INT32 right, INT32 bottom, INT32* x,
INT32* y, INT32* w, INT32* h);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_RgnToRect(const GDI_RGN* rgn, GDI_RECT* rect);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_CRgnToRect(INT64 x, INT64 y, INT32 w, INT32 h, GDI_RECT* rect);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_RgnToCRect(const GDI_RGN* rgn, INT32* left, INT32* top, INT32* right,
INT32* bottom);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_CRgnToCRect(INT32 x, INT32 y, INT32 w, INT32 h, INT32* left, INT32* top,
INT32* right, INT32* bottom);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_CopyOverlap(INT32 x, INT32 y, INT32 width, INT32 height, INT32 srcx,
INT32 srcy);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_SetRect(GDI_RECT* rc, INT32 xLeft, INT32 yTop, INT32 xRight,
INT32 yBottom);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_SetRgn(HGDI_RGN hRgn, INT32 nXLeft, INT32 nYLeft, INT32 nWidth,
INT32 nHeight);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_SetRectRgn(HGDI_RGN hRgn, INT32 nLeftRect, INT32 nTopRect,
INT32 nRightRect, INT32 nBottomRect);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_EqualRgn(const GDI_RGN* hSrcRgn1, const GDI_RGN* hSrcRgn2);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_CopyRect(GDI_RECT* dst, const GDI_RECT* src);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_PtInRect(const GDI_RECT* rc, INT32 x, INT32 y);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_InvalidateRegion(HGDI_DC hdc, INT32 x, INT32 y, INT32 w, INT32 h);
#ifdef __cplusplus

View File

@@ -28,12 +28,21 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_Ellipse(HGDI_DC hdc, int nLeftRect, int nTopRect, int nRightRect,
int nBottomRect);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_FillRect(HGDI_DC hdc, const GDI_RECT* rect, HGDI_BRUSH hbr);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_Polygon(HGDI_DC hdc, GDI_POINT* lpPoints, int nCount);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_PolyPolygon(HGDI_DC hdc, GDI_POINT* lpPoints, int* lpPolyCounts,
int nCount);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL gdi_Rectangle(HGDI_DC hdc, INT32 nXDst, INT32 nYDst, INT32 nWidth,
INT32 nHeight);

View File

@@ -37,6 +37,7 @@ extern "C"
WINPR_ATTR_NODISCARD pServerHeartbeat ServerHeartbeat;
};
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_heartbeat_send_heartbeat_pdu(freerdp_peer* peer, BYTE period,
BYTE count1, BYTE count2);

View File

@@ -104,19 +104,28 @@ extern "C"
};
FREERDP_API BOOL freerdp_input_send_synchronize_event(rdpInput* input, UINT32 flags);
FREERDP_API BOOL freerdp_input_send_keyboard_event(rdpInput* input, UINT16 flags, UINT8 code);
FREERDP_API BOOL freerdp_input_send_keyboard_event_ex(rdpInput* input, BOOL down, BOOL repeat,
UINT32 rdp_scancode);
FREERDP_API BOOL freerdp_input_send_keyboard_pause_event(rdpInput* input);
FREERDP_API BOOL freerdp_input_send_unicode_keyboard_event(rdpInput* input, UINT16 flags,
UINT16 code);
FREERDP_API BOOL freerdp_input_send_mouse_event(rdpInput* input, UINT16 flags, UINT16 x,
UINT16 y);
FREERDP_API BOOL freerdp_input_send_rel_mouse_event(rdpInput* input, UINT16 flags, INT16 xDelta,
INT16 yDelta);
FREERDP_API BOOL freerdp_input_send_qoe_timestamp(rdpInput* input, UINT32 timestampMS);
FREERDP_API BOOL freerdp_input_send_extended_mouse_event(rdpInput* input, UINT16 flags,
UINT16 x, UINT16 y);
FREERDP_API BOOL freerdp_input_send_focus_in_event(rdpInput* input, UINT16 toggleStates);
/** @brief stringify \b enum KBD_SYNC_FLAGS
@@ -128,6 +137,7 @@ extern "C"
* @return A pointer to \ref buffer or \b NULL in case of failure
* @since version 3.19.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_input_keyboard_flags_string(uint32_t flags, char* buffer,
size_t len);

View File

@@ -51,8 +51,13 @@ extern "C"
typedef struct rdp_license rdpLicense;
WINPR_ATTR_NODISCARD
FREERDP_API rdpLicense* license_get(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API LICENSE_STATE license_get_state(const rdpLicense* license);
WINPR_ATTR_NODISCARD
FREERDP_API LICENSE_TYPE license_get_type(const rdpLicense* license);
#ifdef __cplusplus

View File

@@ -253,6 +253,7 @@ FREERDP_API RDP_KEYBOARD_LAYOUT* freerdp_keyboard_get_layouts(DWORD types, size_
* @return The string representation of the layout or the string \b "unknown" in case there is
* none.
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_keyboard_get_layout_name_from_id(DWORD keyboardLayoutId);
/** @brief Get a keyboard layout id from a string
@@ -261,23 +262,26 @@ FREERDP_API const char* freerdp_keyboard_get_layout_name_from_id(DWORD keyboardL
*
* @return The keyboard layout id or \b 0 in case of no mapping
*/
WINPR_ATTR_NODISCARD
FREERDP_API DWORD freerdp_keyboard_get_layout_id_from_name(const char* name);
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
WINPR_DEPRECATED_VAR("since 3.11.0, implement yourself in client",
FREERDP_API DWORD freerdp_keyboard_init(DWORD keyboardLayoutId));
WINPR_ATTR_NODISCARD FREERDP_API DWORD
freerdp_keyboard_init(DWORD keyboardLayoutId));
WINPR_DEPRECATED_VAR("since 3.11.0, implement yourself in client",
FREERDP_API DWORD freerdp_keyboard_init_ex(DWORD keyboardLayoutId,
const char* keyboardRemappingList));
WINPR_ATTR_NODISCARD FREERDP_API DWORD freerdp_keyboard_init_ex(
DWORD keyboardLayoutId, const char* keyboardRemappingList));
WINPR_DEPRECATED_VAR("since 3.11.0, implement yourself in client",
FREERDP_API DWORD
WINPR_ATTR_NODISCARD FREERDP_API DWORD
freerdp_keyboard_get_rdp_scancode_from_x11_keycode(DWORD keycode));
WINPR_DEPRECATED_VAR("since 3.11.0, implement yourself in client",
FREERDP_API DWORD freerdp_keyboard_get_x11_keycode_from_rdp_scancode(
DWORD scancode, BOOL extended));
WINPR_ATTR_NODISCARD FREERDP_API DWORD
freerdp_keyboard_get_x11_keycode_from_rdp_scancode(DWORD scancode,
BOOL extended));
#endif
/** @brief deallocate a \b FREERDP_REMAP_TABLE
@@ -312,6 +316,7 @@ FREERDP_API FREERDP_REMAP_TABLE* freerdp_keyboard_remap_string_to_list(const cha
*
* @since version 3.11.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API DWORD freerdp_keyboard_remap_key(const FREERDP_REMAP_TABLE* remap_table,
DWORD rdpScanCode);
@@ -348,6 +353,7 @@ FREERDP_API RDP_CODEPAGE* freerdp_keyboard_get_matching_codepages(DWORD column,
*
* @return A string describing the RDP scancode or \b NULL if it does not exist
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_keyboard_scancode_name(DWORD scancode);
#ifdef __cplusplus

View File

@@ -258,8 +258,12 @@ extern "C"
DWORD code; /* 32-bit unsigned integer corresponding to the locale */
} SYSTEM_LOCALE;
WINPR_ATTR_NODISCARD
FREERDP_API DWORD freerdp_get_system_locale_id(void);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_get_system_locale_name_from_id(DWORD localeId);
FREERDP_API int freerdp_detect_keyboard_layout_from_system_locale(DWORD* keyboardLayoutId);
/** @brief Try to guess the keyboard layout ID from a given locale string (e.g. de_AT)
@@ -269,6 +273,7 @@ extern "C"
* @return \b negative in case of an error, or a keyboard layout id otherwise
* @since version 3.14.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API int64_t freerdp_detect_keyboard_layout_from_locale(const char* localestr);
/**
@@ -277,6 +282,7 @@ extern "C"
* @return A pointer to @ref SYSTEM_LOCALE or \b NULL in case none found
* @since version 3.6.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API const SYSTEM_LOCALE* freerdp_get_system_locale_list(size_t* count);
/**
@@ -286,6 +292,7 @@ extern "C"
* @return A locale index >= 0 in case of success, <0 for failure
* @since version 3.6.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API INT64 freerdp_get_locale_id_from_string(const char* locale);
/**
@@ -294,6 +301,7 @@ extern "C"
* @return The @ref keyboard-identifiers to use
* @since version 3.6.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API DWORD freerdp_get_keyboard_default_layout_for_locale(DWORD locale);
#ifdef __cplusplus

View File

@@ -37,6 +37,7 @@ extern "C"
};
typedef struct rdp_metrics rdpMetrics;
WINPR_ATTR_NODISCARD
FREERDP_API double metrics_write_bytes(rdpMetrics* metrics, UINT32 UncompressedBytes,
UINT32 CompressedBytes);

View File

@@ -221,10 +221,16 @@ extern "C"
FREERDP_API void freerdp_peer_context_free(freerdp_peer* client);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_peer_context_new(freerdp_peer* client);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_peer_context_new_ex(freerdp_peer* client, const rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_peer_os_major_type_string(freerdp_peer* client);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_peer_os_minor_type_string(freerdp_peer* client);
FREERDP_API void freerdp_peer_free(freerdp_peer* client);
@@ -233,6 +239,7 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API freerdp_peer* freerdp_peer_new(int sockfd);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_peer_set_local_and_hostname(freerdp_peer* client,
const struct sockaddr_storage* peer_addr);

View File

@@ -312,41 +312,55 @@ typedef enum
PRIMITIVES_AUTODETECT /** detect the best routines */
} primitive_hints;
FREERDP_API primitives_t* primitives_get(void);
FREERDP_API void primitives_set_hints(primitive_hints hints);
FREERDP_API primitive_hints primitives_get_hints(void);
FREERDP_API primitives_t* primitives_get_generic(void);
FREERDP_API DWORD primitives_flags(primitives_t* p);
FREERDP_API BOOL primitives_init(primitives_t* p, primitive_hints hints);
FREERDP_API void primitives_uninit(void);
WINPR_ATTR_NODISCARD
FREERDP_API primitives_t* primitives_get(void);
/** @brief get a specific primitives implementation
*
* This will try to return the primitives implementation suggested by \b type
* If that does not exist or does not work on the platform any other (e.g. usually pure
* software) is returned
*
* @param type the type of primitives desired.
* @return A primitive implementation matching the hint closest or \b NULL in case of failure.
* @since version 3.11.0
*/
FREERDP_API primitives_t* primitives_get_by_type(primitive_hints type);
FREERDP_API void primitives_set_hints(primitive_hints hints);
/** @brief stringify a \b avc444_frame_type
*
* @param type the type to stringify
* @return A string representation of \b type
* @since version 3.11.0
*/
FREERDP_API const char* primitives_avc444_frame_type_str(avc444_frame_type type);
WINPR_ATTR_NODISCARD
FREERDP_API primitive_hints primitives_get_hints(void);
/** @brief convert a hint to a string
*
* @param hint the hint to stringify
* @return the string representation of the hint
* @since version 3.11.0
*/
FREERDP_API const char* primtives_hint_str(primitive_hints hint);
WINPR_ATTR_NODISCARD
FREERDP_API primitives_t* primitives_get_generic(void);
WINPR_ATTR_NODISCARD
FREERDP_API DWORD primitives_flags(primitives_t* p);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL primitives_init(primitives_t* p, primitive_hints hints);
FREERDP_API void primitives_uninit(void);
/** @brief get a specific primitives implementation
*
* This will try to return the primitives implementation suggested by \b type
* If that does not exist or does not work on the platform any other (e.g. usually pure
* software) is returned
*
* @param type the type of primitives desired.
* @return A primitive implementation matching the hint closest or \b NULL in case of failure.
* @since version 3.11.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API primitives_t* primitives_get_by_type(primitive_hints type);
/** @brief stringify a \b avc444_frame_type
*
* @param type the type to stringify
* @return A string representation of \b type
* @since version 3.11.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* primitives_avc444_frame_type_str(avc444_frame_type type);
/** @brief convert a hint to a string
*
* @param hint the hint to stringify
* @return the string representation of the hint
* @since version 3.11.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* primtives_hint_str(primitive_hints hint);
#ifdef __cplusplus
}

View File

@@ -579,21 +579,24 @@ typedef enum
TS_RAIL_ORDER_EXEC_RESULT = 0x0080
} ORDER_TYPE;
FREERDP_API BOOL rail_read_unicode_string(wStream* s, RAIL_UNICODE_STRING* unicode_string);
FREERDP_API BOOL utf8_string_to_rail_string(const char* string,
RAIL_UNICODE_STRING* unicode_string);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rail_read_unicode_string(wStream* s, RAIL_UNICODE_STRING* unicode_string);
/** @brief convert rails handshake flags to a string representation
*
* @param flags The flags to stringify
* @param buffer a string buffer to write to
* @param len the size in bytes of the string buffer
*
* @return A pointer to buffer or \b NULL in case of failure
* @since version 3.5.0
*/
FREERDP_API const char* rail_handshake_ex_flags_to_string(UINT32 flags, char* buffer,
size_t len);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL utf8_string_to_rail_string(const char* string,
RAIL_UNICODE_STRING* unicode_string);
/** @brief convert rails handshake flags to a string representation
*
* @param flags The flags to stringify
* @param buffer a string buffer to write to
* @param len the size in bytes of the string buffer
*
* @return A pointer to buffer or \b NULL in case of failure
* @since version 3.5.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* rail_handshake_ex_flags_to_string(UINT32 flags, char* buffer, size_t len);
#ifdef __cplusplus
}

View File

@@ -67,14 +67,24 @@ extern "C"
*
* \return \b TRUE if the redirection settings are ready to use, \b FALSE otherwise.
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL redirection_settings_are_valid(rdpRedirection* redirection, UINT32* pFlags);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL redirection_set_flags(rdpRedirection* redirection, UINT32 flags);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL redirection_set_session_id(rdpRedirection* redirection, UINT32 session_id);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL redirection_set_byte_option(rdpRedirection* redirection, UINT32 flag,
const BYTE* data, size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL redirection_set_string_option(rdpRedirection* redirection, UINT32 flag,
const char* str);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL redirection_set_array_option(rdpRedirection* redirection, UINT32 flag,
const char** str, size_t count);

View File

@@ -167,9 +167,11 @@ extern "C"
*
* \return \b TRUE if successful and at least one format is supported, \b FALSE otherwise.
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL audin_server_set_formats(audin_server_context* context, SSIZE_T count,
const AUDIO_FORMAT* formats);
WINPR_ATTR_NODISCARD
FREERDP_API const AUDIO_FORMAT*
audin_server_get_negotiated_format(const audin_server_context* context);

View File

@@ -126,6 +126,7 @@ extern "C"
* @param file The file to write to. Existing files are truncated.
* @return TRUE for success, FALSE if the file could not be written.
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_server_config_dump(const char* file);
/**
@@ -183,6 +184,7 @@ extern "C"
*
* @return The number of required plugins configured.
*/
WINPR_ATTR_NODISCARD
FREERDP_API size_t pf_config_required_plugins_count(const proxyConfig* config);
/**
@@ -192,6 +194,7 @@ extern "C"
*
* @return The name of the plugin or NULL.
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* pf_config_required_plugin(const proxyConfig* config, size_t index);
/**
@@ -201,6 +204,7 @@ extern "C"
*
* @return The number of proxy modules configured.
*/
WINPR_ATTR_NODISCARD
FREERDP_API size_t pf_config_modules_count(const proxyConfig* config);
/**
@@ -209,6 +213,7 @@ extern "C"
*
* @return An array of strings of size pf_config_modules_count with the module names.
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char** pf_config_modules(const proxyConfig* config);
/**
@@ -218,6 +223,7 @@ extern "C"
*
* @return TRUE for success, FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_config_clone(proxyConfig** dst, const proxyConfig* config);
/**
@@ -229,6 +235,7 @@ extern "C"
*
* @return TRUE for success, FALSE for failure
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_config_plugin(proxyPluginsManager* plugins_manager, void* userdata);
/**
@@ -239,6 +246,7 @@ extern "C"
*
* @return A pointer to the value for \b section/key or \b NULL if not found
*/
WINPR_ATTR_NODISCARD
FREERDP_API const char* pf_config_get(const proxyConfig* config, const char* section,
const char* key);

View File

@@ -50,6 +50,7 @@ extern "C"
/* All proxy interception channels derive from this base struct
* and set their cleanup function accordingly. */
FREERDP_API void intercept_context_entry_free(void* obj);
typedef PfChannelResult (*proxyChannelDataFn)(proxyData* pdata,
const pServerStaticChannelContext* channel,
const BYTE* xdata, size_t xsize, UINT32 flags,
@@ -69,7 +70,7 @@ extern "C"
void* context;
};
void StaticChannelContext_free(pServerStaticChannelContext* ctx);
FREERDP_API void StaticChannelContext_free(pServerStaticChannelContext* ctx);
/**
* Wraps rdpContext and holds the state for the proxy's server.
@@ -165,7 +166,10 @@ extern "C"
psPeerReceiveChannelData server_receive_channel_data_original;
};
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_context_copy_settings(rdpSettings* dst, const rdpSettings* src);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_context_init_server_context(freerdp_peer* client);
WINPR_ATTR_MALLOC(freerdp_client_context_free, 1)
@@ -180,6 +184,7 @@ extern "C"
FREERDP_API void proxy_data_set_client_context(proxyData* pdata, pClientContext* context);
FREERDP_API void proxy_data_set_server_context(proxyData* pdata, pServerContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL proxy_data_shall_disconnect(proxyData* pdata);
FREERDP_API void proxy_data_abort_connect(proxyData* pdata);

View File

@@ -60,6 +60,7 @@ extern "C"
*
* @return TRUE for success, FALSE otherwise.
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_server_add_module(proxyServer* server, proxyModuleEntryPoint ep,
void* userdata);
@@ -70,6 +71,7 @@ extern "C"
*
* @return TRUE for success, FALSE on error
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_server_start(proxyServer* server);
/**
@@ -80,6 +82,7 @@ extern "C"
*
* @return TRUE for success, FALSE on error
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_server_start_from_socket(proxyServer* server, int socket);
/**
@@ -90,6 +93,7 @@ extern "C"
*
* @return TRUE for success, FALSE on error
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_server_start_with_peer_socket(proxyServer* server, int socket);
/**
@@ -107,6 +111,7 @@ extern "C"
*
* @return TRUE for successful termination, FALSE otherwise.
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pf_server_run(proxyServer* server);
#ifdef __cplusplus

View File

@@ -148,6 +148,7 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API RailServerContext* rail_server_context_new(HANDLE vcm);
WINPR_ATTR_NODISCARD
FREERDP_API UINT rail_server_handle_messages(RailServerContext* context);
FREERDP_API void rail_server_set_handshake_ex_flags(RailServerContext* context, DWORD flags);

View File

@@ -86,13 +86,23 @@ extern "C"
FREERDP_API void rdpei_server_context_reset(RdpeiServerContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE rdpei_server_get_event_handle(RdpeiServerContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT rdpei_server_init(RdpeiServerContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT rdpei_server_handle_messages(RdpeiServerContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT rdpei_server_send_sc_ready(RdpeiServerContext* context, UINT32 version,
UINT32 features);
WINPR_ATTR_NODISCARD
FREERDP_API UINT rdpei_server_suspend(RdpeiServerContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT rdpei_server_resume(RdpeiServerContext* context);
#ifdef __cplusplus

View File

@@ -145,9 +145,14 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API RdpgfxServerContext* rdpgfx_server_context_new(HANDLE vcm);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL rdpgfx_server_set_own_thread(RdpgfxServerContext* context,
BOOL internalThread);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE rdpgfx_server_get_event_handle(RdpgfxServerContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT rdpgfx_server_handle_messages(RdpgfxServerContext* context);
#ifdef __cplusplus

View File

@@ -190,7 +190,10 @@ extern "C"
FREERDP_API void rdpsnd_server_context_reset(RdpsndServerContext*);
WINPR_ATTR_NODISCARD
FREERDP_API HANDLE rdpsnd_server_get_event_handle(RdpsndServerContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API UINT rdpsnd_server_handle_messages(RdpsndServerContext* context);
#ifdef __cplusplus

View File

@@ -30,7 +30,10 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API size_t server_audin_get_formats(AUDIO_FORMAT** dst_formats);
WINPR_ATTR_NODISCARD
FREERDP_API size_t server_rdpsnd_get_formats(AUDIO_FORMAT** dst_formats);
FREERDP_API void freerdp_server_warn_unmaintained(int argc, char* argv[]);

View File

@@ -313,7 +313,7 @@ extern "C"
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
WINPR_DEPRECATED_VAR(
"[since 3.4.0] Use shadow_subsystem_pointer_convert_alpha_pointer_data_to_format instead",
FREERDP_API int shadow_subsystem_pointer_convert_alpha_pointer_data(
WINPR_ATTR_NODISCARD FREERDP_API int shadow_subsystem_pointer_convert_alpha_pointer_data(
const BYTE* WINPR_RESTRICT pixels, BOOL premultiplied, UINT32 width, UINT32 height,
SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE* WINPR_RESTRICT pointerColor));
#endif
@@ -331,22 +331,31 @@ extern "C"
*
* @since version 3.4.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_subsystem_pointer_convert_alpha_pointer_data_to_format(
const BYTE* WINPR_RESTRICT pixels, UINT32 format, BOOL premultiplied, UINT32 width,
UINT32 height, SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE* WINPR_RESTRICT pointerColor);
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** argv,
COMMAND_LINE_ARGUMENT_A* cargs);
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_server_command_line_status_print(rdpShadowServer* server, int argc,
char** argv, int status,
const COMMAND_LINE_ARGUMENT_A* cargs);
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_server_start(rdpShadowServer* server);
FREERDP_API int shadow_server_stop(rdpShadowServer* server);
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_server_init(rdpShadowServer* server);
FREERDP_API int shadow_server_uninit(rdpShadowServer* server);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 shadow_enum_monitors(MONITOR_DEF* monitors, UINT32 maxMonitors);
FREERDP_API void shadow_server_free(rdpShadowServer* server);
@@ -355,11 +364,12 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API rdpShadowServer* shadow_server_new(void);
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_capture_align_clip_rect(RECTANGLE_16* rect, const RECTANGLE_16* clip);
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
WINPR_DEPRECATED_VAR("[since 3.4.0] Use shadow_capture_compare_with_format",
FREERDP_API int shadow_capture_compare(
WINPR_ATTR_NODISCARD FREERDP_API int shadow_capture_compare(
const BYTE* WINPR_RESTRICT pData1, UINT32 nStep1, UINT32 nWidth,
UINT32 nHeight, const BYTE* WINPR_RESTRICT pData2, UINT32 nStep2,
RECTANGLE_16* WINPR_RESTRICT rect));
@@ -381,6 +391,7 @@ extern "C"
*
* @since version 3.4.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_capture_compare_with_format(const BYTE* WINPR_RESTRICT pData1,
UINT32 format1, UINT32 nStep1, UINT32 nWidth,
UINT32 nHeight,
@@ -390,15 +401,24 @@ extern "C"
FREERDP_API void shadow_subsystem_frame_update(rdpShadowSubsystem* subsystem);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL shadow_client_post_msg(rdpShadowClient* client, void* context, UINT32 type,
SHADOW_MSG_OUT* msg, void* lParam);
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_client_boardcast_msg(rdpShadowServer* server, void* context, UINT32 type,
SHADOW_MSG_OUT* msg, void* lParam);
WINPR_ATTR_NODISCARD
FREERDP_API int shadow_client_boardcast_quit(rdpShadowServer* server, int nExitCode);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 shadow_encoder_preferred_fps(rdpShadowEncoder* encoder);
WINPR_ATTR_NODISCARD
FREERDP_API UINT32 shadow_encoder_inflight_frames(rdpShadowEncoder* encoder);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL shadow_screen_resize(rdpShadowScreen* screen);
#ifdef __cplusplus

View File

@@ -150,6 +150,7 @@ extern "C"
*
* \return \b TRUE if not equal, \b FALSE otherwise
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_settings_print_diff(wLog* log, DWORD level, const rdpSettings* src,
const rdpSettings* other);
@@ -163,19 +164,32 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API ADDIN_ARGV* freerdp_addin_argv_clone(const ADDIN_ARGV* args);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_addin_argv_add_argument(ADDIN_ARGV* args, const char* argument);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_addin_argv_add_argument_ex(ADDIN_ARGV* args, const char* argument,
size_t len);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_addin_argv_del_argument(ADDIN_ARGV* args, const char* argument);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_addin_set_argument(ADDIN_ARGV* args, const char* argument);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_addin_replace_argument(ADDIN_ARGV* args, const char* previous,
const char* argument);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_addin_set_argument_value(ADDIN_ARGV* args, const char* option,
const char* value);
WINPR_ATTR_NODISCARD
FREERDP_API int freerdp_addin_replace_argument_value(ADDIN_ARGV* args, const char* previous,
const char* option, const char* value);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_device_collection_add(rdpSettings* settings, RDPDR_DEVICE* device);
/** \brief Removed a device from the settings, returns ownership of the allocated device to
@@ -188,6 +202,7 @@ extern "C"
*
* \return \b TRUE if the device was removed, \b FALSE if device was not found or is NULL
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_device_collection_del(rdpSettings* settings,
const RDPDR_DEVICE* device);
WINPR_ATTR_NODISCARD
@@ -213,22 +228,27 @@ extern "C"
FREERDP_API void freerdp_device_collection_free(rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_static_channel_collection_add(rdpSettings* settings,
ADDIN_ARGV* channel);
FREERDP_API BOOL freerdp_static_channel_collection_del(rdpSettings* settings, const char* name);
WINPR_ATTR_NODISCARD
FREERDP_API ADDIN_ARGV* freerdp_static_channel_collection_find(rdpSettings* settings,
const char* name);
#if defined(WITH_FREERDP_DEPRECATED)
WINPR_DEPRECATED(FREERDP_API ADDIN_ARGV* WINPR_ATTR_MALLOC(freerdp_addin_argv_free, 1)
WINPR_ATTR_NODISCARD freerdp_static_channel_clone(ADDIN_ARGV* channel));
WINPR_DEPRECATED(
WINPR_ATTR_NODISCARD FREERDP_API ADDIN_ARGV* WINPR_ATTR_MALLOC(freerdp_addin_argv_free, 1)
WINPR_ATTR_NODISCARD freerdp_static_channel_clone(ADDIN_ARGV* channel));
#endif
FREERDP_API void freerdp_static_channel_collection_free(rdpSettings* settings);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_dynamic_channel_collection_add(rdpSettings* settings,
ADDIN_ARGV* channel);
FREERDP_API BOOL freerdp_dynamic_channel_collection_del(rdpSettings* settings,
const char* name);
@@ -237,8 +257,9 @@ extern "C"
const char* name);
#if defined(WITH_FREERDP_DEPRECATED)
WINPR_DEPRECATED(FREERDP_API ADDIN_ARGV* WINPR_ATTR_MALLOC(freerdp_addin_argv_free, 1)
WINPR_ATTR_NODISCARD freerdp_dynamic_channel_clone(ADDIN_ARGV* channel));
WINPR_DEPRECATED(
WINPR_ATTR_NODISCARD FREERDP_API ADDIN_ARGV* WINPR_ATTR_MALLOC(freerdp_addin_argv_free, 1)
WINPR_ATTR_NODISCARD freerdp_dynamic_channel_clone(ADDIN_ARGV* channel));
#endif
FREERDP_API void freerdp_dynamic_channel_collection_free(rdpSettings* settings);
@@ -287,7 +308,7 @@ extern "C"
FREERDP_API int freerdp_set_param_int(rdpSettings* settings, int id,
int param));
WINPR_DEPRECATED_VAR("Use freerdp_settings_set_uint32 instead",
WINPR_DEPRECATED_VAR("Use freerdp_settings_get_uint32 instead",
WINPR_ATTR_NODISCARD FREERDP_API UINT32
freerdp_get_param_uint32(const rdpSettings* settings, int id));
WINPR_DEPRECATED_VAR("Use freerdp_settings_set_uint32 instead",
@@ -533,6 +554,7 @@ extern "C"
*
* \return \b TRUE for success, \b FALSE for failure
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_settings_append_string(rdpSettings* settings,
FreeRDP_Settings_Keys_String id,
const char* separator, const char* param);
@@ -788,6 +810,7 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_encryption_level_string(UINT32 EncryptionLevel);
WINPR_ATTR_NODISCARD
FREERDP_API const char* freerdp_encryption_methods_string(UINT32 EncryptionLevel, char* buffer,
size_t size);

View File

@@ -82,6 +82,7 @@ extern "C"
* @return A new timer ID or \b 0 in case of failure
* @since version 3.16.0
*/
WINPR_ATTR_NODISCARD
FREERDP_API FreeRDP_TimerID freerdp_timer_add(rdpContext* context, uint64_t intervalNS,
FreeRDP_TimerCallback callback, void* userdata,
bool mainloop);

View File

@@ -126,13 +126,20 @@ extern "C"
};
typedef struct rdp_transport_io rdpTransportIo;
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_io_callback_set_event(rdpContext* context, BOOL set);
WINPR_ATTR_NODISCARD
FREERDP_API const rdpTransportIo* freerdp_get_io_callbacks(rdpContext* context);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_set_io_callbacks(rdpContext* context,
const rdpTransportIo* io_callbacks);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_set_io_callback_context(rdpContext* context, void* usercontext);
WINPR_ATTR_NODISCARD
FREERDP_API void* freerdp_get_io_callback_context(rdpContext* context);
/* PDU parser.
@@ -141,8 +148,13 @@ extern "C"
* >0 -> PDU header complete, length of PDU.
* <0 -> Abort, an error occurred
*/
WINPR_ATTR_NODISCARD
FREERDP_API SSIZE_T transport_parse_pdu(rdpTransport* transport, wStream* s, BOOL* incomplete);
WINPR_ATTR_NODISCARD
FREERDP_API rdpContext* transport_get_context(rdpTransport* transport);
WINPR_ATTR_NODISCARD
FREERDP_API rdpTransport* freerdp_get_transport(rdpContext* context);
/**

View File

@@ -71,12 +71,16 @@ extern "C"
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pcap_add_record(rdpPcap* pcap, const void* data, size_t length);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pcap_has_next_record(const rdpPcap* pcap);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pcap_get_next_record(rdpPcap* pcap, pcap_record* record);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pcap_get_next_record_header(rdpPcap* pcap, pcap_record* record);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL pcap_get_next_record_content(rdpPcap* pcap, pcap_record* record);
FREERDP_API void pcap_flush(rdpPcap* pcap);

View File

@@ -42,6 +42,7 @@ extern "C"
*
* \return \b TRUE if registered successfully, \b FALSE otherwise.
*/
WINPR_ATTR_NODISCARD
FREERDP_API BOOL freerdp_add_signal_cleanup_handler(void* context,
freerdp_signal_handler_t handler);

View File

@@ -45,6 +45,7 @@ extern "C"
FREERDP_API scard_call_context* smartcard_call_context_new(const rdpSettings* settings);
FREERDP_API BOOL smartcard_call_context_signal_stop(scard_call_context* ctx, BOOL reset);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL smartcard_call_context_add(scard_call_context* ctx, const char* name);
@@ -53,6 +54,7 @@ extern "C"
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);
WINPR_ATTR_NODISCARD
FREERDP_API BOOL smartcard_call_is_configured(scard_call_context* ctx);

View File

@@ -39,7 +39,10 @@ extern "C"
{
#endif
WINPR_ATTR_NODISCARD
FREERDP_API LONG smartcard_pack_write_size_align(wStream* s, size_t size, UINT32 alignment);
WINPR_ATTR_NODISCARD
FREERDP_API LONG smartcard_unpack_read_size_align(wStream* s, size_t size, UINT32 alignment);
WINPR_ATTR_NODISCARD