[channels,rdpdr] flag definition and stringify

* Use a enum to define RDPDR_DTYP_* constants
* Add public API freerdp_device_type_string for stringify
* Add WINPR_ATTR_NODISCARD in rdpdr_utils.h
This commit is contained in:
akallabeth
2026-01-25 08:08:05 +01:00
parent 09ae30a0f9
commit eb83f339b4
4 changed files with 54 additions and 38 deletions

View File

@@ -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
{

View File

@@ -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
}