24#include <freerdp/utils/string.h>
25#include <freerdp/settings.h>
27#if defined(CHANNEL_RDPEI)
28#include <freerdp/channels/rdpei.h>
31const char* rdp_redirection_flags_to_string(UINT32 flags,
char* buffer,
size_t size)
38 const struct map_t map[] = {
39 { LB_TARGET_NET_ADDRESS,
"LB_TARGET_NET_ADDRESS" },
40 { LB_LOAD_BALANCE_INFO,
"LB_LOAD_BALANCE_INFO" },
41 { LB_USERNAME,
"LB_USERNAME" },
42 { LB_DOMAIN,
"LB_DOMAIN" },
43 { LB_PASSWORD,
"LB_PASSWORD" },
44 { LB_DONTSTOREUSERNAME,
"LB_DONTSTOREUSERNAME" },
45 { LB_SMARTCARD_LOGON,
"LB_SMARTCARD_LOGON" },
46 { LB_NOREDIRECT,
"LB_NOREDIRECT" },
47 { LB_TARGET_FQDN,
"LB_TARGET_FQDN" },
48 { LB_TARGET_NETBIOS_NAME,
"LB_TARGET_NETBIOS_NAME" },
49 { LB_TARGET_NET_ADDRESSES,
"LB_TARGET_NET_ADDRESSES" },
50 { LB_CLIENT_TSV_URL,
"LB_CLIENT_TSV_URL" },
51 { LB_SERVER_TSV_CAPABLE,
"LB_SERVER_TSV_CAPABLE" },
52 { LB_PASSWORD_IS_PK_ENCRYPTED,
"LB_PASSWORD_IS_PK_ENCRYPTED" },
53 { LB_REDIRECTION_GUID,
"LB_REDIRECTION_GUID" },
54 { LB_TARGET_CERTIFICATE,
"LB_TARGET_CERTIFICATE" },
57 for (
size_t x = 0; x < ARRAYSIZE(map); x++)
59 const struct map_t* cur = &map[x];
60 if (flags & cur->flag)
62 if (!winpr_str_append(cur->name, buffer, size,
"|"))
69const char* rdp_cluster_info_flags_to_string(UINT32 flags,
char* buffer,
size_t size)
71 const UINT32 version = (flags & ServerSessionRedirectionVersionMask) >> 2;
72 if (flags & REDIRECTION_SUPPORTED)
73 winpr_str_append(
"REDIRECTION_SUPPORTED", buffer, size,
"|");
74 if (flags & REDIRECTED_SESSIONID_FIELD_VALID)
75 winpr_str_append(
"REDIRECTED_SESSIONID_FIELD_VALID", buffer, size,
"|");
76 if (flags & REDIRECTED_SMARTCARD)
77 winpr_str_append(
"REDIRECTED_SMARTCARD", buffer, size,
"|");
79 const char* str = NULL;
82 case REDIRECTION_VERSION1:
83 str =
"REDIRECTION_VERSION1";
85 case REDIRECTION_VERSION2:
86 str =
"REDIRECTION_VERSION2";
88 case REDIRECTION_VERSION3:
89 str =
"REDIRECTION_VERSION3";
91 case REDIRECTION_VERSION4:
92 str =
"REDIRECTION_VERSION4";
94 case REDIRECTION_VERSION5:
95 str =
"REDIRECTION_VERSION5";
97 case REDIRECTION_VERSION6:
98 str =
"REDIRECTION_VERSION6";
101 str =
"REDIRECTION_VERSION_UNKNOWN";
104 winpr_str_append(str, buffer, size,
"|");
106 char msg[32] = { 0 };
107 (void)_snprintf(msg,
sizeof(msg),
"[0x%08" PRIx32
"]", flags);
108 winpr_str_append(msg, buffer, size,
"");
113BOOL freerdp_extract_key_value(
const char* str, UINT32* pkey, UINT32* pvalue)
115 if (!str || !pkey || !pvalue)
120 unsigned long key = strtoul(str, &end1, 0);
121 if ((errno != 0) || !end1 || (*end1 !=
'=') || (key > UINT32_MAX))
125 unsigned long val = strtoul(&end1[1], NULL, 0);
126 if ((errno != 0) || (val > UINT32_MAX))
130 *pvalue = (UINT32)val;
134const char* freerdp_desktop_rotation_flags_to_string(UINT32 flags)
142 ENTRY(ORIENTATION_LANDSCAPE);
143 ENTRY(ORIENTATION_PORTRAIT);
144 ENTRY(ORIENTATION_LANDSCAPE_FLIPPED);
145 ENTRY(ORIENTATION_PORTRAIT_FLIPPED);
147 return "ORIENTATION_UNKNOWN";
152const char* freerdp_input_touch_state_string(DWORD flags)
154#if defined(CHANNEL_RDPEI)
155 if (flags & RDPINPUT_CONTACT_FLAG_DOWN)
156 return "RDPINPUT_CONTACT_FLAG_DOWN";
157 else if (flags & RDPINPUT_CONTACT_FLAG_UPDATE)
158 return "RDPINPUT_CONTACT_FLAG_UPDATE";
159 else if (flags & RDPINPUT_CONTACT_FLAG_UP)
160 return "RDPINPUT_CONTACT_FLAG_UP";
161 else if (flags & RDPINPUT_CONTACT_FLAG_INRANGE)
162 return "RDPINPUT_CONTACT_FLAG_INRANGE";
163 else if (flags & RDPINPUT_CONTACT_FLAG_INCONTACT)
164 return "RDPINPUT_CONTACT_FLAG_INCONTACT";
165 else if (flags & RDPINPUT_CONTACT_FLAG_CANCELED)
166 return "RDPINPUT_CONTACT_FLAG_CANCELED";
168 return "RDPINPUT_CONTACT_FLAG_UNKNOWN";
170 return "CHANNEL_RDPEI not supported";
174const char* freerdp_order_support_flags_string(UINT8 type)
182 ENTRY(NEG_DSTBLT_INDEX);
183 ENTRY(NEG_PATBLT_INDEX);
184 ENTRY(NEG_SCRBLT_INDEX);
185 ENTRY(NEG_MEMBLT_INDEX);
186 ENTRY(NEG_MEM3BLT_INDEX);
187 ENTRY(NEG_ATEXTOUT_INDEX);
188 ENTRY(NEG_AEXTTEXTOUT_INDEX);
189 ENTRY(NEG_DRAWNINEGRID_INDEX);
190 ENTRY(NEG_LINETO_INDEX);
191 ENTRY(NEG_MULTI_DRAWNINEGRID_INDEX);
192 ENTRY(NEG_OPAQUE_RECT_INDEX);
193 ENTRY(NEG_SAVEBITMAP_INDEX);
194 ENTRY(NEG_WTEXTOUT_INDEX);
195 ENTRY(NEG_MEMBLT_V2_INDEX);
196 ENTRY(NEG_MEM3BLT_V2_INDEX);
197 ENTRY(NEG_MULTIDSTBLT_INDEX);
198 ENTRY(NEG_MULTIPATBLT_INDEX);
199 ENTRY(NEG_MULTISCRBLT_INDEX);
200 ENTRY(NEG_MULTIOPAQUERECT_INDEX);
201 ENTRY(NEG_FAST_INDEX_INDEX);
202 ENTRY(NEG_POLYGON_SC_INDEX);
203 ENTRY(NEG_POLYGON_CB_INDEX);
204 ENTRY(NEG_POLYLINE_INDEX);
205 ENTRY(NEG_UNUSED23_INDEX);
206 ENTRY(NEG_FAST_GLYPH_INDEX);
207 ENTRY(NEG_ELLIPSE_SC_INDEX);
208 ENTRY(NEG_ELLIPSE_CB_INDEX);
209 ENTRY(NEG_GLYPH_INDEX_INDEX);
210 ENTRY(NEG_GLYPH_WEXTTEXTOUT_INDEX);
211 ENTRY(NEG_GLYPH_WLONGTEXTOUT_INDEX);
212 ENTRY(NEG_GLYPH_WLONGEXTTEXTOUT_INDEX);
213 ENTRY(NEG_UNUSED31_INDEX);