diff --git a/channels/rdpdr/client/rdpdr_main.c b/channels/rdpdr/client/rdpdr_main.c index caf2d6371..09aa83641 100644 --- a/channels/rdpdr/client/rdpdr_main.c +++ b/channels/rdpdr/client/rdpdr_main.c @@ -106,25 +106,6 @@ static const char* rdpdr_state_str(enum RDPDR_CHANNEL_STATE state) } } -static const char* rdpdr_device_type_string(UINT32 type) -{ - switch (type) - { - case RDPDR_DTYP_SERIAL: - return "serial"; - case RDPDR_DTYP_PRINT: - return "printer"; - case RDPDR_DTYP_FILESYSTEM: - return "drive"; - case RDPDR_DTYP_SMARTCARD: - return "smartcard"; - case RDPDR_DTYP_PARALLEL: - return "parallel"; - default: - return "UNKNOWN"; - } -} - static const char* support_str(BOOL val) { if (val) diff --git a/include/freerdp/settings_types.h b/include/freerdp/settings_types.h index 3e5984546..3e90c1306 100644 --- a/include/freerdp/settings_types.h +++ b/include/freerdp/settings_types.h @@ -439,12 +439,15 @@ enum FreeRDP_DesktopRotationFlags MONITOR_ATTRIBUTES attributes; } rdpMonitor; -/* Device Redirection */ -#define RDPDR_DTYP_SERIAL 0x00000001 -#define RDPDR_DTYP_PARALLEL 0x00000002 -#define RDPDR_DTYP_PRINT 0x00000004 -#define RDPDR_DTYP_FILESYSTEM 0x00000008 -#define RDPDR_DTYP_SMARTCARD 0x00000020 + /* Device Redirection */ + typedef enum + { + RDPDR_DTYP_SERIAL = 0x00000001, + RDPDR_DTYP_PARALLEL = 0x00000002, + RDPDR_DTYP_PRINT = 0x00000004, + RDPDR_DTYP_FILESYSTEM = 0x00000008, + RDPDR_DTYP_SMARTCARD = 0x00000020 + } FreeRDP_RDPDR_DTYP; typedef struct { diff --git a/include/freerdp/utils/rdpdr_utils.h b/include/freerdp/utils/rdpdr_utils.h index 2321c8a3e..185a0a32f 100644 --- a/include/freerdp/utils/rdpdr_utils.h +++ b/include/freerdp/utils/rdpdr_utils.h @@ -45,10 +45,10 @@ extern "C" UINT32 Version; } RDPDR_CAPABILITY_HEADER; - FREERDP_API const char* rdpdr_component_string(UINT16 component); - FREERDP_API const char* rdpdr_packetid_string(UINT16 packetid); - FREERDP_API const char* rdpdr_irp_string(UINT32 major); - FREERDP_API const char* rdpdr_cap_type_string(UINT16 capability); + FREERDP_API WINPR_ATTR_NODISCARD const char* rdpdr_component_string(UINT16 component); + FREERDP_API WINPR_ATTR_NODISCARD const char* rdpdr_packetid_string(UINT16 packetid); + FREERDP_API WINPR_ATTR_NODISCARD const char* rdpdr_irp_string(UINT32 major); + FREERDP_API WINPR_ATTR_NODISCARD const char* rdpdr_cap_type_string(UINT16 capability); FREERDP_API LONG scard_log_status_error(const char* tag, const char* what, LONG status); @@ -62,19 +62,22 @@ extern "C" * @since version 3.16.0 */ FREERDP_API LONG scard_log_status_error_wlog(wLog* log, const char* what, LONG status); - FREERDP_API const char* scard_get_ioctl_string(UINT32 ioControlCode, BOOL funcName); + FREERDP_API WINPR_ATTR_NODISCARD const char* scard_get_ioctl_string(UINT32 ioControlCode, + BOOL funcName); - FREERDP_API BOOL rdpdr_write_iocompletion_header(wStream* out, UINT32 DeviceId, - UINT32 CompletionId, NTSTATUS ioStatus); + FREERDP_API WINPR_ATTR_NODISCARD BOOL rdpdr_write_iocompletion_header(wStream* out, + UINT32 DeviceId, + UINT32 CompletionId, + NTSTATUS ioStatus); FREERDP_API void rdpdr_dump_received_packet(wLog* log, DWORD lvl, wStream* out, const char* custom); FREERDP_API void rdpdr_dump_send_packet(wLog* log, DWORD lvl, wStream* out, const char* custom); - FREERDP_API UINT rdpdr_read_capset_header(wLog* log, wStream* s, - RDPDR_CAPABILITY_HEADER* header); - FREERDP_API UINT rdpdr_write_capset_header(wLog* log, wStream* s, - const RDPDR_CAPABILITY_HEADER* header); + FREERDP_API WINPR_ATTR_NODISCARD UINT rdpdr_read_capset_header(wLog* log, wStream* s, + RDPDR_CAPABILITY_HEADER* header); + FREERDP_API WINPR_ATTR_NODISCARD UINT + rdpdr_write_capset_header(wLog* log, wStream* s, const RDPDR_CAPABILITY_HEADER* header); /** @brief convert a constant of type \ref RDPDR_CAPS_IRP_MJ to string * @@ -84,7 +87,7 @@ extern "C" * * @since version 3.21.0 */ - FREERDP_API const char* rdpdr_irp_val2str(UINT32 ioCode1); + FREERDP_API WINPR_ATTR_NODISCARD const char* rdpdr_irp_val2str(UINT32 ioCode1); /** @brief convert a mask of \ref RDPDR_CAPS_IRP_MJ type values to string * @@ -96,7 +99,17 @@ extern "C" * * @since version 3.21.0 */ - FREERDP_API const char* rdpdr_irp_mask2str(UINT32 ioCode1Mask, char* buffer, size_t len); + FREERDP_API WINPR_ATTR_NODISCARD const char* rdpdr_irp_mask2str(UINT32 ioCode1Mask, + char* buffer, size_t len); + + /** @brief Convert a single \ref FreeRDP_RDPDR_DTYP to string + * + * @param type The value to convert + * @return A constant string representation of \ref type or the string \b + * UNKNOWN for an invalid value + * @since verstion 3.22.0 + */ + FREERDP_API WINPR_ATTR_NODISCARD const char* rdpdr_device_type_string(UINT32 type); #ifdef __cplusplus } diff --git a/libfreerdp/utils/rdpdr_utils.c b/libfreerdp/utils/rdpdr_utils.c index 19694691b..f0532300e 100644 --- a/libfreerdp/utils/rdpdr_utils.c +++ b/libfreerdp/utils/rdpdr_utils.c @@ -667,3 +667,22 @@ const char* rdpdr_irp_mask2str(UINT32 ioCode1Mask, char* buffer, size_t len) return NULL; return buffer; } + +const char* rdpdr_device_type_string(UINT32 type) +{ + switch (type) + { + case RDPDR_DTYP_SERIAL: + return "serial"; + case RDPDR_DTYP_PRINT: + return "printer"; + case RDPDR_DTYP_FILESYSTEM: + return "drive"; + case RDPDR_DTYP_SMARTCARD: + return "smartcard"; + case RDPDR_DTYP_PARALLEL: + return "parallel"; + default: + return "UNKNOWN"; + } +}