FreeRDP
Loading...
Searching...
No Matches
settings_getters.c
1/* Generated by */
2
3#define FREERDP_SETTINGS_INTERNAL_USE
4
5#include <freerdp/settings_types_private.h>
6
7#include "../core/settings.h"
8
9#include <winpr/assert.h>
10#include <freerdp/settings.h>
11#include <freerdp/log.h>
12
13#define TAG FREERDP_TAG("common.settings")
14
15static void free_string(char** current, BOOL cleanup)
16{
17 if (cleanup)
18 {
19 if (*current)
20 memset(*current, 0, strlen(*current));
21 free(*current);
22 (*current) = nullptr;
23 }
24}
25
26static BOOL alloc_empty_string(char** current, const char* next, size_t next_len)
27{
28 if (!next && (next_len > 0))
29 {
30 *current = calloc(next_len, 1);
31 return (*current != nullptr);
32 }
33 return FALSE;
34}
35
36static BOOL update_string_copy_(char** current, const char* next, size_t next_len, BOOL cleanup)
37{
38 free_string(current, cleanup);
39
40 if (alloc_empty_string(current, next, next_len))
41 return TRUE;
42
43 *current = (next ? strndup(next, next_len) : nullptr);
44 return !next || (*current != nullptr);
45}
46
47static BOOL update_string_(char** current, char* next, size_t next_len)
48{
49 free_string(current, TRUE);
50
51 if (alloc_empty_string(current, next, next_len))
52 return TRUE;
53
54 *current = next;
55 return !next || (*current != nullptr);
56}
57
58BOOL freerdp_settings_get_bool(WINPR_ATTR_UNUSED const rdpSettings* settings,
59 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Bool id)
60{
61 WINPR_ASSERT(settings);
62
63 switch (id)
64 {
65 case FreeRDP_AadSecurity:
66 return settings->AadSecurity;
67
68 case FreeRDP_AllowCacheWaitingList:
69 return settings->AllowCacheWaitingList;
70
71 case FreeRDP_AllowDesktopComposition:
72 return settings->AllowDesktopComposition;
73
74 case FreeRDP_AllowFontSmoothing:
75 return settings->AllowFontSmoothing;
76
77 case FreeRDP_AllowUnanouncedOrdersFromServer:
78 return settings->AllowUnanouncedOrdersFromServer;
79
80 case FreeRDP_AltSecFrameMarkerSupport:
81 return settings->AltSecFrameMarkerSupport;
82
83 case FreeRDP_AsyncChannels:
84 return settings->AsyncChannels;
85
86 case FreeRDP_AsyncUpdate:
87 return settings->AsyncUpdate;
88
89 case FreeRDP_AudioCapture:
90 return settings->AudioCapture;
91
92 case FreeRDP_AudioPlayback:
93 return settings->AudioPlayback;
94
95 case FreeRDP_Authentication:
96 return settings->Authentication;
97
98 case FreeRDP_AuthenticationOnly:
99 return settings->AuthenticationOnly;
100
101 case FreeRDP_AutoAcceptCertificate:
102 return settings->AutoAcceptCertificate;
103
104 case FreeRDP_AutoDenyCertificate:
105 return settings->AutoDenyCertificate;
106
107 case FreeRDP_AutoLogonEnabled:
108 return settings->AutoLogonEnabled;
109
110 case FreeRDP_AutoReconnectionEnabled:
111 return settings->AutoReconnectionEnabled;
112
113 case FreeRDP_AutoReconnectionPacketSupported:
114 return settings->AutoReconnectionPacketSupported;
115
116 case FreeRDP_BitmapCacheEnabled:
117 return settings->BitmapCacheEnabled;
118
119 case FreeRDP_BitmapCachePersistEnabled:
120 return settings->BitmapCachePersistEnabled;
121
122 case FreeRDP_BitmapCacheV3Enabled:
123 return settings->BitmapCacheV3Enabled;
124
125 case FreeRDP_BitmapCompressionDisabled:
126 return settings->BitmapCompressionDisabled;
127
128 case FreeRDP_CertificateCallbackPreferPEM:
129 return settings->CertificateCallbackPreferPEM;
130
131 case FreeRDP_CompressionEnabled:
132 return settings->CompressionEnabled;
133
134 case FreeRDP_ConnectChildSession:
135 return settings->ConnectChildSession;
136
137 case FreeRDP_ConsoleSession:
138 return settings->ConsoleSession;
139
140 case FreeRDP_CredentialsFromStdin:
141 return settings->CredentialsFromStdin;
142
143 case FreeRDP_DeactivateClientDecoding:
144 return settings->DeactivateClientDecoding;
145
146 case FreeRDP_Decorations:
147 return settings->Decorations;
148
149 case FreeRDP_DesktopResize:
150 return settings->DesktopResize;
151
152 case FreeRDP_DeviceRedirection:
153 return settings->DeviceRedirection;
154
155 case FreeRDP_DisableCredentialsDelegation:
156 return settings->DisableCredentialsDelegation;
157
158 case FreeRDP_DisableCtrlAltDel:
159 return settings->DisableCtrlAltDel;
160
161 case FreeRDP_DisableCursorBlinking:
162 return settings->DisableCursorBlinking;
163
164 case FreeRDP_DisableCursorShadow:
165 return settings->DisableCursorShadow;
166
167 case FreeRDP_DisableFullWindowDrag:
168 return settings->DisableFullWindowDrag;
169
170 case FreeRDP_DisableMenuAnims:
171 return settings->DisableMenuAnims;
172
173 case FreeRDP_DisableRemoteAppCapsCheck:
174 return settings->DisableRemoteAppCapsCheck;
175
176 case FreeRDP_DisableThemes:
177 return settings->DisableThemes;
178
179 case FreeRDP_DisableWallpaper:
180 return settings->DisableWallpaper;
181
182 case FreeRDP_DrawAllowColorSubsampling:
183 return settings->DrawAllowColorSubsampling;
184
185 case FreeRDP_DrawAllowDynamicColorFidelity:
186 return settings->DrawAllowDynamicColorFidelity;
187
188 case FreeRDP_DrawAllowSkipAlpha:
189 return settings->DrawAllowSkipAlpha;
190
191 case FreeRDP_DrawGdiPlusCacheEnabled:
192 return settings->DrawGdiPlusCacheEnabled;
193
194 case FreeRDP_DrawGdiPlusEnabled:
195 return settings->DrawGdiPlusEnabled;
196
197 case FreeRDP_DrawNineGridEnabled:
198 return settings->DrawNineGridEnabled;
199
200 case FreeRDP_DumpRemoteFx:
201 return settings->DumpRemoteFx;
202
203 case FreeRDP_DynamicDaylightTimeDisabled:
204 return settings->DynamicDaylightTimeDisabled;
205
206 case FreeRDP_DynamicResolutionUpdate:
207 return settings->DynamicResolutionUpdate;
208
209 case FreeRDP_EmbeddedWindow:
210 return settings->EmbeddedWindow;
211
212 case FreeRDP_EnableWindowsKey:
213 return settings->EnableWindowsKey;
214
215 case FreeRDP_EncomspVirtualChannel:
216 return settings->EncomspVirtualChannel;
217
218 case FreeRDP_ExtSecurity:
219 return settings->ExtSecurity;
220
221 case FreeRDP_ExternalCertificateManagement:
222 return settings->ExternalCertificateManagement;
223
224 case FreeRDP_FIPSMode:
225 return settings->FIPSMode;
226
227 case FreeRDP_FastPathInput:
228 return settings->FastPathInput;
229
230 case FreeRDP_FastPathOutput:
231 return settings->FastPathOutput;
232
233 case FreeRDP_ForceEncryptedCsPdu:
234 return settings->ForceEncryptedCsPdu;
235
236 case FreeRDP_ForceMultimon:
237 return settings->ForceMultimon;
238
239 case FreeRDP_FrameMarkerCommandEnabled:
240 return settings->FrameMarkerCommandEnabled;
241
242 case FreeRDP_Fullscreen:
243 return settings->Fullscreen;
244
245 case FreeRDP_GatewayArmTransport:
246 return settings->GatewayArmTransport;
247
248 case FreeRDP_GatewayAvdUseTenantid:
249 return settings->GatewayAvdUseTenantid;
250
251 case FreeRDP_GatewayBypassLocal:
252 return settings->GatewayBypassLocal;
253
254 case FreeRDP_GatewayEnabled:
255 return settings->GatewayEnabled;
256
257 case FreeRDP_GatewayHttpExtAuthSspiNtlm:
258 return settings->GatewayHttpExtAuthSspiNtlm;
259
260 case FreeRDP_GatewayHttpTransport:
261 return settings->GatewayHttpTransport;
262
263 case FreeRDP_GatewayHttpUseWebsockets:
264 return settings->GatewayHttpUseWebsockets;
265
266 case FreeRDP_GatewayIgnoreRedirectionPolicy:
267 return settings->GatewayIgnoreRedirectionPolicy;
268
269 case FreeRDP_GatewayRpcTransport:
270 return settings->GatewayRpcTransport;
271
272 case FreeRDP_GatewayUdpTransport:
273 return settings->GatewayUdpTransport;
274
275 case FreeRDP_GatewayUseSameCredentials:
276 return settings->GatewayUseSameCredentials;
277
278 case FreeRDP_GfxAVC444:
279 return settings->GfxAVC444;
280
281 case FreeRDP_GfxAVC444v2:
282 return settings->GfxAVC444v2;
283
284 case FreeRDP_GfxH264:
285 return settings->GfxH264;
286
287 case FreeRDP_GfxPlanar:
288 return settings->GfxPlanar;
289
290 case FreeRDP_GfxProgressive:
291 return settings->GfxProgressive;
292
293 case FreeRDP_GfxProgressiveV2:
294 return settings->GfxProgressiveV2;
295
296 case FreeRDP_GfxSendQoeAck:
297 return settings->GfxSendQoeAck;
298
299 case FreeRDP_GfxSmallCache:
300 return settings->GfxSmallCache;
301
302 case FreeRDP_GfxSuspendFrameAck:
303 return settings->GfxSuspendFrameAck;
304
305 case FreeRDP_GfxThinClient:
306 return settings->GfxThinClient;
307
308 case FreeRDP_GrabKeyboard:
309 return settings->GrabKeyboard;
310
311 case FreeRDP_GrabMouse:
312 return settings->GrabMouse;
313
314 case FreeRDP_HasExtendedMouseEvent:
315 return settings->HasExtendedMouseEvent;
316
317 case FreeRDP_HasHorizontalWheel:
318 return settings->HasHorizontalWheel;
319
320 case FreeRDP_HasMonitorAttributes:
321 return settings->HasMonitorAttributes;
322
323 case FreeRDP_HasQoeEvent:
324 return settings->HasQoeEvent;
325
326 case FreeRDP_HasRelativeMouseEvent:
327 return settings->HasRelativeMouseEvent;
328
329 case FreeRDP_HiDefRemoteApp:
330 return settings->HiDefRemoteApp;
331
332 case FreeRDP_IPv6Enabled:
333 return settings->IPv6Enabled;
334
335 case FreeRDP_IgnoreCertificate:
336 return settings->IgnoreCertificate;
337
338 case FreeRDP_IgnoreInvalidDevices:
339 return settings->IgnoreInvalidDevices;
340
341 case FreeRDP_JpegCodec:
342 return settings->JpegCodec;
343
344 case FreeRDP_KerberosRdgIsProxy:
345 return settings->KerberosRdgIsProxy;
346
347 case FreeRDP_ListMonitors:
348 return settings->ListMonitors;
349
350 case FreeRDP_LocalConnection:
351 return settings->LocalConnection;
352
353 case FreeRDP_LogonErrors:
354 return settings->LogonErrors;
355
356 case FreeRDP_LogonNotify:
357 return settings->LogonNotify;
358
359 case FreeRDP_LongCredentialsSupported:
360 return settings->LongCredentialsSupported;
361
362 case FreeRDP_LyncRdpMode:
363 return settings->LyncRdpMode;
364
365 case FreeRDP_MaximizeShell:
366 return settings->MaximizeShell;
367
368 case FreeRDP_MouseAttached:
369 return settings->MouseAttached;
370
371 case FreeRDP_MouseHasWheel:
372 return settings->MouseHasWheel;
373
374 case FreeRDP_MouseMotion:
375 return settings->MouseMotion;
376
377 case FreeRDP_MouseUseRelativeMove:
378 return settings->MouseUseRelativeMove;
379
380 case FreeRDP_MstscCookieMode:
381 return settings->MstscCookieMode;
382
383 case FreeRDP_MultiTouchGestures:
384 return settings->MultiTouchGestures;
385
386 case FreeRDP_MultiTouchInput:
387 return settings->MultiTouchInput;
388
389 case FreeRDP_NSCodec:
390 return settings->NSCodec;
391
392 case FreeRDP_NSCodecAllowDynamicColorFidelity:
393 return settings->NSCodecAllowDynamicColorFidelity;
394
395 case FreeRDP_NSCodecAllowSubsampling:
396 return settings->NSCodecAllowSubsampling;
397
398 case FreeRDP_NegotiateSecurityLayer:
399 return settings->NegotiateSecurityLayer;
400
401 case FreeRDP_NetworkAutoDetect:
402 return settings->NetworkAutoDetect;
403
404 case FreeRDP_NlaSecurity:
405 return settings->NlaSecurity;
406
407 case FreeRDP_NoBitmapCompressionHeader:
408 return settings->NoBitmapCompressionHeader;
409
410 case FreeRDP_OldLicenseBehaviour:
411 return settings->OldLicenseBehaviour;
412
413 case FreeRDP_PasswordIsSmartcardPin:
414 return settings->PasswordIsSmartcardPin;
415
416 case FreeRDP_PercentScreenUseHeight:
417 return settings->PercentScreenUseHeight;
418
419 case FreeRDP_PercentScreenUseWidth:
420 return settings->PercentScreenUseWidth;
421
422 case FreeRDP_PlayRemoteFx:
423 return settings->PlayRemoteFx;
424
425 case FreeRDP_PreferIPv6OverIPv4:
426 return settings->PreferIPv6OverIPv4;
427
428 case FreeRDP_PrintReconnectCookie:
429 return settings->PrintReconnectCookie;
430
431 case FreeRDP_PromptForCredentials:
432 return settings->PromptForCredentials;
433
434 case FreeRDP_RdpSecurity:
435 return settings->RdpSecurity;
436
437 case FreeRDP_RdstlsSecurity:
438 return settings->RdstlsSecurity;
439
440 case FreeRDP_RedirectClipboard:
441 return settings->RedirectClipboard;
442
443 case FreeRDP_RedirectDrives:
444 return settings->RedirectDrives;
445
446 case FreeRDP_RedirectHomeDrive:
447 return settings->RedirectHomeDrive;
448
449 case FreeRDP_RedirectParallelPorts:
450 return settings->RedirectParallelPorts;
451
452 case FreeRDP_RedirectPrinters:
453 return settings->RedirectPrinters;
454
455 case FreeRDP_RedirectSerialPorts:
456 return settings->RedirectSerialPorts;
457
458 case FreeRDP_RedirectSmartCards:
459 return settings->RedirectSmartCards;
460
461 case FreeRDP_RedirectWebAuthN:
462 return settings->RedirectWebAuthN;
463
464 case FreeRDP_RefreshRect:
465 return settings->RefreshRect;
466
467 case FreeRDP_RemdeskVirtualChannel:
468 return settings->RemdeskVirtualChannel;
469
470 case FreeRDP_RemoteAppLanguageBarSupported:
471 return settings->RemoteAppLanguageBarSupported;
472
473 case FreeRDP_RemoteApplicationMode:
474 return settings->RemoteApplicationMode;
475
476 case FreeRDP_RemoteAssistanceMode:
477 return settings->RemoteAssistanceMode;
478
479 case FreeRDP_RemoteAssistanceRequestControl:
480 return settings->RemoteAssistanceRequestControl;
481
482 case FreeRDP_RemoteConsoleAudio:
483 return settings->RemoteConsoleAudio;
484
485 case FreeRDP_RemoteCredentialGuard:
486 return settings->RemoteCredentialGuard;
487
488 case FreeRDP_RemoteFxCodec:
489 return settings->RemoteFxCodec;
490
491 case FreeRDP_RemoteFxImageCodec:
492 return settings->RemoteFxImageCodec;
493
494 case FreeRDP_RemoteFxOnly:
495 return settings->RemoteFxOnly;
496
497 case FreeRDP_RestrictedAdminModeRequired:
498 return settings->RestrictedAdminModeRequired;
499
500 case FreeRDP_RestrictedAdminModeSupported:
501 return settings->RestrictedAdminModeSupported;
502
503 case FreeRDP_SaltedChecksum:
504 return settings->SaltedChecksum;
505
506 case FreeRDP_SendPreconnectionPdu:
507 return settings->SendPreconnectionPdu;
508
509 case FreeRDP_ServerLicenseRequired:
510 return settings->ServerLicenseRequired;
511
512 case FreeRDP_ServerMode:
513 return settings->ServerMode;
514
515 case FreeRDP_SmartSizing:
516 return settings->SmartSizing;
517
518 case FreeRDP_SmartcardEmulation:
519 return settings->SmartcardEmulation;
520
521 case FreeRDP_SmartcardLogon:
522 return settings->SmartcardLogon;
523
524 case FreeRDP_SoftwareGdi:
525 return settings->SoftwareGdi;
526
527 case FreeRDP_SoundBeepsEnabled:
528 return settings->SoundBeepsEnabled;
529
530 case FreeRDP_SpanMonitors:
531 return settings->SpanMonitors;
532
533 case FreeRDP_SupportAsymetricKeys:
534 return settings->SupportAsymetricKeys;
535
536 case FreeRDP_SupportDisplayControl:
537 return settings->SupportDisplayControl;
538
539 case FreeRDP_SupportDynamicChannels:
540 return settings->SupportDynamicChannels;
541
542 case FreeRDP_SupportDynamicTimeZone:
543 return settings->SupportDynamicTimeZone;
544
545 case FreeRDP_SupportEchoChannel:
546 return settings->SupportEchoChannel;
547
548 case FreeRDP_SupportEdgeActionV1:
549 return settings->SupportEdgeActionV1;
550
551 case FreeRDP_SupportEdgeActionV2:
552 return settings->SupportEdgeActionV2;
553
554 case FreeRDP_SupportErrorInfoPdu:
555 return settings->SupportErrorInfoPdu;
556
557 case FreeRDP_SupportGeometryTracking:
558 return settings->SupportGeometryTracking;
559
560 case FreeRDP_SupportGraphicsPipeline:
561 return settings->SupportGraphicsPipeline;
562
563 case FreeRDP_SupportHeartbeatPdu:
564 return settings->SupportHeartbeatPdu;
565
566 case FreeRDP_SupportMonitorLayoutPdu:
567 return settings->SupportMonitorLayoutPdu;
568
569 case FreeRDP_SupportMultitransport:
570 return settings->SupportMultitransport;
571
572 case FreeRDP_SupportSSHAgentChannel:
573 return settings->SupportSSHAgentChannel;
574
575 case FreeRDP_SupportSkipChannelJoin:
576 return settings->SupportSkipChannelJoin;
577
578 case FreeRDP_SupportStatusInfoPdu:
579 return settings->SupportStatusInfoPdu;
580
581 case FreeRDP_SupportVideoOptimized:
582 return settings->SupportVideoOptimized;
583
584 case FreeRDP_SuppressOutput:
585 return settings->SuppressOutput;
586
587 case FreeRDP_SurfaceCommandsEnabled:
588 return settings->SurfaceCommandsEnabled;
589
590 case FreeRDP_SurfaceFrameMarkerEnabled:
591 return settings->SurfaceFrameMarkerEnabled;
592
593 case FreeRDP_SuspendInput:
594 return settings->SuspendInput;
595
596 case FreeRDP_SynchronousDynamicChannels:
597 return settings->SynchronousDynamicChannels;
598
599 case FreeRDP_SynchronousStaticChannels:
600 return settings->SynchronousStaticChannels;
601
602 case FreeRDP_TcpKeepAlive:
603 return settings->TcpKeepAlive;
604
605 case FreeRDP_TlsSecurity:
606 return settings->TlsSecurity;
607
608 case FreeRDP_ToggleFullscreen:
609 return settings->ToggleFullscreen;
610
611 case FreeRDP_TransportDump:
612 return settings->TransportDump;
613
614 case FreeRDP_TransportDumpReplay:
615 return settings->TransportDumpReplay;
616
617 case FreeRDP_TransportDumpReplayNodelay:
618 return settings->TransportDumpReplayNodelay;
619
620 case FreeRDP_UnicodeInput:
621 return settings->UnicodeInput;
622
623 case FreeRDP_UnmapButtons:
624 return settings->UnmapButtons;
625
626 case FreeRDP_UseCommonStdioCallbacks:
627 return settings->UseCommonStdioCallbacks;
628
629 case FreeRDP_UseMultimon:
630 return settings->UseMultimon;
631
632 case FreeRDP_UseRdpSecurityLayer:
633 return settings->UseRdpSecurityLayer;
634
635 case FreeRDP_UsingSavedCredentials:
636 return settings->UsingSavedCredentials;
637
638 case FreeRDP_VideoDisable:
639 return settings->VideoDisable;
640
641 case FreeRDP_VmConnectMode:
642 return settings->VmConnectMode;
643
644 case FreeRDP_WaitForOutputBufferFlush:
645 return settings->WaitForOutputBufferFlush;
646
647 case FreeRDP_Workarea:
648 return settings->Workarea;
649
650 default:
651 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
653 WINPR_ASSERT(FALSE);
654 return FALSE;
655 }
656}
657
658BOOL freerdp_settings_set_bool(WINPR_ATTR_UNUSED rdpSettings* settings,
659 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Bool id, BOOL val)
660{
661 union
662 {
663 void* v;
664 const void* cv;
665 BOOL c;
666 const BOOL cc;
667 } cnv;
668 WINPR_ASSERT(settings);
669
670 cnv.c = val;
671
672 switch (id)
673 {
674 case FreeRDP_AadSecurity:
675 settings->AadSecurity = cnv.c;
676 break;
677
678 case FreeRDP_AllowCacheWaitingList:
679 settings->AllowCacheWaitingList = cnv.c;
680 break;
681
682 case FreeRDP_AllowDesktopComposition:
683 settings->AllowDesktopComposition = cnv.c;
684 break;
685
686 case FreeRDP_AllowFontSmoothing:
687 settings->AllowFontSmoothing = cnv.c;
688 break;
689
690 case FreeRDP_AllowUnanouncedOrdersFromServer:
691 settings->AllowUnanouncedOrdersFromServer = cnv.c;
692 break;
693
694 case FreeRDP_AltSecFrameMarkerSupport:
695 settings->AltSecFrameMarkerSupport = cnv.c;
696 break;
697
698 case FreeRDP_AsyncChannels:
699 settings->AsyncChannels = cnv.c;
700 break;
701
702 case FreeRDP_AsyncUpdate:
703 settings->AsyncUpdate = cnv.c;
704 break;
705
706 case FreeRDP_AudioCapture:
707 settings->AudioCapture = cnv.c;
708 break;
709
710 case FreeRDP_AudioPlayback:
711 settings->AudioPlayback = cnv.c;
712 break;
713
714 case FreeRDP_Authentication:
715 settings->Authentication = cnv.c;
716 break;
717
718 case FreeRDP_AuthenticationOnly:
719 settings->AuthenticationOnly = cnv.c;
720 break;
721
722 case FreeRDP_AutoAcceptCertificate:
723 settings->AutoAcceptCertificate = cnv.c;
724 break;
725
726 case FreeRDP_AutoDenyCertificate:
727 settings->AutoDenyCertificate = cnv.c;
728 break;
729
730 case FreeRDP_AutoLogonEnabled:
731 settings->AutoLogonEnabled = cnv.c;
732 break;
733
734 case FreeRDP_AutoReconnectionEnabled:
735 settings->AutoReconnectionEnabled = cnv.c;
736 break;
737
738 case FreeRDP_AutoReconnectionPacketSupported:
739 settings->AutoReconnectionPacketSupported = cnv.c;
740 break;
741
742 case FreeRDP_BitmapCacheEnabled:
743 settings->BitmapCacheEnabled = cnv.c;
744 break;
745
746 case FreeRDP_BitmapCachePersistEnabled:
747 settings->BitmapCachePersistEnabled = cnv.c;
748 break;
749
750 case FreeRDP_BitmapCacheV3Enabled:
751 settings->BitmapCacheV3Enabled = cnv.c;
752 break;
753
754 case FreeRDP_BitmapCompressionDisabled:
755 settings->BitmapCompressionDisabled = cnv.c;
756 break;
757
758 case FreeRDP_CertificateCallbackPreferPEM:
759 settings->CertificateCallbackPreferPEM = cnv.c;
760 break;
761
762 case FreeRDP_CompressionEnabled:
763 settings->CompressionEnabled = cnv.c;
764 break;
765
766 case FreeRDP_ConnectChildSession:
767 settings->ConnectChildSession = cnv.c;
768 break;
769
770 case FreeRDP_ConsoleSession:
771 settings->ConsoleSession = cnv.c;
772 break;
773
774 case FreeRDP_CredentialsFromStdin:
775 settings->CredentialsFromStdin = cnv.c;
776 break;
777
778 case FreeRDP_DeactivateClientDecoding:
779 settings->DeactivateClientDecoding = cnv.c;
780 break;
781
782 case FreeRDP_Decorations:
783 settings->Decorations = cnv.c;
784 break;
785
786 case FreeRDP_DesktopResize:
787 settings->DesktopResize = cnv.c;
788 break;
789
790 case FreeRDP_DeviceRedirection:
791 settings->DeviceRedirection = cnv.c;
792 break;
793
794 case FreeRDP_DisableCredentialsDelegation:
795 settings->DisableCredentialsDelegation = cnv.c;
796 break;
797
798 case FreeRDP_DisableCtrlAltDel:
799 settings->DisableCtrlAltDel = cnv.c;
800 break;
801
802 case FreeRDP_DisableCursorBlinking:
803 settings->DisableCursorBlinking = cnv.c;
804 break;
805
806 case FreeRDP_DisableCursorShadow:
807 settings->DisableCursorShadow = cnv.c;
808 break;
809
810 case FreeRDP_DisableFullWindowDrag:
811 settings->DisableFullWindowDrag = cnv.c;
812 break;
813
814 case FreeRDP_DisableMenuAnims:
815 settings->DisableMenuAnims = cnv.c;
816 break;
817
818 case FreeRDP_DisableRemoteAppCapsCheck:
819 settings->DisableRemoteAppCapsCheck = cnv.c;
820 break;
821
822 case FreeRDP_DisableThemes:
823 settings->DisableThemes = cnv.c;
824 break;
825
826 case FreeRDP_DisableWallpaper:
827 settings->DisableWallpaper = cnv.c;
828 break;
829
830 case FreeRDP_DrawAllowColorSubsampling:
831 settings->DrawAllowColorSubsampling = cnv.c;
832 break;
833
834 case FreeRDP_DrawAllowDynamicColorFidelity:
835 settings->DrawAllowDynamicColorFidelity = cnv.c;
836 break;
837
838 case FreeRDP_DrawAllowSkipAlpha:
839 settings->DrawAllowSkipAlpha = cnv.c;
840 break;
841
842 case FreeRDP_DrawGdiPlusCacheEnabled:
843 settings->DrawGdiPlusCacheEnabled = cnv.c;
844 break;
845
846 case FreeRDP_DrawGdiPlusEnabled:
847 settings->DrawGdiPlusEnabled = cnv.c;
848 break;
849
850 case FreeRDP_DrawNineGridEnabled:
851 settings->DrawNineGridEnabled = cnv.c;
852 break;
853
854 case FreeRDP_DumpRemoteFx:
855 settings->DumpRemoteFx = cnv.c;
856 break;
857
858 case FreeRDP_DynamicDaylightTimeDisabled:
859 settings->DynamicDaylightTimeDisabled = cnv.c;
860 break;
861
862 case FreeRDP_DynamicResolutionUpdate:
863 settings->DynamicResolutionUpdate = cnv.c;
864 break;
865
866 case FreeRDP_EmbeddedWindow:
867 settings->EmbeddedWindow = cnv.c;
868 break;
869
870 case FreeRDP_EnableWindowsKey:
871 settings->EnableWindowsKey = cnv.c;
872 break;
873
874 case FreeRDP_EncomspVirtualChannel:
875 settings->EncomspVirtualChannel = cnv.c;
876 break;
877
878 case FreeRDP_ExtSecurity:
879 settings->ExtSecurity = cnv.c;
880 break;
881
882 case FreeRDP_ExternalCertificateManagement:
883 settings->ExternalCertificateManagement = cnv.c;
884 break;
885
886 case FreeRDP_FIPSMode:
887 settings->FIPSMode = cnv.c;
888 break;
889
890 case FreeRDP_FastPathInput:
891 settings->FastPathInput = cnv.c;
892 break;
893
894 case FreeRDP_FastPathOutput:
895 settings->FastPathOutput = cnv.c;
896 break;
897
898 case FreeRDP_ForceEncryptedCsPdu:
899 settings->ForceEncryptedCsPdu = cnv.c;
900 break;
901
902 case FreeRDP_ForceMultimon:
903 settings->ForceMultimon = cnv.c;
904 break;
905
906 case FreeRDP_FrameMarkerCommandEnabled:
907 settings->FrameMarkerCommandEnabled = cnv.c;
908 break;
909
910 case FreeRDP_Fullscreen:
911 settings->Fullscreen = cnv.c;
912 break;
913
914 case FreeRDP_GatewayArmTransport:
915 settings->GatewayArmTransport = cnv.c;
916 break;
917
918 case FreeRDP_GatewayAvdUseTenantid:
919 settings->GatewayAvdUseTenantid = cnv.c;
920 break;
921
922 case FreeRDP_GatewayBypassLocal:
923 settings->GatewayBypassLocal = cnv.c;
924 break;
925
926 case FreeRDP_GatewayEnabled:
927 settings->GatewayEnabled = cnv.c;
928 break;
929
930 case FreeRDP_GatewayHttpExtAuthSspiNtlm:
931 settings->GatewayHttpExtAuthSspiNtlm = cnv.c;
932 break;
933
934 case FreeRDP_GatewayHttpTransport:
935 settings->GatewayHttpTransport = cnv.c;
936 break;
937
938 case FreeRDP_GatewayHttpUseWebsockets:
939 settings->GatewayHttpUseWebsockets = cnv.c;
940 break;
941
942 case FreeRDP_GatewayIgnoreRedirectionPolicy:
943 settings->GatewayIgnoreRedirectionPolicy = cnv.c;
944 break;
945
946 case FreeRDP_GatewayRpcTransport:
947 settings->GatewayRpcTransport = cnv.c;
948 break;
949
950 case FreeRDP_GatewayUdpTransport:
951 settings->GatewayUdpTransport = cnv.c;
952 break;
953
954 case FreeRDP_GatewayUseSameCredentials:
955 settings->GatewayUseSameCredentials = cnv.c;
956 break;
957
958 case FreeRDP_GfxAVC444:
959 settings->GfxAVC444 = cnv.c;
960 break;
961
962 case FreeRDP_GfxAVC444v2:
963 settings->GfxAVC444v2 = cnv.c;
964 break;
965
966 case FreeRDP_GfxH264:
967 settings->GfxH264 = cnv.c;
968 break;
969
970 case FreeRDP_GfxPlanar:
971 settings->GfxPlanar = cnv.c;
972 break;
973
974 case FreeRDP_GfxProgressive:
975 settings->GfxProgressive = cnv.c;
976 break;
977
978 case FreeRDP_GfxProgressiveV2:
979 settings->GfxProgressiveV2 = cnv.c;
980 break;
981
982 case FreeRDP_GfxSendQoeAck:
983 settings->GfxSendQoeAck = cnv.c;
984 break;
985
986 case FreeRDP_GfxSmallCache:
987 settings->GfxSmallCache = cnv.c;
988 break;
989
990 case FreeRDP_GfxSuspendFrameAck:
991 settings->GfxSuspendFrameAck = cnv.c;
992 break;
993
994 case FreeRDP_GfxThinClient:
995 settings->GfxThinClient = cnv.c;
996 break;
997
998 case FreeRDP_GrabKeyboard:
999 settings->GrabKeyboard = cnv.c;
1000 break;
1001
1002 case FreeRDP_GrabMouse:
1003 settings->GrabMouse = cnv.c;
1004 break;
1005
1006 case FreeRDP_HasExtendedMouseEvent:
1007 settings->HasExtendedMouseEvent = cnv.c;
1008 break;
1009
1010 case FreeRDP_HasHorizontalWheel:
1011 settings->HasHorizontalWheel = cnv.c;
1012 break;
1013
1014 case FreeRDP_HasMonitorAttributes:
1015 settings->HasMonitorAttributes = cnv.c;
1016 break;
1017
1018 case FreeRDP_HasQoeEvent:
1019 settings->HasQoeEvent = cnv.c;
1020 break;
1021
1022 case FreeRDP_HasRelativeMouseEvent:
1023 settings->HasRelativeMouseEvent = cnv.c;
1024 break;
1025
1026 case FreeRDP_HiDefRemoteApp:
1027 settings->HiDefRemoteApp = cnv.c;
1028 break;
1029
1030 case FreeRDP_IPv6Enabled:
1031 settings->IPv6Enabled = cnv.c;
1032 break;
1033
1034 case FreeRDP_IgnoreCertificate:
1035 settings->IgnoreCertificate = cnv.c;
1036 break;
1037
1038 case FreeRDP_IgnoreInvalidDevices:
1039 settings->IgnoreInvalidDevices = cnv.c;
1040 break;
1041
1042 case FreeRDP_JpegCodec:
1043 settings->JpegCodec = cnv.c;
1044 break;
1045
1046 case FreeRDP_KerberosRdgIsProxy:
1047 settings->KerberosRdgIsProxy = cnv.c;
1048 break;
1049
1050 case FreeRDP_ListMonitors:
1051 settings->ListMonitors = cnv.c;
1052 break;
1053
1054 case FreeRDP_LocalConnection:
1055 settings->LocalConnection = cnv.c;
1056 break;
1057
1058 case FreeRDP_LogonErrors:
1059 settings->LogonErrors = cnv.c;
1060 break;
1061
1062 case FreeRDP_LogonNotify:
1063 settings->LogonNotify = cnv.c;
1064 break;
1065
1066 case FreeRDP_LongCredentialsSupported:
1067 settings->LongCredentialsSupported = cnv.c;
1068 break;
1069
1070 case FreeRDP_LyncRdpMode:
1071 settings->LyncRdpMode = cnv.c;
1072 break;
1073
1074 case FreeRDP_MaximizeShell:
1075 settings->MaximizeShell = cnv.c;
1076 break;
1077
1078 case FreeRDP_MouseAttached:
1079 settings->MouseAttached = cnv.c;
1080 break;
1081
1082 case FreeRDP_MouseHasWheel:
1083 settings->MouseHasWheel = cnv.c;
1084 break;
1085
1086 case FreeRDP_MouseMotion:
1087 settings->MouseMotion = cnv.c;
1088 break;
1089
1090 case FreeRDP_MouseUseRelativeMove:
1091 settings->MouseUseRelativeMove = cnv.c;
1092 break;
1093
1094 case FreeRDP_MstscCookieMode:
1095 settings->MstscCookieMode = cnv.c;
1096 break;
1097
1098 case FreeRDP_MultiTouchGestures:
1099 settings->MultiTouchGestures = cnv.c;
1100 break;
1101
1102 case FreeRDP_MultiTouchInput:
1103 settings->MultiTouchInput = cnv.c;
1104 break;
1105
1106 case FreeRDP_NSCodec:
1107 settings->NSCodec = cnv.c;
1108 break;
1109
1110 case FreeRDP_NSCodecAllowDynamicColorFidelity:
1111 settings->NSCodecAllowDynamicColorFidelity = cnv.c;
1112 break;
1113
1114 case FreeRDP_NSCodecAllowSubsampling:
1115 settings->NSCodecAllowSubsampling = cnv.c;
1116 break;
1117
1118 case FreeRDP_NegotiateSecurityLayer:
1119 settings->NegotiateSecurityLayer = cnv.c;
1120 break;
1121
1122 case FreeRDP_NetworkAutoDetect:
1123 settings->NetworkAutoDetect = cnv.c;
1124 break;
1125
1126 case FreeRDP_NlaSecurity:
1127 settings->NlaSecurity = cnv.c;
1128 break;
1129
1130 case FreeRDP_NoBitmapCompressionHeader:
1131 settings->NoBitmapCompressionHeader = cnv.c;
1132 break;
1133
1134 case FreeRDP_OldLicenseBehaviour:
1135 settings->OldLicenseBehaviour = cnv.c;
1136 break;
1137
1138 case FreeRDP_PasswordIsSmartcardPin:
1139 settings->PasswordIsSmartcardPin = cnv.c;
1140 break;
1141
1142 case FreeRDP_PercentScreenUseHeight:
1143 settings->PercentScreenUseHeight = cnv.c;
1144 break;
1145
1146 case FreeRDP_PercentScreenUseWidth:
1147 settings->PercentScreenUseWidth = cnv.c;
1148 break;
1149
1150 case FreeRDP_PlayRemoteFx:
1151 settings->PlayRemoteFx = cnv.c;
1152 break;
1153
1154 case FreeRDP_PreferIPv6OverIPv4:
1155 settings->PreferIPv6OverIPv4 = cnv.c;
1156 break;
1157
1158 case FreeRDP_PrintReconnectCookie:
1159 settings->PrintReconnectCookie = cnv.c;
1160 break;
1161
1162 case FreeRDP_PromptForCredentials:
1163 settings->PromptForCredentials = cnv.c;
1164 break;
1165
1166 case FreeRDP_RdpSecurity:
1167 settings->RdpSecurity = cnv.c;
1168 break;
1169
1170 case FreeRDP_RdstlsSecurity:
1171 settings->RdstlsSecurity = cnv.c;
1172 break;
1173
1174 case FreeRDP_RedirectClipboard:
1175 settings->RedirectClipboard = cnv.c;
1176 break;
1177
1178 case FreeRDP_RedirectDrives:
1179 settings->RedirectDrives = cnv.c;
1180 break;
1181
1182 case FreeRDP_RedirectHomeDrive:
1183 settings->RedirectHomeDrive = cnv.c;
1184 break;
1185
1186 case FreeRDP_RedirectParallelPorts:
1187 settings->RedirectParallelPorts = cnv.c;
1188 break;
1189
1190 case FreeRDP_RedirectPrinters:
1191 settings->RedirectPrinters = cnv.c;
1192 break;
1193
1194 case FreeRDP_RedirectSerialPorts:
1195 settings->RedirectSerialPorts = cnv.c;
1196 break;
1197
1198 case FreeRDP_RedirectSmartCards:
1199 settings->RedirectSmartCards = cnv.c;
1200 break;
1201
1202 case FreeRDP_RedirectWebAuthN:
1203 settings->RedirectWebAuthN = cnv.c;
1204 break;
1205
1206 case FreeRDP_RefreshRect:
1207 settings->RefreshRect = cnv.c;
1208 break;
1209
1210 case FreeRDP_RemdeskVirtualChannel:
1211 settings->RemdeskVirtualChannel = cnv.c;
1212 break;
1213
1214 case FreeRDP_RemoteAppLanguageBarSupported:
1215 settings->RemoteAppLanguageBarSupported = cnv.c;
1216 break;
1217
1218 case FreeRDP_RemoteApplicationMode:
1219 settings->RemoteApplicationMode = cnv.c;
1220 break;
1221
1222 case FreeRDP_RemoteAssistanceMode:
1223 settings->RemoteAssistanceMode = cnv.c;
1224 break;
1225
1226 case FreeRDP_RemoteAssistanceRequestControl:
1227 settings->RemoteAssistanceRequestControl = cnv.c;
1228 break;
1229
1230 case FreeRDP_RemoteConsoleAudio:
1231 settings->RemoteConsoleAudio = cnv.c;
1232 break;
1233
1234 case FreeRDP_RemoteCredentialGuard:
1235 settings->RemoteCredentialGuard = cnv.c;
1236 break;
1237
1238 case FreeRDP_RemoteFxCodec:
1239 settings->RemoteFxCodec = cnv.c;
1240 break;
1241
1242 case FreeRDP_RemoteFxImageCodec:
1243 settings->RemoteFxImageCodec = cnv.c;
1244 break;
1245
1246 case FreeRDP_RemoteFxOnly:
1247 settings->RemoteFxOnly = cnv.c;
1248 break;
1249
1250 case FreeRDP_RestrictedAdminModeRequired:
1251 settings->RestrictedAdminModeRequired = cnv.c;
1252 break;
1253
1254 case FreeRDP_RestrictedAdminModeSupported:
1255 settings->RestrictedAdminModeSupported = cnv.c;
1256 break;
1257
1258 case FreeRDP_SaltedChecksum:
1259 settings->SaltedChecksum = cnv.c;
1260 break;
1261
1262 case FreeRDP_SendPreconnectionPdu:
1263 settings->SendPreconnectionPdu = cnv.c;
1264 break;
1265
1266 case FreeRDP_ServerLicenseRequired:
1267 settings->ServerLicenseRequired = cnv.c;
1268 break;
1269
1270 case FreeRDP_ServerMode:
1271 settings->ServerMode = cnv.c;
1272 break;
1273
1274 case FreeRDP_SmartSizing:
1275 settings->SmartSizing = cnv.c;
1276 break;
1277
1278 case FreeRDP_SmartcardEmulation:
1279 settings->SmartcardEmulation = cnv.c;
1280 break;
1281
1282 case FreeRDP_SmartcardLogon:
1283 settings->SmartcardLogon = cnv.c;
1284 break;
1285
1286 case FreeRDP_SoftwareGdi:
1287 settings->SoftwareGdi = cnv.c;
1288 break;
1289
1290 case FreeRDP_SoundBeepsEnabled:
1291 settings->SoundBeepsEnabled = cnv.c;
1292 break;
1293
1294 case FreeRDP_SpanMonitors:
1295 settings->SpanMonitors = cnv.c;
1296 break;
1297
1298 case FreeRDP_SupportAsymetricKeys:
1299 settings->SupportAsymetricKeys = cnv.c;
1300 break;
1301
1302 case FreeRDP_SupportDisplayControl:
1303 settings->SupportDisplayControl = cnv.c;
1304 break;
1305
1306 case FreeRDP_SupportDynamicChannels:
1307 settings->SupportDynamicChannels = cnv.c;
1308 break;
1309
1310 case FreeRDP_SupportDynamicTimeZone:
1311 settings->SupportDynamicTimeZone = cnv.c;
1312 break;
1313
1314 case FreeRDP_SupportEchoChannel:
1315 settings->SupportEchoChannel = cnv.c;
1316 break;
1317
1318 case FreeRDP_SupportEdgeActionV1:
1319 settings->SupportEdgeActionV1 = cnv.c;
1320 break;
1321
1322 case FreeRDP_SupportEdgeActionV2:
1323 settings->SupportEdgeActionV2 = cnv.c;
1324 break;
1325
1326 case FreeRDP_SupportErrorInfoPdu:
1327 settings->SupportErrorInfoPdu = cnv.c;
1328 break;
1329
1330 case FreeRDP_SupportGeometryTracking:
1331 settings->SupportGeometryTracking = cnv.c;
1332 break;
1333
1334 case FreeRDP_SupportGraphicsPipeline:
1335 settings->SupportGraphicsPipeline = cnv.c;
1336 break;
1337
1338 case FreeRDP_SupportHeartbeatPdu:
1339 settings->SupportHeartbeatPdu = cnv.c;
1340 break;
1341
1342 case FreeRDP_SupportMonitorLayoutPdu:
1343 settings->SupportMonitorLayoutPdu = cnv.c;
1344 break;
1345
1346 case FreeRDP_SupportMultitransport:
1347 settings->SupportMultitransport = cnv.c;
1348 break;
1349
1350 case FreeRDP_SupportSSHAgentChannel:
1351 settings->SupportSSHAgentChannel = cnv.c;
1352 break;
1353
1354 case FreeRDP_SupportSkipChannelJoin:
1355 settings->SupportSkipChannelJoin = cnv.c;
1356 break;
1357
1358 case FreeRDP_SupportStatusInfoPdu:
1359 settings->SupportStatusInfoPdu = cnv.c;
1360 break;
1361
1362 case FreeRDP_SupportVideoOptimized:
1363 settings->SupportVideoOptimized = cnv.c;
1364 break;
1365
1366 case FreeRDP_SuppressOutput:
1367 settings->SuppressOutput = cnv.c;
1368 break;
1369
1370 case FreeRDP_SurfaceCommandsEnabled:
1371 settings->SurfaceCommandsEnabled = cnv.c;
1372 break;
1373
1374 case FreeRDP_SurfaceFrameMarkerEnabled:
1375 settings->SurfaceFrameMarkerEnabled = cnv.c;
1376 break;
1377
1378 case FreeRDP_SuspendInput:
1379 settings->SuspendInput = cnv.c;
1380 break;
1381
1382 case FreeRDP_SynchronousDynamicChannels:
1383 settings->SynchronousDynamicChannels = cnv.c;
1384 break;
1385
1386 case FreeRDP_SynchronousStaticChannels:
1387 settings->SynchronousStaticChannels = cnv.c;
1388 break;
1389
1390 case FreeRDP_TcpKeepAlive:
1391 settings->TcpKeepAlive = cnv.c;
1392 break;
1393
1394 case FreeRDP_TlsSecurity:
1395 settings->TlsSecurity = cnv.c;
1396 break;
1397
1398 case FreeRDP_ToggleFullscreen:
1399 settings->ToggleFullscreen = cnv.c;
1400 break;
1401
1402 case FreeRDP_TransportDump:
1403 settings->TransportDump = cnv.c;
1404 break;
1405
1406 case FreeRDP_TransportDumpReplay:
1407 settings->TransportDumpReplay = cnv.c;
1408 break;
1409
1410 case FreeRDP_TransportDumpReplayNodelay:
1411 settings->TransportDumpReplayNodelay = cnv.c;
1412 break;
1413
1414 case FreeRDP_UnicodeInput:
1415 settings->UnicodeInput = cnv.c;
1416 break;
1417
1418 case FreeRDP_UnmapButtons:
1419 settings->UnmapButtons = cnv.c;
1420 break;
1421
1422 case FreeRDP_UseCommonStdioCallbacks:
1423 settings->UseCommonStdioCallbacks = cnv.c;
1424 break;
1425
1426 case FreeRDP_UseMultimon:
1427 settings->UseMultimon = cnv.c;
1428 break;
1429
1430 case FreeRDP_UseRdpSecurityLayer:
1431 settings->UseRdpSecurityLayer = cnv.c;
1432 break;
1433
1434 case FreeRDP_UsingSavedCredentials:
1435 settings->UsingSavedCredentials = cnv.c;
1436 break;
1437
1438 case FreeRDP_VideoDisable:
1439 settings->VideoDisable = cnv.c;
1440 break;
1441
1442 case FreeRDP_VmConnectMode:
1443 settings->VmConnectMode = cnv.c;
1444 break;
1445
1446 case FreeRDP_WaitForOutputBufferFlush:
1447 settings->WaitForOutputBufferFlush = cnv.c;
1448 break;
1449
1450 case FreeRDP_Workarea:
1451 settings->Workarea = cnv.c;
1452 break;
1453
1454 default:
1455 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1457 return FALSE;
1458 }
1459 return TRUE;
1460}
1461
1462UINT16 freerdp_settings_get_uint16(WINPR_ATTR_UNUSED const rdpSettings* settings,
1463 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt16 id)
1464{
1465 WINPR_ASSERT(settings);
1466
1467 switch (id)
1468 {
1469 case FreeRDP_CapsGeneralCompressionLevel:
1470 return settings->CapsGeneralCompressionLevel;
1471
1472 case FreeRDP_CapsGeneralCompressionTypes:
1473 return settings->CapsGeneralCompressionTypes;
1474
1475 case FreeRDP_CapsProtocolVersion:
1476 return settings->CapsProtocolVersion;
1477
1478 case FreeRDP_CapsRemoteUnshareFlag:
1479 return settings->CapsRemoteUnshareFlag;
1480
1481 case FreeRDP_CapsUpdateCapabilityFlag:
1482 return settings->CapsUpdateCapabilityFlag;
1483
1484 case FreeRDP_DesktopOrientation:
1485 return settings->DesktopOrientation;
1486
1487 case FreeRDP_OrderSupportFlags:
1488 return settings->OrderSupportFlags;
1489
1490 case FreeRDP_OrderSupportFlagsEx:
1491 return settings->OrderSupportFlagsEx;
1492
1493 case FreeRDP_ProxyPort:
1494 return settings->ProxyPort;
1495
1496 case FreeRDP_SupportedColorDepths:
1497 return settings->SupportedColorDepths;
1498
1499 case FreeRDP_TLSMaxVersion:
1500 return settings->TLSMaxVersion;
1501
1502 case FreeRDP_TLSMinVersion:
1503 return settings->TLSMinVersion;
1504
1505 case FreeRDP_TextANSICodePage:
1506 return settings->TextANSICodePage;
1507
1508 default:
1509 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1511 WINPR_ASSERT(FALSE);
1512 return 0;
1513 }
1514}
1515
1516BOOL freerdp_settings_set_uint16(WINPR_ATTR_UNUSED rdpSettings* settings,
1517 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt16 id, UINT16 val)
1518{
1519 union
1520 {
1521 void* v;
1522 const void* cv;
1523 UINT16 c;
1524 const UINT16 cc;
1525 } cnv;
1526 WINPR_ASSERT(settings);
1527
1528 cnv.c = val;
1529
1530 switch (id)
1531 {
1532 case FreeRDP_CapsGeneralCompressionLevel:
1533 settings->CapsGeneralCompressionLevel = cnv.c;
1534 break;
1535
1536 case FreeRDP_CapsGeneralCompressionTypes:
1537 settings->CapsGeneralCompressionTypes = cnv.c;
1538 break;
1539
1540 case FreeRDP_CapsProtocolVersion:
1541 settings->CapsProtocolVersion = cnv.c;
1542 break;
1543
1544 case FreeRDP_CapsRemoteUnshareFlag:
1545 settings->CapsRemoteUnshareFlag = cnv.c;
1546 break;
1547
1548 case FreeRDP_CapsUpdateCapabilityFlag:
1549 settings->CapsUpdateCapabilityFlag = cnv.c;
1550 break;
1551
1552 case FreeRDP_DesktopOrientation:
1553 settings->DesktopOrientation = cnv.c;
1554 break;
1555
1556 case FreeRDP_OrderSupportFlags:
1557 settings->OrderSupportFlags = cnv.c;
1558 break;
1559
1560 case FreeRDP_OrderSupportFlagsEx:
1561 settings->OrderSupportFlagsEx = cnv.c;
1562 break;
1563
1564 case FreeRDP_ProxyPort:
1565 settings->ProxyPort = cnv.c;
1566 break;
1567
1568 case FreeRDP_SupportedColorDepths:
1569 settings->SupportedColorDepths = cnv.c;
1570 break;
1571
1572 case FreeRDP_TLSMaxVersion:
1573 settings->TLSMaxVersion = cnv.c;
1574 break;
1575
1576 case FreeRDP_TLSMinVersion:
1577 settings->TLSMinVersion = cnv.c;
1578 break;
1579
1580 case FreeRDP_TextANSICodePage:
1581 settings->TextANSICodePage = cnv.c;
1582 break;
1583
1584 default:
1585 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1587 return FALSE;
1588 }
1589 return TRUE;
1590}
1591
1592INT16 freerdp_settings_get_int16(WINPR_ATTR_UNUSED const rdpSettings* settings,
1593 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int16 id)
1594{
1595 WINPR_ASSERT(settings);
1596
1597 switch (id)
1598 {
1599 default:
1600 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1602 WINPR_ASSERT(FALSE);
1603 return 0;
1604 }
1605}
1606
1607BOOL freerdp_settings_set_int16(WINPR_ATTR_UNUSED rdpSettings* settings,
1608 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int16 id, INT16 val)
1609{
1610 union
1611 {
1612 void* v;
1613 const void* cv;
1614 INT16 c;
1615 const INT16 cc;
1616 } cnv;
1617 WINPR_ASSERT(settings);
1618
1619 cnv.c = val;
1620
1621 switch (id)
1622 {
1623 default:
1624 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1626 return FALSE;
1627 }
1628 return TRUE;
1629}
1630
1631UINT32 freerdp_settings_get_uint32(WINPR_ATTR_UNUSED const rdpSettings* settings,
1632 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt32 id)
1633{
1634 WINPR_ASSERT(settings);
1635
1636 switch (id)
1637 {
1638 case FreeRDP_AcceptedCertLength:
1639 return settings->AcceptedCertLength;
1640
1641 case FreeRDP_AuthenticationLevel:
1642 return settings->AuthenticationLevel;
1643
1644 case FreeRDP_AutoReconnectMaxRetries:
1645 return settings->AutoReconnectMaxRetries;
1646
1647 case FreeRDP_BitmapCacheV2NumCells:
1648 return settings->BitmapCacheV2NumCells;
1649
1650 case FreeRDP_BitmapCacheV3CodecId:
1651 return settings->BitmapCacheV3CodecId;
1652
1653 case FreeRDP_BitmapCacheVersion:
1654 return settings->BitmapCacheVersion;
1655
1656 case FreeRDP_BrushSupportLevel:
1657 return settings->BrushSupportLevel;
1658
1659 case FreeRDP_ChannelCount:
1660 return settings->ChannelCount;
1661
1662 case FreeRDP_ChannelDefArraySize:
1663 return settings->ChannelDefArraySize;
1664
1665 case FreeRDP_ClientBuild:
1666 return settings->ClientBuild;
1667
1668 case FreeRDP_ClientRandomLength:
1669 return settings->ClientRandomLength;
1670
1671 case FreeRDP_ClientSessionId:
1672 return settings->ClientSessionId;
1673
1674 case FreeRDP_ClipboardFeatureMask:
1675 return settings->ClipboardFeatureMask;
1676
1677 case FreeRDP_ClusterInfoFlags:
1678 return settings->ClusterInfoFlags;
1679
1680 case FreeRDP_ColorDepth:
1681 return settings->ColorDepth;
1682
1683 case FreeRDP_ColorPointerCacheSize:
1684 return settings->ColorPointerCacheSize;
1685
1686 case FreeRDP_CompDeskSupportLevel:
1687 return settings->CompDeskSupportLevel;
1688
1689 case FreeRDP_CompressionLevel:
1690 return settings->CompressionLevel;
1691
1692 case FreeRDP_ConnectionType:
1693 return settings->ConnectionType;
1694
1695 case FreeRDP_CookieMaxLength:
1696 return settings->CookieMaxLength;
1697
1698 case FreeRDP_DesktopHeight:
1699 return settings->DesktopHeight;
1700
1701 case FreeRDP_DesktopPhysicalHeight:
1702 return settings->DesktopPhysicalHeight;
1703
1704 case FreeRDP_DesktopPhysicalWidth:
1705 return settings->DesktopPhysicalWidth;
1706
1707 case FreeRDP_DesktopPosX:
1708 return settings->DesktopPosX;
1709
1710 case FreeRDP_DesktopPosY:
1711 return settings->DesktopPosY;
1712
1713 case FreeRDP_DesktopScaleFactor:
1714 return settings->DesktopScaleFactor;
1715
1716 case FreeRDP_DesktopWidth:
1717 return settings->DesktopWidth;
1718
1719 case FreeRDP_DeviceArraySize:
1720 return settings->DeviceArraySize;
1721
1722 case FreeRDP_DeviceCount:
1723 return settings->DeviceCount;
1724
1725 case FreeRDP_DeviceScaleFactor:
1726 return settings->DeviceScaleFactor;
1727
1728 case FreeRDP_DrawNineGridCacheEntries:
1729 return settings->DrawNineGridCacheEntries;
1730
1731 case FreeRDP_DrawNineGridCacheSize:
1732 return settings->DrawNineGridCacheSize;
1733
1734 case FreeRDP_DynamicChannelArraySize:
1735 return settings->DynamicChannelArraySize;
1736
1737 case FreeRDP_DynamicChannelCount:
1738 return settings->DynamicChannelCount;
1739
1740 case FreeRDP_EarlyCapabilityFlags:
1741 return settings->EarlyCapabilityFlags;
1742
1743 case FreeRDP_EncryptionLevel:
1744 return settings->EncryptionLevel;
1745
1746 case FreeRDP_EncryptionMethods:
1747 return settings->EncryptionMethods;
1748
1749 case FreeRDP_ExtEncryptionMethods:
1750 return settings->ExtEncryptionMethods;
1751
1752 case FreeRDP_FakeMouseMotionInterval:
1753 return settings->FakeMouseMotionInterval;
1754
1755 case FreeRDP_Floatbar:
1756 return settings->Floatbar;
1757
1758 case FreeRDP_ForceIPvX:
1759 return settings->ForceIPvX;
1760
1761 case FreeRDP_FrameAcknowledge:
1762 return settings->FrameAcknowledge;
1763
1764 case FreeRDP_GatewayAcceptedCertLength:
1765 return settings->GatewayAcceptedCertLength;
1766
1767 case FreeRDP_GatewayCredentialsSource:
1768 return settings->GatewayCredentialsSource;
1769
1770 case FreeRDP_GatewayPort:
1771 return settings->GatewayPort;
1772
1773 case FreeRDP_GatewayUsageMethod:
1774 return settings->GatewayUsageMethod;
1775
1776 case FreeRDP_GfxCapsFilter:
1777 return settings->GfxCapsFilter;
1778
1779 case FreeRDP_GlyphSupportLevel:
1780 return settings->GlyphSupportLevel;
1781
1782 case FreeRDP_JpegCodecId:
1783 return settings->JpegCodecId;
1784
1785 case FreeRDP_JpegQuality:
1786 return settings->JpegQuality;
1787
1788 case FreeRDP_KeySpec:
1789 return settings->KeySpec;
1790
1791 case FreeRDP_KeyboardCodePage:
1792 return settings->KeyboardCodePage;
1793
1794 case FreeRDP_KeyboardFunctionKey:
1795 return settings->KeyboardFunctionKey;
1796
1797 case FreeRDP_KeyboardHook:
1798 return settings->KeyboardHook;
1799
1800 case FreeRDP_KeyboardLayout:
1801 return settings->KeyboardLayout;
1802
1803 case FreeRDP_KeyboardSubType:
1804 return settings->KeyboardSubType;
1805
1806 case FreeRDP_KeyboardType:
1807 return settings->KeyboardType;
1808
1809 case FreeRDP_LargePointerFlag:
1810 return settings->LargePointerFlag;
1811
1812 case FreeRDP_LoadBalanceInfoLength:
1813 return settings->LoadBalanceInfoLength;
1814
1815 case FreeRDP_MonitorAttributeFlags:
1816 return settings->MonitorAttributeFlags;
1817
1818 case FreeRDP_MonitorCount:
1819 return settings->MonitorCount;
1820
1821 case FreeRDP_MonitorDefArraySize:
1822 return settings->MonitorDefArraySize;
1823
1824 case FreeRDP_MonitorFlags:
1825 return settings->MonitorFlags;
1826
1827 case FreeRDP_MultifragMaxRequestSize:
1828 return settings->MultifragMaxRequestSize;
1829
1830 case FreeRDP_MultitransportFlags:
1831 return settings->MultitransportFlags;
1832
1833 case FreeRDP_NSCodecColorLossLevel:
1834 return settings->NSCodecColorLossLevel;
1835
1836 case FreeRDP_NSCodecId:
1837 return settings->NSCodecId;
1838
1839 case FreeRDP_NegotiationFlags:
1840 return settings->NegotiationFlags;
1841
1842 case FreeRDP_NumMonitorIds:
1843 return settings->NumMonitorIds;
1844
1845 case FreeRDP_OffscreenCacheEntries:
1846 return settings->OffscreenCacheEntries;
1847
1848 case FreeRDP_OffscreenCacheSize:
1849 return settings->OffscreenCacheSize;
1850
1851 case FreeRDP_OffscreenSupportLevel:
1852 return settings->OffscreenSupportLevel;
1853
1854 case FreeRDP_OsMajorType:
1855 return settings->OsMajorType;
1856
1857 case FreeRDP_OsMinorType:
1858 return settings->OsMinorType;
1859
1860 case FreeRDP_Password51Length:
1861 return settings->Password51Length;
1862
1863 case FreeRDP_PduSource:
1864 return settings->PduSource;
1865
1866 case FreeRDP_PercentScreen:
1867 return settings->PercentScreen;
1868
1869 case FreeRDP_PerformanceFlags:
1870 return settings->PerformanceFlags;
1871
1872 case FreeRDP_PointerCacheSize:
1873 return settings->PointerCacheSize;
1874
1875 case FreeRDP_PreconnectionId:
1876 return settings->PreconnectionId;
1877
1878 case FreeRDP_ProxyType:
1879 return settings->ProxyType;
1880
1881 case FreeRDP_RdpVersion:
1882 return settings->RdpVersion;
1883
1884 case FreeRDP_ReceivedCapabilitiesSize:
1885 return settings->ReceivedCapabilitiesSize;
1886
1887 case FreeRDP_RedirectedSessionId:
1888 return settings->RedirectedSessionId;
1889
1890 case FreeRDP_RedirectionAcceptedCertLength:
1891 return settings->RedirectionAcceptedCertLength;
1892
1893 case FreeRDP_RedirectionFlags:
1894 return settings->RedirectionFlags;
1895
1896 case FreeRDP_RedirectionGuidLength:
1897 return settings->RedirectionGuidLength;
1898
1899 case FreeRDP_RedirectionPasswordLength:
1900 return settings->RedirectionPasswordLength;
1901
1902 case FreeRDP_RedirectionPreferType:
1903 return settings->RedirectionPreferType;
1904
1905 case FreeRDP_RedirectionTsvUrlLength:
1906 return settings->RedirectionTsvUrlLength;
1907
1908 case FreeRDP_RemoteAppNumIconCacheEntries:
1909 return settings->RemoteAppNumIconCacheEntries;
1910
1911 case FreeRDP_RemoteAppNumIconCaches:
1912 return settings->RemoteAppNumIconCaches;
1913
1914 case FreeRDP_RemoteApplicationExpandCmdLine:
1915 return settings->RemoteApplicationExpandCmdLine;
1916
1917 case FreeRDP_RemoteApplicationExpandWorkingDir:
1918 return settings->RemoteApplicationExpandWorkingDir;
1919
1920 case FreeRDP_RemoteApplicationSupportLevel:
1921 return settings->RemoteApplicationSupportLevel;
1922
1923 case FreeRDP_RemoteApplicationSupportMask:
1924 return settings->RemoteApplicationSupportMask;
1925
1926 case FreeRDP_RemoteFxCaptureFlags:
1927 return settings->RemoteFxCaptureFlags;
1928
1929 case FreeRDP_RemoteFxCodecId:
1930 return settings->RemoteFxCodecId;
1931
1932 case FreeRDP_RemoteFxCodecMode:
1933 return settings->RemoteFxCodecMode;
1934
1935 case FreeRDP_RemoteFxRlgrMode:
1936 return settings->RemoteFxRlgrMode;
1937
1938 case FreeRDP_RemoteWndSupportLevel:
1939 return settings->RemoteWndSupportLevel;
1940
1941 case FreeRDP_RequestedProtocols:
1942 return settings->RequestedProtocols;
1943
1944 case FreeRDP_SelectedProtocol:
1945 return settings->SelectedProtocol;
1946
1947 case FreeRDP_ServerCertificateLength:
1948 return settings->ServerCertificateLength;
1949
1950 case FreeRDP_ServerLicenseProductIssuersCount:
1951 return settings->ServerLicenseProductIssuersCount;
1952
1953 case FreeRDP_ServerLicenseProductVersion:
1954 return settings->ServerLicenseProductVersion;
1955
1956 case FreeRDP_ServerPort:
1957 return settings->ServerPort;
1958
1959 case FreeRDP_ServerRandomLength:
1960 return settings->ServerRandomLength;
1961
1962 case FreeRDP_ShareId:
1963 return settings->ShareId;
1964
1965 case FreeRDP_SmartSizingHeight:
1966 return settings->SmartSizingHeight;
1967
1968 case FreeRDP_SmartSizingWidth:
1969 return settings->SmartSizingWidth;
1970
1971 case FreeRDP_StaticChannelArraySize:
1972 return settings->StaticChannelArraySize;
1973
1974 case FreeRDP_StaticChannelCount:
1975 return settings->StaticChannelCount;
1976
1977 case FreeRDP_SurfaceCommandsSupported:
1978 return settings->SurfaceCommandsSupported;
1979
1980 case FreeRDP_TargetNetAddressCount:
1981 return settings->TargetNetAddressCount;
1982
1983 case FreeRDP_TcpAckTimeout:
1984 return settings->TcpAckTimeout;
1985
1986 case FreeRDP_TcpConnectTimeout:
1987 return settings->TcpConnectTimeout;
1988
1989 case FreeRDP_TcpKeepAliveDelay:
1990 return settings->TcpKeepAliveDelay;
1991
1992 case FreeRDP_TcpKeepAliveInterval:
1993 return settings->TcpKeepAliveInterval;
1994
1995 case FreeRDP_TcpKeepAliveRetries:
1996 return settings->TcpKeepAliveRetries;
1997
1998 case FreeRDP_ThreadingFlags:
1999 return settings->ThreadingFlags;
2000
2001 case FreeRDP_TlsSecLevel:
2002 return settings->TlsSecLevel;
2003
2004 case FreeRDP_VCChunkSize:
2005 return settings->VCChunkSize;
2006
2007 case FreeRDP_VCFlags:
2008 return settings->VCFlags;
2009
2010#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
2011 // API Compatibility section, remove with FreeRDP 4.x
2012 case (FreeRDP_Settings_Keys_UInt32)FreeRDP_MonitorLocalShiftX:
2013 return (UINT32)settings->MonitorLocalShiftX;
2014
2015 // API Compatibility section, remove with FreeRDP 4.x
2016 case (FreeRDP_Settings_Keys_UInt32)FreeRDP_MonitorLocalShiftY:
2017 return (UINT32)settings->MonitorLocalShiftY;
2018
2019#endif
2020 default:
2021 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2023 WINPR_ASSERT(FALSE);
2024 return 0;
2025 }
2026}
2027
2028BOOL freerdp_settings_set_uint32(WINPR_ATTR_UNUSED rdpSettings* settings,
2029 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt32 id, UINT32 val)
2030{
2031 union
2032 {
2033 void* v;
2034 const void* cv;
2035 UINT32 c;
2036 const UINT32 cc;
2037 } cnv;
2038 WINPR_ASSERT(settings);
2039
2040 cnv.c = val;
2041
2042 switch (id)
2043 {
2044 case FreeRDP_AcceptedCertLength:
2045 settings->AcceptedCertLength = cnv.c;
2046 break;
2047
2048 case FreeRDP_AuthenticationLevel:
2049 settings->AuthenticationLevel = cnv.c;
2050 break;
2051
2052 case FreeRDP_AutoReconnectMaxRetries:
2053 settings->AutoReconnectMaxRetries = cnv.c;
2054 break;
2055
2056 case FreeRDP_BitmapCacheV2NumCells:
2057 settings->BitmapCacheV2NumCells = cnv.c;
2058 break;
2059
2060 case FreeRDP_BitmapCacheV3CodecId:
2061 settings->BitmapCacheV3CodecId = cnv.c;
2062 break;
2063
2064 case FreeRDP_BitmapCacheVersion:
2065 settings->BitmapCacheVersion = cnv.c;
2066 break;
2067
2068 case FreeRDP_BrushSupportLevel:
2069 settings->BrushSupportLevel = cnv.c;
2070 break;
2071
2072 case FreeRDP_ChannelCount:
2073 settings->ChannelCount = cnv.c;
2074 break;
2075
2076 case FreeRDP_ChannelDefArraySize:
2077 settings->ChannelDefArraySize = cnv.c;
2078 break;
2079
2080 case FreeRDP_ClientBuild:
2081 settings->ClientBuild = cnv.c;
2082 break;
2083
2084 case FreeRDP_ClientRandomLength:
2085 settings->ClientRandomLength = cnv.c;
2086 break;
2087
2088 case FreeRDP_ClientSessionId:
2089 settings->ClientSessionId = cnv.c;
2090 break;
2091
2092 case FreeRDP_ClipboardFeatureMask:
2093 settings->ClipboardFeatureMask = cnv.c;
2094 break;
2095
2096 case FreeRDP_ClusterInfoFlags:
2097 settings->ClusterInfoFlags = cnv.c;
2098 break;
2099
2100 case FreeRDP_ColorDepth:
2101 settings->ColorDepth = cnv.c;
2102 break;
2103
2104 case FreeRDP_ColorPointerCacheSize:
2105 settings->ColorPointerCacheSize = cnv.c;
2106 break;
2107
2108 case FreeRDP_CompDeskSupportLevel:
2109 settings->CompDeskSupportLevel = cnv.c;
2110 break;
2111
2112 case FreeRDP_CompressionLevel:
2113 settings->CompressionLevel = cnv.c;
2114 break;
2115
2116 case FreeRDP_ConnectionType:
2117 settings->ConnectionType = cnv.c;
2118 break;
2119
2120 case FreeRDP_CookieMaxLength:
2121 settings->CookieMaxLength = cnv.c;
2122 break;
2123
2124 case FreeRDP_DesktopHeight:
2125 settings->DesktopHeight = cnv.c;
2126 break;
2127
2128 case FreeRDP_DesktopPhysicalHeight:
2129 settings->DesktopPhysicalHeight = cnv.c;
2130 break;
2131
2132 case FreeRDP_DesktopPhysicalWidth:
2133 settings->DesktopPhysicalWidth = cnv.c;
2134 break;
2135
2136 case FreeRDP_DesktopPosX:
2137 settings->DesktopPosX = cnv.c;
2138 break;
2139
2140 case FreeRDP_DesktopPosY:
2141 settings->DesktopPosY = cnv.c;
2142 break;
2143
2144 case FreeRDP_DesktopScaleFactor:
2145 settings->DesktopScaleFactor = cnv.c;
2146 break;
2147
2148 case FreeRDP_DesktopWidth:
2149 settings->DesktopWidth = cnv.c;
2150 break;
2151
2152 case FreeRDP_DeviceArraySize:
2153 settings->DeviceArraySize = cnv.c;
2154 break;
2155
2156 case FreeRDP_DeviceCount:
2157 settings->DeviceCount = cnv.c;
2158 break;
2159
2160 case FreeRDP_DeviceScaleFactor:
2161 settings->DeviceScaleFactor = cnv.c;
2162 break;
2163
2164 case FreeRDP_DrawNineGridCacheEntries:
2165 settings->DrawNineGridCacheEntries = cnv.c;
2166 break;
2167
2168 case FreeRDP_DrawNineGridCacheSize:
2169 settings->DrawNineGridCacheSize = cnv.c;
2170 break;
2171
2172 case FreeRDP_DynamicChannelArraySize:
2173 settings->DynamicChannelArraySize = cnv.c;
2174 break;
2175
2176 case FreeRDP_DynamicChannelCount:
2177 settings->DynamicChannelCount = cnv.c;
2178 break;
2179
2180 case FreeRDP_EarlyCapabilityFlags:
2181 settings->EarlyCapabilityFlags = cnv.c;
2182 break;
2183
2184 case FreeRDP_EncryptionLevel:
2185 settings->EncryptionLevel = cnv.c;
2186 break;
2187
2188 case FreeRDP_EncryptionMethods:
2189 settings->EncryptionMethods = cnv.c;
2190 break;
2191
2192 case FreeRDP_ExtEncryptionMethods:
2193 settings->ExtEncryptionMethods = cnv.c;
2194 break;
2195
2196 case FreeRDP_FakeMouseMotionInterval:
2197 settings->FakeMouseMotionInterval = cnv.c;
2198 break;
2199
2200 case FreeRDP_Floatbar:
2201 settings->Floatbar = cnv.c;
2202 break;
2203
2204 case FreeRDP_ForceIPvX:
2205 settings->ForceIPvX = cnv.c;
2206 break;
2207
2208 case FreeRDP_FrameAcknowledge:
2209 settings->FrameAcknowledge = cnv.c;
2210 break;
2211
2212 case FreeRDP_GatewayAcceptedCertLength:
2213 settings->GatewayAcceptedCertLength = cnv.c;
2214 break;
2215
2216 case FreeRDP_GatewayCredentialsSource:
2217 settings->GatewayCredentialsSource = cnv.c;
2218 break;
2219
2220 case FreeRDP_GatewayPort:
2221 settings->GatewayPort = cnv.c;
2222 break;
2223
2224 case FreeRDP_GatewayUsageMethod:
2225 settings->GatewayUsageMethod = cnv.c;
2226 break;
2227
2228 case FreeRDP_GfxCapsFilter:
2229 settings->GfxCapsFilter = cnv.c;
2230 break;
2231
2232 case FreeRDP_GlyphSupportLevel:
2233 settings->GlyphSupportLevel = cnv.c;
2234 break;
2235
2236 case FreeRDP_JpegCodecId:
2237 settings->JpegCodecId = cnv.c;
2238 break;
2239
2240 case FreeRDP_JpegQuality:
2241 settings->JpegQuality = cnv.c;
2242 break;
2243
2244 case FreeRDP_KeySpec:
2245 settings->KeySpec = cnv.c;
2246 break;
2247
2248 case FreeRDP_KeyboardCodePage:
2249 settings->KeyboardCodePage = cnv.c;
2250 break;
2251
2252 case FreeRDP_KeyboardFunctionKey:
2253 settings->KeyboardFunctionKey = cnv.c;
2254 break;
2255
2256 case FreeRDP_KeyboardHook:
2257 settings->KeyboardHook = cnv.c;
2258 break;
2259
2260 case FreeRDP_KeyboardLayout:
2261 settings->KeyboardLayout = cnv.c;
2262 break;
2263
2264 case FreeRDP_KeyboardSubType:
2265 settings->KeyboardSubType = cnv.c;
2266 break;
2267
2268 case FreeRDP_KeyboardType:
2269 settings->KeyboardType = cnv.c;
2270 break;
2271
2272 case FreeRDP_LargePointerFlag:
2273 settings->LargePointerFlag = cnv.c;
2274 break;
2275
2276 case FreeRDP_LoadBalanceInfoLength:
2277 settings->LoadBalanceInfoLength = cnv.c;
2278 break;
2279
2280 case FreeRDP_MonitorAttributeFlags:
2281 settings->MonitorAttributeFlags = cnv.c;
2282 break;
2283
2284 case FreeRDP_MonitorCount:
2285 settings->MonitorCount = cnv.c;
2286 break;
2287
2288 case FreeRDP_MonitorDefArraySize:
2289 settings->MonitorDefArraySize = cnv.c;
2290 break;
2291
2292 case FreeRDP_MonitorFlags:
2293 settings->MonitorFlags = cnv.c;
2294 break;
2295
2296 case FreeRDP_MultifragMaxRequestSize:
2297 settings->MultifragMaxRequestSize = cnv.c;
2298 break;
2299
2300 case FreeRDP_MultitransportFlags:
2301 settings->MultitransportFlags = cnv.c;
2302 break;
2303
2304 case FreeRDP_NSCodecColorLossLevel:
2305 settings->NSCodecColorLossLevel = cnv.c;
2306 break;
2307
2308 case FreeRDP_NSCodecId:
2309 settings->NSCodecId = cnv.c;
2310 break;
2311
2312 case FreeRDP_NegotiationFlags:
2313 settings->NegotiationFlags = cnv.c;
2314 break;
2315
2316 case FreeRDP_NumMonitorIds:
2317 settings->NumMonitorIds = cnv.c;
2318 break;
2319
2320 case FreeRDP_OffscreenCacheEntries:
2321 settings->OffscreenCacheEntries = cnv.c;
2322 break;
2323
2324 case FreeRDP_OffscreenCacheSize:
2325 settings->OffscreenCacheSize = cnv.c;
2326 break;
2327
2328 case FreeRDP_OffscreenSupportLevel:
2329 settings->OffscreenSupportLevel = cnv.c;
2330 break;
2331
2332 case FreeRDP_OsMajorType:
2333 settings->OsMajorType = cnv.c;
2334 break;
2335
2336 case FreeRDP_OsMinorType:
2337 settings->OsMinorType = cnv.c;
2338 break;
2339
2340 case FreeRDP_Password51Length:
2341 settings->Password51Length = cnv.c;
2342 break;
2343
2344 case FreeRDP_PduSource:
2345 settings->PduSource = cnv.c;
2346 break;
2347
2348 case FreeRDP_PercentScreen:
2349 settings->PercentScreen = cnv.c;
2350 break;
2351
2352 case FreeRDP_PerformanceFlags:
2353 settings->PerformanceFlags = cnv.c;
2354 break;
2355
2356 case FreeRDP_PointerCacheSize:
2357 settings->PointerCacheSize = cnv.c;
2358 break;
2359
2360 case FreeRDP_PreconnectionId:
2361 settings->PreconnectionId = cnv.c;
2362 break;
2363
2364 case FreeRDP_ProxyType:
2365 settings->ProxyType = cnv.c;
2366 break;
2367
2368 case FreeRDP_RdpVersion:
2369 settings->RdpVersion = cnv.c;
2370 break;
2371
2372 case FreeRDP_ReceivedCapabilitiesSize:
2373 settings->ReceivedCapabilitiesSize = cnv.c;
2374 break;
2375
2376 case FreeRDP_RedirectedSessionId:
2377 settings->RedirectedSessionId = cnv.c;
2378 break;
2379
2380 case FreeRDP_RedirectionAcceptedCertLength:
2381 settings->RedirectionAcceptedCertLength = cnv.c;
2382 break;
2383
2384 case FreeRDP_RedirectionFlags:
2385 settings->RedirectionFlags = cnv.c;
2386 break;
2387
2388 case FreeRDP_RedirectionGuidLength:
2389 settings->RedirectionGuidLength = cnv.c;
2390 break;
2391
2392 case FreeRDP_RedirectionPasswordLength:
2393 settings->RedirectionPasswordLength = cnv.c;
2394 break;
2395
2396 case FreeRDP_RedirectionPreferType:
2397 settings->RedirectionPreferType = cnv.c;
2398 break;
2399
2400 case FreeRDP_RedirectionTsvUrlLength:
2401 settings->RedirectionTsvUrlLength = cnv.c;
2402 break;
2403
2404 case FreeRDP_RemoteAppNumIconCacheEntries:
2405 settings->RemoteAppNumIconCacheEntries = cnv.c;
2406 break;
2407
2408 case FreeRDP_RemoteAppNumIconCaches:
2409 settings->RemoteAppNumIconCaches = cnv.c;
2410 break;
2411
2412 case FreeRDP_RemoteApplicationExpandCmdLine:
2413 settings->RemoteApplicationExpandCmdLine = cnv.c;
2414 break;
2415
2416 case FreeRDP_RemoteApplicationExpandWorkingDir:
2417 settings->RemoteApplicationExpandWorkingDir = cnv.c;
2418 break;
2419
2420 case FreeRDP_RemoteApplicationSupportLevel:
2421 settings->RemoteApplicationSupportLevel = cnv.c;
2422 break;
2423
2424 case FreeRDP_RemoteApplicationSupportMask:
2425 settings->RemoteApplicationSupportMask = cnv.c;
2426 break;
2427
2428 case FreeRDP_RemoteFxCaptureFlags:
2429 settings->RemoteFxCaptureFlags = cnv.c;
2430 break;
2431
2432 case FreeRDP_RemoteFxCodecId:
2433 settings->RemoteFxCodecId = cnv.c;
2434 break;
2435
2436 case FreeRDP_RemoteFxCodecMode:
2437 settings->RemoteFxCodecMode = cnv.c;
2438 break;
2439
2440 case FreeRDP_RemoteFxRlgrMode:
2441 settings->RemoteFxRlgrMode = cnv.c;
2442 break;
2443
2444 case FreeRDP_RemoteWndSupportLevel:
2445 settings->RemoteWndSupportLevel = cnv.c;
2446 break;
2447
2448 case FreeRDP_RequestedProtocols:
2449 settings->RequestedProtocols = cnv.c;
2450 break;
2451
2452 case FreeRDP_SelectedProtocol:
2453 settings->SelectedProtocol = cnv.c;
2454 break;
2455
2456 case FreeRDP_ServerCertificateLength:
2457 settings->ServerCertificateLength = cnv.c;
2458 break;
2459
2460 case FreeRDP_ServerLicenseProductIssuersCount:
2461 settings->ServerLicenseProductIssuersCount = cnv.c;
2462 break;
2463
2464 case FreeRDP_ServerLicenseProductVersion:
2465 settings->ServerLicenseProductVersion = cnv.c;
2466 break;
2467
2468 case FreeRDP_ServerPort:
2469 settings->ServerPort = cnv.c;
2470 break;
2471
2472 case FreeRDP_ServerRandomLength:
2473 settings->ServerRandomLength = cnv.c;
2474 break;
2475
2476 case FreeRDP_ShareId:
2477 settings->ShareId = cnv.c;
2478 break;
2479
2480 case FreeRDP_SmartSizingHeight:
2481 settings->SmartSizingHeight = cnv.c;
2482 break;
2483
2484 case FreeRDP_SmartSizingWidth:
2485 settings->SmartSizingWidth = cnv.c;
2486 break;
2487
2488 case FreeRDP_StaticChannelArraySize:
2489 settings->StaticChannelArraySize = cnv.c;
2490 break;
2491
2492 case FreeRDP_StaticChannelCount:
2493 settings->StaticChannelCount = cnv.c;
2494 break;
2495
2496 case FreeRDP_SurfaceCommandsSupported:
2497 settings->SurfaceCommandsSupported = cnv.c;
2498 break;
2499
2500 case FreeRDP_TargetNetAddressCount:
2501 settings->TargetNetAddressCount = cnv.c;
2502 break;
2503
2504 case FreeRDP_TcpAckTimeout:
2505 settings->TcpAckTimeout = cnv.c;
2506 break;
2507
2508 case FreeRDP_TcpConnectTimeout:
2509 settings->TcpConnectTimeout = cnv.c;
2510 break;
2511
2512 case FreeRDP_TcpKeepAliveDelay:
2513 settings->TcpKeepAliveDelay = cnv.c;
2514 break;
2515
2516 case FreeRDP_TcpKeepAliveInterval:
2517 settings->TcpKeepAliveInterval = cnv.c;
2518 break;
2519
2520 case FreeRDP_TcpKeepAliveRetries:
2521 settings->TcpKeepAliveRetries = cnv.c;
2522 break;
2523
2524 case FreeRDP_ThreadingFlags:
2525 settings->ThreadingFlags = cnv.c;
2526 break;
2527
2528 case FreeRDP_TlsSecLevel:
2529 settings->TlsSecLevel = cnv.c;
2530 break;
2531
2532 case FreeRDP_VCChunkSize:
2533 settings->VCChunkSize = cnv.c;
2534 break;
2535
2536 case FreeRDP_VCFlags:
2537 settings->VCFlags = cnv.c;
2538 break;
2539
2540#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
2541 // API Compatibility section, remove with FreeRDP 4.x
2542 case FreeRDP_MonitorLocalShiftX:
2543 settings->MonitorLocalShiftX = (int32_t)cnv.c;
2544 break;
2545
2546 // API Compatibility section, remove with FreeRDP 4.x
2547 case FreeRDP_MonitorLocalShiftY:
2548 settings->MonitorLocalShiftY = (int32_t)cnv.c;
2549 break;
2550
2551#endif
2552 default:
2553 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2555 return FALSE;
2556 }
2557 return TRUE;
2558}
2559
2560INT32 freerdp_settings_get_int32(WINPR_ATTR_UNUSED const rdpSettings* settings,
2561 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int32 id)
2562{
2563 WINPR_ASSERT(settings);
2564
2565 switch (id)
2566 {
2567 case FreeRDP_MonitorLocalShiftX:
2568 return settings->MonitorLocalShiftX;
2569
2570 case FreeRDP_MonitorLocalShiftY:
2571 return settings->MonitorLocalShiftY;
2572
2573 case FreeRDP_XPan:
2574 return settings->XPan;
2575
2576 case FreeRDP_YPan:
2577 return settings->YPan;
2578
2579 default:
2580 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2582 WINPR_ASSERT(FALSE);
2583 return 0;
2584 }
2585}
2586
2587BOOL freerdp_settings_set_int32(WINPR_ATTR_UNUSED rdpSettings* settings,
2588 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int32 id, INT32 val)
2589{
2590 union
2591 {
2592 void* v;
2593 const void* cv;
2594 INT32 c;
2595 const INT32 cc;
2596 } cnv;
2597 WINPR_ASSERT(settings);
2598
2599 cnv.c = val;
2600
2601 switch (id)
2602 {
2603 case FreeRDP_MonitorLocalShiftX:
2604 settings->MonitorLocalShiftX = cnv.c;
2605 break;
2606
2607 case FreeRDP_MonitorLocalShiftY:
2608 settings->MonitorLocalShiftY = cnv.c;
2609 break;
2610
2611 case FreeRDP_XPan:
2612 settings->XPan = cnv.c;
2613 break;
2614
2615 case FreeRDP_YPan:
2616 settings->YPan = cnv.c;
2617 break;
2618
2619 default:
2620 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2622 return FALSE;
2623 }
2624 return TRUE;
2625}
2626
2627UINT64 freerdp_settings_get_uint64(WINPR_ATTR_UNUSED const rdpSettings* settings,
2628 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt64 id)
2629{
2630 WINPR_ASSERT(settings);
2631
2632 switch (id)
2633 {
2634 case FreeRDP_MonitorOverrideFlags:
2635 return settings->MonitorOverrideFlags;
2636
2637 case FreeRDP_ParentWindowId:
2638 return settings->ParentWindowId;
2639
2640 default:
2641 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2643 WINPR_ASSERT(FALSE);
2644 return 0;
2645 }
2646}
2647
2648BOOL freerdp_settings_set_uint64(WINPR_ATTR_UNUSED rdpSettings* settings,
2649 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt64 id, UINT64 val)
2650{
2651 union
2652 {
2653 void* v;
2654 const void* cv;
2655 UINT64 c;
2656 const UINT64 cc;
2657 } cnv;
2658 WINPR_ASSERT(settings);
2659
2660 cnv.c = val;
2661
2662 switch (id)
2663 {
2664 case FreeRDP_MonitorOverrideFlags:
2665 settings->MonitorOverrideFlags = cnv.c;
2666 break;
2667
2668 case FreeRDP_ParentWindowId:
2669 settings->ParentWindowId = cnv.c;
2670 break;
2671
2672 default:
2673 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2675 return FALSE;
2676 }
2677 return TRUE;
2678}
2679
2680INT64 freerdp_settings_get_int64(WINPR_ATTR_UNUSED const rdpSettings* settings,
2681 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int64 id)
2682{
2683 WINPR_ASSERT(settings);
2684
2685 switch (id)
2686 {
2687 default:
2688 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2690 WINPR_ASSERT(FALSE);
2691 return 0;
2692 }
2693}
2694
2695BOOL freerdp_settings_set_int64(WINPR_ATTR_UNUSED rdpSettings* settings,
2696 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int64 id, INT64 val)
2697{
2698 union
2699 {
2700 void* v;
2701 const void* cv;
2702 INT64 c;
2703 const INT64 cc;
2704 } cnv;
2705 WINPR_ASSERT(settings);
2706
2707 cnv.c = val;
2708
2709 switch (id)
2710 {
2711 default:
2712 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2714 return FALSE;
2715 }
2716 return TRUE;
2717}
2718
2719const char* freerdp_settings_get_string(WINPR_ATTR_UNUSED const rdpSettings* settings,
2720 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id)
2721{
2722 WINPR_ASSERT(settings);
2723
2724 switch (id)
2725 {
2726 case FreeRDP_AadServerHostname:
2727 return settings->AadServerHostname;
2728
2729 case FreeRDP_AcceptedCert:
2730 return settings->AcceptedCert;
2731
2732 case FreeRDP_ActionScript:
2733 return settings->ActionScript;
2734
2735 case FreeRDP_AllowedTlsCiphers:
2736 return settings->AllowedTlsCiphers;
2737
2738 case FreeRDP_AlternateShell:
2739 return settings->AlternateShell;
2740
2741 case FreeRDP_AssistanceFile:
2742 return settings->AssistanceFile;
2743
2744 case FreeRDP_AuthenticationPackageList:
2745 return settings->AuthenticationPackageList;
2746
2747 case FreeRDP_AuthenticationServiceClass:
2748 return settings->AuthenticationServiceClass;
2749
2750 case FreeRDP_BitmapCachePersistFile:
2751 return settings->BitmapCachePersistFile;
2752
2753 case FreeRDP_CardName:
2754 return settings->CardName;
2755
2756 case FreeRDP_CertificateAcceptedFingerprints:
2757 return settings->CertificateAcceptedFingerprints;
2758
2759 case FreeRDP_CertificateName:
2760 return settings->CertificateName;
2761
2762 case FreeRDP_ClientAddress:
2763 return settings->ClientAddress;
2764
2765 case FreeRDP_ClientDir:
2766 return settings->ClientDir;
2767
2768 case FreeRDP_ClientHostname:
2769 return settings->ClientHostname;
2770
2771 case FreeRDP_ClientProductId:
2772 return settings->ClientProductId;
2773
2774 case FreeRDP_ClipboardUseSelection:
2775 return settings->ClipboardUseSelection;
2776
2777 case FreeRDP_ComputerName:
2778 return settings->ComputerName;
2779
2780 case FreeRDP_ConfigPath:
2781 return settings->ConfigPath;
2782
2783 case FreeRDP_ConnectionFile:
2784 return settings->ConnectionFile;
2785
2786 case FreeRDP_ContainerName:
2787 return settings->ContainerName;
2788
2789 case FreeRDP_CspName:
2790 return settings->CspName;
2791
2792 case FreeRDP_CurrentPath:
2793 return settings->CurrentPath;
2794
2795 case FreeRDP_Domain:
2796 return settings->Domain;
2797
2798 case FreeRDP_DrivesToRedirect:
2799 return settings->DrivesToRedirect;
2800
2801 case FreeRDP_DumpRemoteFxFile:
2802 return settings->DumpRemoteFxFile;
2803
2804 case FreeRDP_DynamicDSTTimeZoneKeyName:
2805 return settings->DynamicDSTTimeZoneKeyName;
2806
2807 case FreeRDP_GatewayAcceptedCert:
2808 return settings->GatewayAcceptedCert;
2809
2810 case FreeRDP_GatewayAccessToken:
2811 return settings->GatewayAccessToken;
2812
2813 case FreeRDP_GatewayAvdAadtenantid:
2814 return settings->GatewayAvdAadtenantid;
2815
2816 case FreeRDP_GatewayAvdAccessAadFormat:
2817 return settings->GatewayAvdAccessAadFormat;
2818
2819 case FreeRDP_GatewayAvdAccessTokenFormat:
2820 return settings->GatewayAvdAccessTokenFormat;
2821
2822 case FreeRDP_GatewayAvdActivityhint:
2823 return settings->GatewayAvdActivityhint;
2824
2825 case FreeRDP_GatewayAvdArmpath:
2826 return settings->GatewayAvdArmpath;
2827
2828 case FreeRDP_GatewayAvdClientID:
2829 return settings->GatewayAvdClientID;
2830
2831 case FreeRDP_GatewayAvdDiagnosticserviceurl:
2832 return settings->GatewayAvdDiagnosticserviceurl;
2833
2834 case FreeRDP_GatewayAvdGeo:
2835 return settings->GatewayAvdGeo;
2836
2837 case FreeRDP_GatewayAvdHubdiscoverygeourl:
2838 return settings->GatewayAvdHubdiscoverygeourl;
2839
2840 case FreeRDP_GatewayAvdScope:
2841 return settings->GatewayAvdScope;
2842
2843 case FreeRDP_GatewayAvdWvdEndpointPool:
2844 return settings->GatewayAvdWvdEndpointPool;
2845
2846 case FreeRDP_GatewayAzureActiveDirectory:
2847 return settings->GatewayAzureActiveDirectory;
2848
2849 case FreeRDP_GatewayDomain:
2850 return settings->GatewayDomain;
2851
2852 case FreeRDP_GatewayHostname:
2853 return settings->GatewayHostname;
2854
2855 case FreeRDP_GatewayHttpExtAuthBearer:
2856 return settings->GatewayHttpExtAuthBearer;
2857
2858 case FreeRDP_GatewayHttpMsUserAgent:
2859 return settings->GatewayHttpMsUserAgent;
2860
2861 case FreeRDP_GatewayHttpReferer:
2862 return settings->GatewayHttpReferer;
2863
2864 case FreeRDP_GatewayHttpUserAgent:
2865 return settings->GatewayHttpUserAgent;
2866
2867 case FreeRDP_GatewayPassword:
2868 return settings->GatewayPassword;
2869
2870 case FreeRDP_GatewayUrl:
2871 return settings->GatewayUrl;
2872
2873 case FreeRDP_GatewayUsername:
2874 return settings->GatewayUsername;
2875
2876 case FreeRDP_HomePath:
2877 return settings->HomePath;
2878
2879 case FreeRDP_ImeFileName:
2880 return settings->ImeFileName;
2881
2882 case FreeRDP_KerberosArmor:
2883 return settings->KerberosArmor;
2884
2885 case FreeRDP_KerberosCache:
2886 return settings->KerberosCache;
2887
2888 case FreeRDP_KerberosKdcUrl:
2889 return settings->KerberosKdcUrl;
2890
2891 case FreeRDP_KerberosKeytab:
2892 return settings->KerberosKeytab;
2893
2894 case FreeRDP_KerberosLifeTime:
2895 return settings->KerberosLifeTime;
2896
2897 case FreeRDP_KerberosRealm:
2898 return settings->KerberosRealm;
2899
2900 case FreeRDP_KerberosRenewableLifeTime:
2901 return settings->KerberosRenewableLifeTime;
2902
2903 case FreeRDP_KerberosStartTime:
2904 return settings->KerberosStartTime;
2905
2906 case FreeRDP_KeyboardPipeName:
2907 return settings->KeyboardPipeName;
2908
2909 case FreeRDP_KeyboardRemappingList:
2910 return settings->KeyboardRemappingList;
2911
2912 case FreeRDP_NtlmSamFile:
2913 return settings->NtlmSamFile;
2914
2915 case FreeRDP_Password:
2916 return settings->Password;
2917
2918 case FreeRDP_PasswordHash:
2919 return settings->PasswordHash;
2920
2921 case FreeRDP_Pkcs11Module:
2922 return settings->Pkcs11Module;
2923
2924 case FreeRDP_PkinitAnchors:
2925 return settings->PkinitAnchors;
2926
2927 case FreeRDP_PlayRemoteFxFile:
2928 return settings->PlayRemoteFxFile;
2929
2930 case FreeRDP_PreconnectionBlob:
2931 return settings->PreconnectionBlob;
2932
2933 case FreeRDP_ProxyHostname:
2934 return settings->ProxyHostname;
2935
2936 case FreeRDP_ProxyPassword:
2937 return settings->ProxyPassword;
2938
2939 case FreeRDP_ProxyUsername:
2940 return settings->ProxyUsername;
2941
2942 case FreeRDP_RDP2TCPArgs:
2943 return settings->RDP2TCPArgs;
2944
2945 case FreeRDP_ReaderName:
2946 return settings->ReaderName;
2947
2948 case FreeRDP_RedirectionAcceptedCert:
2949 return settings->RedirectionAcceptedCert;
2950
2951 case FreeRDP_RedirectionDomain:
2952 return settings->RedirectionDomain;
2953
2954 case FreeRDP_RedirectionTargetFQDN:
2955 return settings->RedirectionTargetFQDN;
2956
2957 case FreeRDP_RedirectionTargetNetBiosName:
2958 return settings->RedirectionTargetNetBiosName;
2959
2960 case FreeRDP_RedirectionUsername:
2961 return settings->RedirectionUsername;
2962
2963 case FreeRDP_RemoteApplicationCmdLine:
2964 return settings->RemoteApplicationCmdLine;
2965
2966 case FreeRDP_RemoteApplicationFile:
2967 return settings->RemoteApplicationFile;
2968
2969 case FreeRDP_RemoteApplicationGuid:
2970 return settings->RemoteApplicationGuid;
2971
2972 case FreeRDP_RemoteApplicationIcon:
2973 return settings->RemoteApplicationIcon;
2974
2975 case FreeRDP_RemoteApplicationName:
2976 return settings->RemoteApplicationName;
2977
2978 case FreeRDP_RemoteApplicationProgram:
2979 return settings->RemoteApplicationProgram;
2980
2981 case FreeRDP_RemoteApplicationWorkingDir:
2982 return settings->RemoteApplicationWorkingDir;
2983
2984 case FreeRDP_RemoteAssistancePassStub:
2985 return settings->RemoteAssistancePassStub;
2986
2987 case FreeRDP_RemoteAssistancePassword:
2988 return settings->RemoteAssistancePassword;
2989
2990 case FreeRDP_RemoteAssistanceRCTicket:
2991 return settings->RemoteAssistanceRCTicket;
2992
2993 case FreeRDP_RemoteAssistanceSessionId:
2994 return settings->RemoteAssistanceSessionId;
2995
2996 case FreeRDP_ServerHostname:
2997 return settings->ServerHostname;
2998
2999 case FreeRDP_ServerLicenseCompanyName:
3000 return settings->ServerLicenseCompanyName;
3001
3002 case FreeRDP_ServerLicenseProductName:
3003 return settings->ServerLicenseProductName;
3004
3005 case FreeRDP_ShellWorkingDirectory:
3006 return settings->ShellWorkingDirectory;
3007
3008 case FreeRDP_SmartcardCertificate:
3009 return settings->SmartcardCertificate;
3010
3011 case FreeRDP_SmartcardPrivateKey:
3012 return settings->SmartcardPrivateKey;
3013
3014 case FreeRDP_SspiModule:
3015 return settings->SspiModule;
3016
3017 case FreeRDP_TargetNetAddress:
3018 return settings->TargetNetAddress;
3019
3020 case FreeRDP_TerminalDescriptor:
3021 return settings->TerminalDescriptor;
3022
3023 case FreeRDP_TlsSecretsFile:
3024 return settings->TlsSecretsFile;
3025
3026 case FreeRDP_TransportDumpFile:
3027 return settings->TransportDumpFile;
3028
3029 case FreeRDP_UserSpecifiedServerName:
3030 return settings->UserSpecifiedServerName;
3031
3032 case FreeRDP_Username:
3033 return settings->Username;
3034
3035 case FreeRDP_WinSCardModule:
3036 return settings->WinSCardModule;
3037
3038 case FreeRDP_WindowTitle:
3039 return settings->WindowTitle;
3040
3041 case FreeRDP_WmClass:
3042 return settings->WmClass;
3043
3044 default:
3045 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
3047 WINPR_ASSERT(FALSE);
3048 return nullptr;
3049 }
3050}
3051
3052char* freerdp_settings_get_string_writable(rdpSettings* settings, FreeRDP_Settings_Keys_String id)
3053{
3054 WINPR_ASSERT(settings);
3055
3056 switch (id)
3057 {
3058 case FreeRDP_AadServerHostname:
3059 return settings->AadServerHostname;
3060
3061 case FreeRDP_AcceptedCert:
3062 return settings->AcceptedCert;
3063
3064 case FreeRDP_ActionScript:
3065 return settings->ActionScript;
3066
3067 case FreeRDP_AllowedTlsCiphers:
3068 return settings->AllowedTlsCiphers;
3069
3070 case FreeRDP_AlternateShell:
3071 return settings->AlternateShell;
3072
3073 case FreeRDP_AssistanceFile:
3074 return settings->AssistanceFile;
3075
3076 case FreeRDP_AuthenticationPackageList:
3077 return settings->AuthenticationPackageList;
3078
3079 case FreeRDP_AuthenticationServiceClass:
3080 return settings->AuthenticationServiceClass;
3081
3082 case FreeRDP_BitmapCachePersistFile:
3083 return settings->BitmapCachePersistFile;
3084
3085 case FreeRDP_CardName:
3086 return settings->CardName;
3087
3088 case FreeRDP_CertificateAcceptedFingerprints:
3089 return settings->CertificateAcceptedFingerprints;
3090
3091 case FreeRDP_CertificateName:
3092 return settings->CertificateName;
3093
3094 case FreeRDP_ClientAddress:
3095 return settings->ClientAddress;
3096
3097 case FreeRDP_ClientDir:
3098 return settings->ClientDir;
3099
3100 case FreeRDP_ClientHostname:
3101 return settings->ClientHostname;
3102
3103 case FreeRDP_ClientProductId:
3104 return settings->ClientProductId;
3105
3106 case FreeRDP_ClipboardUseSelection:
3107 return settings->ClipboardUseSelection;
3108
3109 case FreeRDP_ComputerName:
3110 return settings->ComputerName;
3111
3112 case FreeRDP_ConfigPath:
3113 return settings->ConfigPath;
3114
3115 case FreeRDP_ConnectionFile:
3116 return settings->ConnectionFile;
3117
3118 case FreeRDP_ContainerName:
3119 return settings->ContainerName;
3120
3121 case FreeRDP_CspName:
3122 return settings->CspName;
3123
3124 case FreeRDP_CurrentPath:
3125 return settings->CurrentPath;
3126
3127 case FreeRDP_Domain:
3128 return settings->Domain;
3129
3130 case FreeRDP_DrivesToRedirect:
3131 return settings->DrivesToRedirect;
3132
3133 case FreeRDP_DumpRemoteFxFile:
3134 return settings->DumpRemoteFxFile;
3135
3136 case FreeRDP_DynamicDSTTimeZoneKeyName:
3137 return settings->DynamicDSTTimeZoneKeyName;
3138
3139 case FreeRDP_GatewayAcceptedCert:
3140 return settings->GatewayAcceptedCert;
3141
3142 case FreeRDP_GatewayAccessToken:
3143 return settings->GatewayAccessToken;
3144
3145 case FreeRDP_GatewayAvdAadtenantid:
3146 return settings->GatewayAvdAadtenantid;
3147
3148 case FreeRDP_GatewayAvdAccessAadFormat:
3149 return settings->GatewayAvdAccessAadFormat;
3150
3151 case FreeRDP_GatewayAvdAccessTokenFormat:
3152 return settings->GatewayAvdAccessTokenFormat;
3153
3154 case FreeRDP_GatewayAvdActivityhint:
3155 return settings->GatewayAvdActivityhint;
3156
3157 case FreeRDP_GatewayAvdArmpath:
3158 return settings->GatewayAvdArmpath;
3159
3160 case FreeRDP_GatewayAvdClientID:
3161 return settings->GatewayAvdClientID;
3162
3163 case FreeRDP_GatewayAvdDiagnosticserviceurl:
3164 return settings->GatewayAvdDiagnosticserviceurl;
3165
3166 case FreeRDP_GatewayAvdGeo:
3167 return settings->GatewayAvdGeo;
3168
3169 case FreeRDP_GatewayAvdHubdiscoverygeourl:
3170 return settings->GatewayAvdHubdiscoverygeourl;
3171
3172 case FreeRDP_GatewayAvdScope:
3173 return settings->GatewayAvdScope;
3174
3175 case FreeRDP_GatewayAvdWvdEndpointPool:
3176 return settings->GatewayAvdWvdEndpointPool;
3177
3178 case FreeRDP_GatewayAzureActiveDirectory:
3179 return settings->GatewayAzureActiveDirectory;
3180
3181 case FreeRDP_GatewayDomain:
3182 return settings->GatewayDomain;
3183
3184 case FreeRDP_GatewayHostname:
3185 return settings->GatewayHostname;
3186
3187 case FreeRDP_GatewayHttpExtAuthBearer:
3188 return settings->GatewayHttpExtAuthBearer;
3189
3190 case FreeRDP_GatewayHttpMsUserAgent:
3191 return settings->GatewayHttpMsUserAgent;
3192
3193 case FreeRDP_GatewayHttpReferer:
3194 return settings->GatewayHttpReferer;
3195
3196 case FreeRDP_GatewayHttpUserAgent:
3197 return settings->GatewayHttpUserAgent;
3198
3199 case FreeRDP_GatewayPassword:
3200 return settings->GatewayPassword;
3201
3202 case FreeRDP_GatewayUrl:
3203 return settings->GatewayUrl;
3204
3205 case FreeRDP_GatewayUsername:
3206 return settings->GatewayUsername;
3207
3208 case FreeRDP_HomePath:
3209 return settings->HomePath;
3210
3211 case FreeRDP_ImeFileName:
3212 return settings->ImeFileName;
3213
3214 case FreeRDP_KerberosArmor:
3215 return settings->KerberosArmor;
3216
3217 case FreeRDP_KerberosCache:
3218 return settings->KerberosCache;
3219
3220 case FreeRDP_KerberosKdcUrl:
3221 return settings->KerberosKdcUrl;
3222
3223 case FreeRDP_KerberosKeytab:
3224 return settings->KerberosKeytab;
3225
3226 case FreeRDP_KerberosLifeTime:
3227 return settings->KerberosLifeTime;
3228
3229 case FreeRDP_KerberosRealm:
3230 return settings->KerberosRealm;
3231
3232 case FreeRDP_KerberosRenewableLifeTime:
3233 return settings->KerberosRenewableLifeTime;
3234
3235 case FreeRDP_KerberosStartTime:
3236 return settings->KerberosStartTime;
3237
3238 case FreeRDP_KeyboardPipeName:
3239 return settings->KeyboardPipeName;
3240
3241 case FreeRDP_KeyboardRemappingList:
3242 return settings->KeyboardRemappingList;
3243
3244 case FreeRDP_NtlmSamFile:
3245 return settings->NtlmSamFile;
3246
3247 case FreeRDP_Password:
3248 return settings->Password;
3249
3250 case FreeRDP_PasswordHash:
3251 return settings->PasswordHash;
3252
3253 case FreeRDP_Pkcs11Module:
3254 return settings->Pkcs11Module;
3255
3256 case FreeRDP_PkinitAnchors:
3257 return settings->PkinitAnchors;
3258
3259 case FreeRDP_PlayRemoteFxFile:
3260 return settings->PlayRemoteFxFile;
3261
3262 case FreeRDP_PreconnectionBlob:
3263 return settings->PreconnectionBlob;
3264
3265 case FreeRDP_ProxyHostname:
3266 return settings->ProxyHostname;
3267
3268 case FreeRDP_ProxyPassword:
3269 return settings->ProxyPassword;
3270
3271 case FreeRDP_ProxyUsername:
3272 return settings->ProxyUsername;
3273
3274 case FreeRDP_RDP2TCPArgs:
3275 return settings->RDP2TCPArgs;
3276
3277 case FreeRDP_ReaderName:
3278 return settings->ReaderName;
3279
3280 case FreeRDP_RedirectionAcceptedCert:
3281 return settings->RedirectionAcceptedCert;
3282
3283 case FreeRDP_RedirectionDomain:
3284 return settings->RedirectionDomain;
3285
3286 case FreeRDP_RedirectionTargetFQDN:
3287 return settings->RedirectionTargetFQDN;
3288
3289 case FreeRDP_RedirectionTargetNetBiosName:
3290 return settings->RedirectionTargetNetBiosName;
3291
3292 case FreeRDP_RedirectionUsername:
3293 return settings->RedirectionUsername;
3294
3295 case FreeRDP_RemoteApplicationCmdLine:
3296 return settings->RemoteApplicationCmdLine;
3297
3298 case FreeRDP_RemoteApplicationFile:
3299 return settings->RemoteApplicationFile;
3300
3301 case FreeRDP_RemoteApplicationGuid:
3302 return settings->RemoteApplicationGuid;
3303
3304 case FreeRDP_RemoteApplicationIcon:
3305 return settings->RemoteApplicationIcon;
3306
3307 case FreeRDP_RemoteApplicationName:
3308 return settings->RemoteApplicationName;
3309
3310 case FreeRDP_RemoteApplicationProgram:
3311 return settings->RemoteApplicationProgram;
3312
3313 case FreeRDP_RemoteApplicationWorkingDir:
3314 return settings->RemoteApplicationWorkingDir;
3315
3316 case FreeRDP_RemoteAssistancePassStub:
3317 return settings->RemoteAssistancePassStub;
3318
3319 case FreeRDP_RemoteAssistancePassword:
3320 return settings->RemoteAssistancePassword;
3321
3322 case FreeRDP_RemoteAssistanceRCTicket:
3323 return settings->RemoteAssistanceRCTicket;
3324
3325 case FreeRDP_RemoteAssistanceSessionId:
3326 return settings->RemoteAssistanceSessionId;
3327
3328 case FreeRDP_ServerHostname:
3329 return settings->ServerHostname;
3330
3331 case FreeRDP_ServerLicenseCompanyName:
3332 return settings->ServerLicenseCompanyName;
3333
3334 case FreeRDP_ServerLicenseProductName:
3335 return settings->ServerLicenseProductName;
3336
3337 case FreeRDP_ShellWorkingDirectory:
3338 return settings->ShellWorkingDirectory;
3339
3340 case FreeRDP_SmartcardCertificate:
3341 return settings->SmartcardCertificate;
3342
3343 case FreeRDP_SmartcardPrivateKey:
3344 return settings->SmartcardPrivateKey;
3345
3346 case FreeRDP_SspiModule:
3347 return settings->SspiModule;
3348
3349 case FreeRDP_TargetNetAddress:
3350 return settings->TargetNetAddress;
3351
3352 case FreeRDP_TerminalDescriptor:
3353 return settings->TerminalDescriptor;
3354
3355 case FreeRDP_TlsSecretsFile:
3356 return settings->TlsSecretsFile;
3357
3358 case FreeRDP_TransportDumpFile:
3359 return settings->TransportDumpFile;
3360
3361 case FreeRDP_UserSpecifiedServerName:
3362 return settings->UserSpecifiedServerName;
3363
3364 case FreeRDP_Username:
3365 return settings->Username;
3366
3367 case FreeRDP_WinSCardModule:
3368 return settings->WinSCardModule;
3369
3370 case FreeRDP_WindowTitle:
3371 return settings->WindowTitle;
3372
3373 case FreeRDP_WmClass:
3374 return settings->WmClass;
3375
3376 default:
3377 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
3379 WINPR_ASSERT(FALSE);
3380 return nullptr;
3381 }
3382}
3383
3384BOOL freerdp_settings_set_string_(WINPR_ATTR_UNUSED rdpSettings* settings,
3385 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id,
3386 const char* val, size_t len)
3387{
3388 union
3389 {
3390 void* v;
3391 const void* cv;
3392 char* c;
3393 const char* cc;
3394 } cnv;
3395 WINPR_ASSERT(settings);
3396
3397 cnv.cc = val;
3398
3399 switch (id)
3400 {
3401 case FreeRDP_AadServerHostname:
3402 return update_string_(&settings->AadServerHostname, cnv.c, len);
3403
3404 case FreeRDP_AcceptedCert:
3405 return update_string_(&settings->AcceptedCert, cnv.c, len);
3406
3407 case FreeRDP_ActionScript:
3408 return update_string_(&settings->ActionScript, cnv.c, len);
3409
3410 case FreeRDP_AllowedTlsCiphers:
3411 return update_string_(&settings->AllowedTlsCiphers, cnv.c, len);
3412
3413 case FreeRDP_AlternateShell:
3414 return update_string_(&settings->AlternateShell, cnv.c, len);
3415
3416 case FreeRDP_AssistanceFile:
3417 return update_string_(&settings->AssistanceFile, cnv.c, len);
3418
3419 case FreeRDP_AuthenticationPackageList:
3420 return update_string_(&settings->AuthenticationPackageList, cnv.c, len);
3421
3422 case FreeRDP_AuthenticationServiceClass:
3423 return update_string_(&settings->AuthenticationServiceClass, cnv.c, len);
3424
3425 case FreeRDP_BitmapCachePersistFile:
3426 return update_string_(&settings->BitmapCachePersistFile, cnv.c, len);
3427
3428 case FreeRDP_CardName:
3429 return update_string_(&settings->CardName, cnv.c, len);
3430
3431 case FreeRDP_CertificateAcceptedFingerprints:
3432 return update_string_(&settings->CertificateAcceptedFingerprints, cnv.c, len);
3433
3434 case FreeRDP_CertificateName:
3435 return update_string_(&settings->CertificateName, cnv.c, len);
3436
3437 case FreeRDP_ClientAddress:
3438 return update_string_(&settings->ClientAddress, cnv.c, len);
3439
3440 case FreeRDP_ClientDir:
3441 return update_string_(&settings->ClientDir, cnv.c, len);
3442
3443 case FreeRDP_ClientHostname:
3444 return update_string_(&settings->ClientHostname, cnv.c, len);
3445
3446 case FreeRDP_ClientProductId:
3447 return update_string_(&settings->ClientProductId, cnv.c, len);
3448
3449 case FreeRDP_ClipboardUseSelection:
3450 return update_string_(&settings->ClipboardUseSelection, cnv.c, len);
3451
3452 case FreeRDP_ComputerName:
3453 return update_string_(&settings->ComputerName, cnv.c, len);
3454
3455 case FreeRDP_ConfigPath:
3456 return update_string_(&settings->ConfigPath, cnv.c, len);
3457
3458 case FreeRDP_ConnectionFile:
3459 return update_string_(&settings->ConnectionFile, cnv.c, len);
3460
3461 case FreeRDP_ContainerName:
3462 return update_string_(&settings->ContainerName, cnv.c, len);
3463
3464 case FreeRDP_CspName:
3465 return update_string_(&settings->CspName, cnv.c, len);
3466
3467 case FreeRDP_CurrentPath:
3468 return update_string_(&settings->CurrentPath, cnv.c, len);
3469
3470 case FreeRDP_Domain:
3471 return update_string_(&settings->Domain, cnv.c, len);
3472
3473 case FreeRDP_DrivesToRedirect:
3474 return update_string_(&settings->DrivesToRedirect, cnv.c, len);
3475
3476 case FreeRDP_DumpRemoteFxFile:
3477 return update_string_(&settings->DumpRemoteFxFile, cnv.c, len);
3478
3479 case FreeRDP_DynamicDSTTimeZoneKeyName:
3480 return update_string_(&settings->DynamicDSTTimeZoneKeyName, cnv.c, len);
3481
3482 case FreeRDP_GatewayAcceptedCert:
3483 return update_string_(&settings->GatewayAcceptedCert, cnv.c, len);
3484
3485 case FreeRDP_GatewayAccessToken:
3486 return update_string_(&settings->GatewayAccessToken, cnv.c, len);
3487
3488 case FreeRDP_GatewayAvdAadtenantid:
3489 return update_string_(&settings->GatewayAvdAadtenantid, cnv.c, len);
3490
3491 case FreeRDP_GatewayAvdAccessAadFormat:
3492 return update_string_(&settings->GatewayAvdAccessAadFormat, cnv.c, len);
3493
3494 case FreeRDP_GatewayAvdAccessTokenFormat:
3495 return update_string_(&settings->GatewayAvdAccessTokenFormat, cnv.c, len);
3496
3497 case FreeRDP_GatewayAvdActivityhint:
3498 return update_string_(&settings->GatewayAvdActivityhint, cnv.c, len);
3499
3500 case FreeRDP_GatewayAvdArmpath:
3501 return update_string_(&settings->GatewayAvdArmpath, cnv.c, len);
3502
3503 case FreeRDP_GatewayAvdClientID:
3504 return update_string_(&settings->GatewayAvdClientID, cnv.c, len);
3505
3506 case FreeRDP_GatewayAvdDiagnosticserviceurl:
3507 return update_string_(&settings->GatewayAvdDiagnosticserviceurl, cnv.c, len);
3508
3509 case FreeRDP_GatewayAvdGeo:
3510 return update_string_(&settings->GatewayAvdGeo, cnv.c, len);
3511
3512 case FreeRDP_GatewayAvdHubdiscoverygeourl:
3513 return update_string_(&settings->GatewayAvdHubdiscoverygeourl, cnv.c, len);
3514
3515 case FreeRDP_GatewayAvdScope:
3516 return update_string_(&settings->GatewayAvdScope, cnv.c, len);
3517
3518 case FreeRDP_GatewayAvdWvdEndpointPool:
3519 return update_string_(&settings->GatewayAvdWvdEndpointPool, cnv.c, len);
3520
3521 case FreeRDP_GatewayAzureActiveDirectory:
3522 return update_string_(&settings->GatewayAzureActiveDirectory, cnv.c, len);
3523
3524 case FreeRDP_GatewayDomain:
3525 return update_string_(&settings->GatewayDomain, cnv.c, len);
3526
3527 case FreeRDP_GatewayHostname:
3528 return update_string_(&settings->GatewayHostname, cnv.c, len);
3529
3530 case FreeRDP_GatewayHttpExtAuthBearer:
3531 return update_string_(&settings->GatewayHttpExtAuthBearer, cnv.c, len);
3532
3533 case FreeRDP_GatewayHttpMsUserAgent:
3534 return update_string_(&settings->GatewayHttpMsUserAgent, cnv.c, len);
3535
3536 case FreeRDP_GatewayHttpReferer:
3537 return update_string_(&settings->GatewayHttpReferer, cnv.c, len);
3538
3539 case FreeRDP_GatewayHttpUserAgent:
3540 return update_string_(&settings->GatewayHttpUserAgent, cnv.c, len);
3541
3542 case FreeRDP_GatewayPassword:
3543 return update_string_(&settings->GatewayPassword, cnv.c, len);
3544
3545 case FreeRDP_GatewayUrl:
3546 return update_string_(&settings->GatewayUrl, cnv.c, len);
3547
3548 case FreeRDP_GatewayUsername:
3549 return update_string_(&settings->GatewayUsername, cnv.c, len);
3550
3551 case FreeRDP_HomePath:
3552 return update_string_(&settings->HomePath, cnv.c, len);
3553
3554 case FreeRDP_ImeFileName:
3555 return update_string_(&settings->ImeFileName, cnv.c, len);
3556
3557 case FreeRDP_KerberosArmor:
3558 return update_string_(&settings->KerberosArmor, cnv.c, len);
3559
3560 case FreeRDP_KerberosCache:
3561 return update_string_(&settings->KerberosCache, cnv.c, len);
3562
3563 case FreeRDP_KerberosKdcUrl:
3564 return update_string_(&settings->KerberosKdcUrl, cnv.c, len);
3565
3566 case FreeRDP_KerberosKeytab:
3567 return update_string_(&settings->KerberosKeytab, cnv.c, len);
3568
3569 case FreeRDP_KerberosLifeTime:
3570 return update_string_(&settings->KerberosLifeTime, cnv.c, len);
3571
3572 case FreeRDP_KerberosRealm:
3573 return update_string_(&settings->KerberosRealm, cnv.c, len);
3574
3575 case FreeRDP_KerberosRenewableLifeTime:
3576 return update_string_(&settings->KerberosRenewableLifeTime, cnv.c, len);
3577
3578 case FreeRDP_KerberosStartTime:
3579 return update_string_(&settings->KerberosStartTime, cnv.c, len);
3580
3581 case FreeRDP_KeyboardPipeName:
3582 return update_string_(&settings->KeyboardPipeName, cnv.c, len);
3583
3584 case FreeRDP_KeyboardRemappingList:
3585 return update_string_(&settings->KeyboardRemappingList, cnv.c, len);
3586
3587 case FreeRDP_NtlmSamFile:
3588 return update_string_(&settings->NtlmSamFile, cnv.c, len);
3589
3590 case FreeRDP_Password:
3591 return update_string_(&settings->Password, cnv.c, len);
3592
3593 case FreeRDP_PasswordHash:
3594 return update_string_(&settings->PasswordHash, cnv.c, len);
3595
3596 case FreeRDP_Pkcs11Module:
3597 return update_string_(&settings->Pkcs11Module, cnv.c, len);
3598
3599 case FreeRDP_PkinitAnchors:
3600 return update_string_(&settings->PkinitAnchors, cnv.c, len);
3601
3602 case FreeRDP_PlayRemoteFxFile:
3603 return update_string_(&settings->PlayRemoteFxFile, cnv.c, len);
3604
3605 case FreeRDP_PreconnectionBlob:
3606 return update_string_(&settings->PreconnectionBlob, cnv.c, len);
3607
3608 case FreeRDP_ProxyHostname:
3609 return update_string_(&settings->ProxyHostname, cnv.c, len);
3610
3611 case FreeRDP_ProxyPassword:
3612 return update_string_(&settings->ProxyPassword, cnv.c, len);
3613
3614 case FreeRDP_ProxyUsername:
3615 return update_string_(&settings->ProxyUsername, cnv.c, len);
3616
3617 case FreeRDP_RDP2TCPArgs:
3618 return update_string_(&settings->RDP2TCPArgs, cnv.c, len);
3619
3620 case FreeRDP_ReaderName:
3621 return update_string_(&settings->ReaderName, cnv.c, len);
3622
3623 case FreeRDP_RedirectionAcceptedCert:
3624 return update_string_(&settings->RedirectionAcceptedCert, cnv.c, len);
3625
3626 case FreeRDP_RedirectionDomain:
3627 return update_string_(&settings->RedirectionDomain, cnv.c, len);
3628
3629 case FreeRDP_RedirectionTargetFQDN:
3630 return update_string_(&settings->RedirectionTargetFQDN, cnv.c, len);
3631
3632 case FreeRDP_RedirectionTargetNetBiosName:
3633 return update_string_(&settings->RedirectionTargetNetBiosName, cnv.c, len);
3634
3635 case FreeRDP_RedirectionUsername:
3636 return update_string_(&settings->RedirectionUsername, cnv.c, len);
3637
3638 case FreeRDP_RemoteApplicationCmdLine:
3639 return update_string_(&settings->RemoteApplicationCmdLine, cnv.c, len);
3640
3641 case FreeRDP_RemoteApplicationFile:
3642 return update_string_(&settings->RemoteApplicationFile, cnv.c, len);
3643
3644 case FreeRDP_RemoteApplicationGuid:
3645 return update_string_(&settings->RemoteApplicationGuid, cnv.c, len);
3646
3647 case FreeRDP_RemoteApplicationIcon:
3648 return update_string_(&settings->RemoteApplicationIcon, cnv.c, len);
3649
3650 case FreeRDP_RemoteApplicationName:
3651 return update_string_(&settings->RemoteApplicationName, cnv.c, len);
3652
3653 case FreeRDP_RemoteApplicationProgram:
3654 return update_string_(&settings->RemoteApplicationProgram, cnv.c, len);
3655
3656 case FreeRDP_RemoteApplicationWorkingDir:
3657 return update_string_(&settings->RemoteApplicationWorkingDir, cnv.c, len);
3658
3659 case FreeRDP_RemoteAssistancePassStub:
3660 return update_string_(&settings->RemoteAssistancePassStub, cnv.c, len);
3661
3662 case FreeRDP_RemoteAssistancePassword:
3663 return update_string_(&settings->RemoteAssistancePassword, cnv.c, len);
3664
3665 case FreeRDP_RemoteAssistanceRCTicket:
3666 return update_string_(&settings->RemoteAssistanceRCTicket, cnv.c, len);
3667
3668 case FreeRDP_RemoteAssistanceSessionId:
3669 return update_string_(&settings->RemoteAssistanceSessionId, cnv.c, len);
3670
3671 case FreeRDP_ServerHostname:
3672 return update_string_(&settings->ServerHostname, cnv.c, len);
3673
3674 case FreeRDP_ServerLicenseCompanyName:
3675 return update_string_(&settings->ServerLicenseCompanyName, cnv.c, len);
3676
3677 case FreeRDP_ServerLicenseProductName:
3678 return update_string_(&settings->ServerLicenseProductName, cnv.c, len);
3679
3680 case FreeRDP_ShellWorkingDirectory:
3681 return update_string_(&settings->ShellWorkingDirectory, cnv.c, len);
3682
3683 case FreeRDP_SmartcardCertificate:
3684 return update_string_(&settings->SmartcardCertificate, cnv.c, len);
3685
3686 case FreeRDP_SmartcardPrivateKey:
3687 return update_string_(&settings->SmartcardPrivateKey, cnv.c, len);
3688
3689 case FreeRDP_SspiModule:
3690 return update_string_(&settings->SspiModule, cnv.c, len);
3691
3692 case FreeRDP_TargetNetAddress:
3693 return update_string_(&settings->TargetNetAddress, cnv.c, len);
3694
3695 case FreeRDP_TerminalDescriptor:
3696 return update_string_(&settings->TerminalDescriptor, cnv.c, len);
3697
3698 case FreeRDP_TlsSecretsFile:
3699 return update_string_(&settings->TlsSecretsFile, cnv.c, len);
3700
3701 case FreeRDP_TransportDumpFile:
3702 return update_string_(&settings->TransportDumpFile, cnv.c, len);
3703
3704 case FreeRDP_UserSpecifiedServerName:
3705 return update_string_(&settings->UserSpecifiedServerName, cnv.c, len);
3706
3707 case FreeRDP_Username:
3708 return update_string_(&settings->Username, cnv.c, len);
3709
3710 case FreeRDP_WinSCardModule:
3711 return update_string_(&settings->WinSCardModule, cnv.c, len);
3712
3713 case FreeRDP_WindowTitle:
3714 return update_string_(&settings->WindowTitle, cnv.c, len);
3715
3716 case FreeRDP_WmClass:
3717 return update_string_(&settings->WmClass, cnv.c, len);
3718
3719 default:
3720 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
3722 return FALSE;
3723 }
3724 return TRUE;
3725}
3726
3727BOOL freerdp_settings_set_string_len(rdpSettings* settings, FreeRDP_Settings_Keys_String id,
3728 const char* val, size_t len)
3729{
3730 return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE);
3731}
3732
3733BOOL freerdp_settings_set_string(rdpSettings* settings, FreeRDP_Settings_Keys_String id,
3734 const char* val)
3735{
3736 size_t len = 0;
3737 if (val)
3738 len = strlen(val);
3739 return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE);
3740}
3741
3742BOOL freerdp_settings_set_string_copy_(WINPR_ATTR_UNUSED rdpSettings* settings,
3743 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id,
3744 const char* val, size_t len, BOOL cleanup)
3745{
3746 union
3747 {
3748 void* v;
3749 const void* cv;
3750 char* c;
3751 const char* cc;
3752 } cnv;
3753 WINPR_ASSERT(settings);
3754
3755 cnv.cc = val;
3756
3757 switch (id)
3758 {
3759 case FreeRDP_AadServerHostname:
3760 return update_string_copy_(&settings->AadServerHostname, cnv.cc, len, cleanup);
3761
3762 case FreeRDP_AcceptedCert:
3763 return update_string_copy_(&settings->AcceptedCert, cnv.cc, len, cleanup);
3764
3765 case FreeRDP_ActionScript:
3766 return update_string_copy_(&settings->ActionScript, cnv.cc, len, cleanup);
3767
3768 case FreeRDP_AllowedTlsCiphers:
3769 return update_string_copy_(&settings->AllowedTlsCiphers, cnv.cc, len, cleanup);
3770
3771 case FreeRDP_AlternateShell:
3772 return update_string_copy_(&settings->AlternateShell, cnv.cc, len, cleanup);
3773
3774 case FreeRDP_AssistanceFile:
3775 return update_string_copy_(&settings->AssistanceFile, cnv.cc, len, cleanup);
3776
3777 case FreeRDP_AuthenticationPackageList:
3778 return update_string_copy_(&settings->AuthenticationPackageList, cnv.cc, len, cleanup);
3779
3780 case FreeRDP_AuthenticationServiceClass:
3781 return update_string_copy_(&settings->AuthenticationServiceClass, cnv.cc, len, cleanup);
3782
3783 case FreeRDP_BitmapCachePersistFile:
3784 return update_string_copy_(&settings->BitmapCachePersistFile, cnv.cc, len, cleanup);
3785
3786 case FreeRDP_CardName:
3787 return update_string_copy_(&settings->CardName, cnv.cc, len, cleanup);
3788
3789 case FreeRDP_CertificateAcceptedFingerprints:
3790 return update_string_copy_(&settings->CertificateAcceptedFingerprints, cnv.cc, len,
3791 cleanup);
3792
3793 case FreeRDP_CertificateName:
3794 return update_string_copy_(&settings->CertificateName, cnv.cc, len, cleanup);
3795
3796 case FreeRDP_ClientAddress:
3797 return update_string_copy_(&settings->ClientAddress, cnv.cc, len, cleanup);
3798
3799 case FreeRDP_ClientDir:
3800 return update_string_copy_(&settings->ClientDir, cnv.cc, len, cleanup);
3801
3802 case FreeRDP_ClientHostname:
3803 return update_string_copy_(&settings->ClientHostname, cnv.cc, len, cleanup);
3804
3805 case FreeRDP_ClientProductId:
3806 return update_string_copy_(&settings->ClientProductId, cnv.cc, len, cleanup);
3807
3808 case FreeRDP_ClipboardUseSelection:
3809 return update_string_copy_(&settings->ClipboardUseSelection, cnv.cc, len, cleanup);
3810
3811 case FreeRDP_ComputerName:
3812 return update_string_copy_(&settings->ComputerName, cnv.cc, len, cleanup);
3813
3814 case FreeRDP_ConfigPath:
3815 return update_string_copy_(&settings->ConfigPath, cnv.cc, len, cleanup);
3816
3817 case FreeRDP_ConnectionFile:
3818 return update_string_copy_(&settings->ConnectionFile, cnv.cc, len, cleanup);
3819
3820 case FreeRDP_ContainerName:
3821 return update_string_copy_(&settings->ContainerName, cnv.cc, len, cleanup);
3822
3823 case FreeRDP_CspName:
3824 return update_string_copy_(&settings->CspName, cnv.cc, len, cleanup);
3825
3826 case FreeRDP_CurrentPath:
3827 return update_string_copy_(&settings->CurrentPath, cnv.cc, len, cleanup);
3828
3829 case FreeRDP_Domain:
3830 return update_string_copy_(&settings->Domain, cnv.cc, len, cleanup);
3831
3832 case FreeRDP_DrivesToRedirect:
3833 return update_string_copy_(&settings->DrivesToRedirect, cnv.cc, len, cleanup);
3834
3835 case FreeRDP_DumpRemoteFxFile:
3836 return update_string_copy_(&settings->DumpRemoteFxFile, cnv.cc, len, cleanup);
3837
3838 case FreeRDP_DynamicDSTTimeZoneKeyName:
3839 return update_string_copy_(&settings->DynamicDSTTimeZoneKeyName, cnv.cc, len, cleanup);
3840
3841 case FreeRDP_GatewayAcceptedCert:
3842 return update_string_copy_(&settings->GatewayAcceptedCert, cnv.cc, len, cleanup);
3843
3844 case FreeRDP_GatewayAccessToken:
3845 return update_string_copy_(&settings->GatewayAccessToken, cnv.cc, len, cleanup);
3846
3847 case FreeRDP_GatewayAvdAadtenantid:
3848 return update_string_copy_(&settings->GatewayAvdAadtenantid, cnv.cc, len, cleanup);
3849
3850 case FreeRDP_GatewayAvdAccessAadFormat:
3851 return update_string_copy_(&settings->GatewayAvdAccessAadFormat, cnv.cc, len, cleanup);
3852
3853 case FreeRDP_GatewayAvdAccessTokenFormat:
3854 return update_string_copy_(&settings->GatewayAvdAccessTokenFormat, cnv.cc, len,
3855 cleanup);
3856
3857 case FreeRDP_GatewayAvdActivityhint:
3858 return update_string_copy_(&settings->GatewayAvdActivityhint, cnv.cc, len, cleanup);
3859
3860 case FreeRDP_GatewayAvdArmpath:
3861 return update_string_copy_(&settings->GatewayAvdArmpath, cnv.cc, len, cleanup);
3862
3863 case FreeRDP_GatewayAvdClientID:
3864 return update_string_copy_(&settings->GatewayAvdClientID, cnv.cc, len, cleanup);
3865
3866 case FreeRDP_GatewayAvdDiagnosticserviceurl:
3867 return update_string_copy_(&settings->GatewayAvdDiagnosticserviceurl, cnv.cc, len,
3868 cleanup);
3869
3870 case FreeRDP_GatewayAvdGeo:
3871 return update_string_copy_(&settings->GatewayAvdGeo, cnv.cc, len, cleanup);
3872
3873 case FreeRDP_GatewayAvdHubdiscoverygeourl:
3874 return update_string_copy_(&settings->GatewayAvdHubdiscoverygeourl, cnv.cc, len,
3875 cleanup);
3876
3877 case FreeRDP_GatewayAvdScope:
3878 return update_string_copy_(&settings->GatewayAvdScope, cnv.cc, len, cleanup);
3879
3880 case FreeRDP_GatewayAvdWvdEndpointPool:
3881 return update_string_copy_(&settings->GatewayAvdWvdEndpointPool, cnv.cc, len, cleanup);
3882
3883 case FreeRDP_GatewayAzureActiveDirectory:
3884 return update_string_copy_(&settings->GatewayAzureActiveDirectory, cnv.cc, len,
3885 cleanup);
3886
3887 case FreeRDP_GatewayDomain:
3888 return update_string_copy_(&settings->GatewayDomain, cnv.cc, len, cleanup);
3889
3890 case FreeRDP_GatewayHostname:
3891 return update_string_copy_(&settings->GatewayHostname, cnv.cc, len, cleanup);
3892
3893 case FreeRDP_GatewayHttpExtAuthBearer:
3894 return update_string_copy_(&settings->GatewayHttpExtAuthBearer, cnv.cc, len, cleanup);
3895
3896 case FreeRDP_GatewayHttpMsUserAgent:
3897 return update_string_copy_(&settings->GatewayHttpMsUserAgent, cnv.cc, len, cleanup);
3898
3899 case FreeRDP_GatewayHttpReferer:
3900 return update_string_copy_(&settings->GatewayHttpReferer, cnv.cc, len, cleanup);
3901
3902 case FreeRDP_GatewayHttpUserAgent:
3903 return update_string_copy_(&settings->GatewayHttpUserAgent, cnv.cc, len, cleanup);
3904
3905 case FreeRDP_GatewayPassword:
3906 return update_string_copy_(&settings->GatewayPassword, cnv.cc, len, cleanup);
3907
3908 case FreeRDP_GatewayUrl:
3909 return update_string_copy_(&settings->GatewayUrl, cnv.cc, len, cleanup);
3910
3911 case FreeRDP_GatewayUsername:
3912 return update_string_copy_(&settings->GatewayUsername, cnv.cc, len, cleanup);
3913
3914 case FreeRDP_HomePath:
3915 return update_string_copy_(&settings->HomePath, cnv.cc, len, cleanup);
3916
3917 case FreeRDP_ImeFileName:
3918 return update_string_copy_(&settings->ImeFileName, cnv.cc, len, cleanup);
3919
3920 case FreeRDP_KerberosArmor:
3921 return update_string_copy_(&settings->KerberosArmor, cnv.cc, len, cleanup);
3922
3923 case FreeRDP_KerberosCache:
3924 return update_string_copy_(&settings->KerberosCache, cnv.cc, len, cleanup);
3925
3926 case FreeRDP_KerberosKdcUrl:
3927 return update_string_copy_(&settings->KerberosKdcUrl, cnv.cc, len, cleanup);
3928
3929 case FreeRDP_KerberosKeytab:
3930 return update_string_copy_(&settings->KerberosKeytab, cnv.cc, len, cleanup);
3931
3932 case FreeRDP_KerberosLifeTime:
3933 return update_string_copy_(&settings->KerberosLifeTime, cnv.cc, len, cleanup);
3934
3935 case FreeRDP_KerberosRealm:
3936 return update_string_copy_(&settings->KerberosRealm, cnv.cc, len, cleanup);
3937
3938 case FreeRDP_KerberosRenewableLifeTime:
3939 return update_string_copy_(&settings->KerberosRenewableLifeTime, cnv.cc, len, cleanup);
3940
3941 case FreeRDP_KerberosStartTime:
3942 return update_string_copy_(&settings->KerberosStartTime, cnv.cc, len, cleanup);
3943
3944 case FreeRDP_KeyboardPipeName:
3945 return update_string_copy_(&settings->KeyboardPipeName, cnv.cc, len, cleanup);
3946
3947 case FreeRDP_KeyboardRemappingList:
3948 return update_string_copy_(&settings->KeyboardRemappingList, cnv.cc, len, cleanup);
3949
3950 case FreeRDP_NtlmSamFile:
3951 return update_string_copy_(&settings->NtlmSamFile, cnv.cc, len, cleanup);
3952
3953 case FreeRDP_Password:
3954 return update_string_copy_(&settings->Password, cnv.cc, len, cleanup);
3955
3956 case FreeRDP_PasswordHash:
3957 return update_string_copy_(&settings->PasswordHash, cnv.cc, len, cleanup);
3958
3959 case FreeRDP_Pkcs11Module:
3960 return update_string_copy_(&settings->Pkcs11Module, cnv.cc, len, cleanup);
3961
3962 case FreeRDP_PkinitAnchors:
3963 return update_string_copy_(&settings->PkinitAnchors, cnv.cc, len, cleanup);
3964
3965 case FreeRDP_PlayRemoteFxFile:
3966 return update_string_copy_(&settings->PlayRemoteFxFile, cnv.cc, len, cleanup);
3967
3968 case FreeRDP_PreconnectionBlob:
3969 return update_string_copy_(&settings->PreconnectionBlob, cnv.cc, len, cleanup);
3970
3971 case FreeRDP_ProxyHostname:
3972 return update_string_copy_(&settings->ProxyHostname, cnv.cc, len, cleanup);
3973
3974 case FreeRDP_ProxyPassword:
3975 return update_string_copy_(&settings->ProxyPassword, cnv.cc, len, cleanup);
3976
3977 case FreeRDP_ProxyUsername:
3978 return update_string_copy_(&settings->ProxyUsername, cnv.cc, len, cleanup);
3979
3980 case FreeRDP_RDP2TCPArgs:
3981 return update_string_copy_(&settings->RDP2TCPArgs, cnv.cc, len, cleanup);
3982
3983 case FreeRDP_ReaderName:
3984 return update_string_copy_(&settings->ReaderName, cnv.cc, len, cleanup);
3985
3986 case FreeRDP_RedirectionAcceptedCert:
3987 return update_string_copy_(&settings->RedirectionAcceptedCert, cnv.cc, len, cleanup);
3988
3989 case FreeRDP_RedirectionDomain:
3990 return update_string_copy_(&settings->RedirectionDomain, cnv.cc, len, cleanup);
3991
3992 case FreeRDP_RedirectionTargetFQDN:
3993 return update_string_copy_(&settings->RedirectionTargetFQDN, cnv.cc, len, cleanup);
3994
3995 case FreeRDP_RedirectionTargetNetBiosName:
3996 return update_string_copy_(&settings->RedirectionTargetNetBiosName, cnv.cc, len,
3997 cleanup);
3998
3999 case FreeRDP_RedirectionUsername:
4000 return update_string_copy_(&settings->RedirectionUsername, cnv.cc, len, cleanup);
4001
4002 case FreeRDP_RemoteApplicationCmdLine:
4003 return update_string_copy_(&settings->RemoteApplicationCmdLine, cnv.cc, len, cleanup);
4004
4005 case FreeRDP_RemoteApplicationFile:
4006 return update_string_copy_(&settings->RemoteApplicationFile, cnv.cc, len, cleanup);
4007
4008 case FreeRDP_RemoteApplicationGuid:
4009 return update_string_copy_(&settings->RemoteApplicationGuid, cnv.cc, len, cleanup);
4010
4011 case FreeRDP_RemoteApplicationIcon:
4012 return update_string_copy_(&settings->RemoteApplicationIcon, cnv.cc, len, cleanup);
4013
4014 case FreeRDP_RemoteApplicationName:
4015 return update_string_copy_(&settings->RemoteApplicationName, cnv.cc, len, cleanup);
4016
4017 case FreeRDP_RemoteApplicationProgram:
4018 return update_string_copy_(&settings->RemoteApplicationProgram, cnv.cc, len, cleanup);
4019
4020 case FreeRDP_RemoteApplicationWorkingDir:
4021 return update_string_copy_(&settings->RemoteApplicationWorkingDir, cnv.cc, len,
4022 cleanup);
4023
4024 case FreeRDP_RemoteAssistancePassStub:
4025 return update_string_copy_(&settings->RemoteAssistancePassStub, cnv.cc, len, cleanup);
4026
4027 case FreeRDP_RemoteAssistancePassword:
4028 return update_string_copy_(&settings->RemoteAssistancePassword, cnv.cc, len, cleanup);
4029
4030 case FreeRDP_RemoteAssistanceRCTicket:
4031 return update_string_copy_(&settings->RemoteAssistanceRCTicket, cnv.cc, len, cleanup);
4032
4033 case FreeRDP_RemoteAssistanceSessionId:
4034 return update_string_copy_(&settings->RemoteAssistanceSessionId, cnv.cc, len, cleanup);
4035
4036 case FreeRDP_ServerHostname:
4037 return update_string_copy_(&settings->ServerHostname, cnv.cc, len, cleanup);
4038
4039 case FreeRDP_ServerLicenseCompanyName:
4040 return update_string_copy_(&settings->ServerLicenseCompanyName, cnv.cc, len, cleanup);
4041
4042 case FreeRDP_ServerLicenseProductName:
4043 return update_string_copy_(&settings->ServerLicenseProductName, cnv.cc, len, cleanup);
4044
4045 case FreeRDP_ShellWorkingDirectory:
4046 return update_string_copy_(&settings->ShellWorkingDirectory, cnv.cc, len, cleanup);
4047
4048 case FreeRDP_SmartcardCertificate:
4049 return update_string_copy_(&settings->SmartcardCertificate, cnv.cc, len, cleanup);
4050
4051 case FreeRDP_SmartcardPrivateKey:
4052 return update_string_copy_(&settings->SmartcardPrivateKey, cnv.cc, len, cleanup);
4053
4054 case FreeRDP_SspiModule:
4055 return update_string_copy_(&settings->SspiModule, cnv.cc, len, cleanup);
4056
4057 case FreeRDP_TargetNetAddress:
4058 return update_string_copy_(&settings->TargetNetAddress, cnv.cc, len, cleanup);
4059
4060 case FreeRDP_TerminalDescriptor:
4061 return update_string_copy_(&settings->TerminalDescriptor, cnv.cc, len, cleanup);
4062
4063 case FreeRDP_TlsSecretsFile:
4064 return update_string_copy_(&settings->TlsSecretsFile, cnv.cc, len, cleanup);
4065
4066 case FreeRDP_TransportDumpFile:
4067 return update_string_copy_(&settings->TransportDumpFile, cnv.cc, len, cleanup);
4068
4069 case FreeRDP_UserSpecifiedServerName:
4070 return update_string_copy_(&settings->UserSpecifiedServerName, cnv.cc, len, cleanup);
4071
4072 case FreeRDP_Username:
4073 return update_string_copy_(&settings->Username, cnv.cc, len, cleanup);
4074
4075 case FreeRDP_WinSCardModule:
4076 return update_string_copy_(&settings->WinSCardModule, cnv.cc, len, cleanup);
4077
4078 case FreeRDP_WindowTitle:
4079 return update_string_copy_(&settings->WindowTitle, cnv.cc, len, cleanup);
4080
4081 case FreeRDP_WmClass:
4082 return update_string_copy_(&settings->WmClass, cnv.cc, len, cleanup);
4083
4084 default:
4085 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
4087 return FALSE;
4088 }
4089 return TRUE;
4090}
4091
4092void* freerdp_settings_get_pointer_writable(rdpSettings* settings, FreeRDP_Settings_Keys_Pointer id)
4093{
4094 WINPR_ASSERT(settings);
4095
4096 switch (id)
4097 {
4098 case FreeRDP_BitmapCacheV2CellInfo:
4099 return (void*)settings->BitmapCacheV2CellInfo;
4100
4101 case FreeRDP_ChannelDefArray:
4102 return (void*)settings->ChannelDefArray;
4103
4104 case FreeRDP_ClientAutoReconnectCookie:
4105 return (void*)settings->ClientAutoReconnectCookie;
4106
4107 case FreeRDP_ClientRandom:
4108 return (void*)settings->ClientRandom;
4109
4110 case FreeRDP_ClientTimeZone:
4111 return (void*)settings->ClientTimeZone;
4112
4113 case FreeRDP_DeviceArray:
4114 return (void*)settings->DeviceArray;
4115
4116 case FreeRDP_DynamicChannelArray:
4117 return (void*)settings->DynamicChannelArray;
4118
4119 case FreeRDP_FragCache:
4120 return (void*)settings->FragCache;
4121
4122 case FreeRDP_GlyphCache:
4123 return (void*)settings->GlyphCache;
4124
4125 case FreeRDP_LoadBalanceInfo:
4126 return (void*)settings->LoadBalanceInfo;
4127
4128 case FreeRDP_MonitorDefArray:
4129 return (void*)settings->MonitorDefArray;
4130
4131 case FreeRDP_MonitorIds:
4132 return (void*)settings->MonitorIds;
4133
4134 case FreeRDP_OrderSupport:
4135 return (void*)settings->OrderSupport;
4136
4137 case FreeRDP_Password51:
4138 return (void*)settings->Password51;
4139
4140 case FreeRDP_RdpServerCertificate:
4141 return (void*)settings->RdpServerCertificate;
4142
4143 case FreeRDP_RdpServerRsaKey:
4144 return (void*)settings->RdpServerRsaKey;
4145
4146 case FreeRDP_ReceivedCapabilities:
4147 return (void*)settings->ReceivedCapabilities;
4148
4149 case FreeRDP_ReceivedCapabilityData:
4150 return (void*)settings->ReceivedCapabilityData;
4151
4152 case FreeRDP_ReceivedCapabilityDataSizes:
4153 return (void*)settings->ReceivedCapabilityDataSizes;
4154
4155 case FreeRDP_RedirectionGuid:
4156 return (void*)settings->RedirectionGuid;
4157
4158 case FreeRDP_RedirectionPassword:
4159 return (void*)settings->RedirectionPassword;
4160
4161 case FreeRDP_RedirectionTargetCertificate:
4162 return (void*)settings->RedirectionTargetCertificate;
4163
4164 case FreeRDP_RedirectionTsvUrl:
4165 return (void*)settings->RedirectionTsvUrl;
4166
4167 case FreeRDP_ServerAutoReconnectCookie:
4168 return (void*)settings->ServerAutoReconnectCookie;
4169
4170 case FreeRDP_ServerCertificate:
4171 return (void*)settings->ServerCertificate;
4172
4173 case FreeRDP_ServerLicenseProductIssuers:
4174 return (void*)settings->ServerLicenseProductIssuers;
4175
4176 case FreeRDP_ServerRandom:
4177 return (void*)settings->ServerRandom;
4178
4179 case FreeRDP_StaticChannelArray:
4180 return (void*)settings->StaticChannelArray;
4181
4182 case FreeRDP_TargetNetAddresses:
4183 return (void*)settings->TargetNetAddresses;
4184
4185 case FreeRDP_TargetNetPorts:
4186 return (void*)settings->TargetNetPorts;
4187
4188 case FreeRDP_instance:
4189 return settings->instance;
4190
4191 default:
4192 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
4194 WINPR_ASSERT(FALSE);
4195 return nullptr;
4196 }
4197}
4198
4199BOOL freerdp_settings_set_pointer(WINPR_ATTR_UNUSED rdpSettings* settings,
4200 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Pointer id,
4201 const void* val)
4202{
4203 union
4204 {
4205 void* v;
4206 const void* cv;
4207 } cnv;
4208 WINPR_ASSERT(settings);
4209
4210 cnv.cv = val;
4211
4212 switch (id)
4213 {
4214 case FreeRDP_BitmapCacheV2CellInfo:
4215 settings->BitmapCacheV2CellInfo = (BITMAP_CACHE_V2_CELL_INFO*)cnv.v;
4216 break;
4217
4218 case FreeRDP_ChannelDefArray:
4219 settings->ChannelDefArray = (CHANNEL_DEF*)cnv.v;
4220 break;
4221
4222 case FreeRDP_ClientAutoReconnectCookie:
4223 settings->ClientAutoReconnectCookie = (ARC_CS_PRIVATE_PACKET*)cnv.v;
4224 break;
4225
4226 case FreeRDP_ClientRandom:
4227 settings->ClientRandom = (BYTE*)cnv.v;
4228 break;
4229
4230 case FreeRDP_ClientTimeZone:
4231 settings->ClientTimeZone = (TIME_ZONE_INFORMATION*)cnv.v;
4232 break;
4233
4234 case FreeRDP_DeviceArray:
4235 settings->DeviceArray = (RDPDR_DEVICE**)cnv.v;
4236 break;
4237
4238 case FreeRDP_DynamicChannelArray:
4239 settings->DynamicChannelArray = (ADDIN_ARGV**)cnv.v;
4240 break;
4241
4242 case FreeRDP_FragCache:
4243 settings->FragCache = (GLYPH_CACHE_DEFINITION*)cnv.v;
4244 break;
4245
4246 case FreeRDP_GlyphCache:
4247 settings->GlyphCache = (GLYPH_CACHE_DEFINITION*)cnv.v;
4248 break;
4249
4250 case FreeRDP_LoadBalanceInfo:
4251 settings->LoadBalanceInfo = (BYTE*)cnv.v;
4252 break;
4253
4254 case FreeRDP_MonitorDefArray:
4255 settings->MonitorDefArray = (rdpMonitor*)cnv.v;
4256 break;
4257
4258 case FreeRDP_MonitorIds:
4259 settings->MonitorIds = (UINT32*)cnv.v;
4260 break;
4261
4262 case FreeRDP_OrderSupport:
4263 settings->OrderSupport = (BYTE*)cnv.v;
4264 break;
4265
4266 case FreeRDP_Password51:
4267 settings->Password51 = (BYTE*)cnv.v;
4268 break;
4269
4270 case FreeRDP_RdpServerCertificate:
4271 settings->RdpServerCertificate = (rdpCertificate*)cnv.v;
4272 break;
4273
4274 case FreeRDP_RdpServerRsaKey:
4275 settings->RdpServerRsaKey = (rdpPrivateKey*)cnv.v;
4276 break;
4277
4278 case FreeRDP_ReceivedCapabilities:
4279 settings->ReceivedCapabilities = (BYTE*)cnv.v;
4280 break;
4281
4282 case FreeRDP_ReceivedCapabilityData:
4283 settings->ReceivedCapabilityData = (BYTE**)cnv.v;
4284 break;
4285
4286 case FreeRDP_ReceivedCapabilityDataSizes:
4287 settings->ReceivedCapabilityDataSizes = (UINT32*)cnv.v;
4288 break;
4289
4290 case FreeRDP_RedirectionGuid:
4291 settings->RedirectionGuid = (BYTE*)cnv.v;
4292 break;
4293
4294 case FreeRDP_RedirectionPassword:
4295 settings->RedirectionPassword = (BYTE*)cnv.v;
4296 break;
4297
4298 case FreeRDP_RedirectionTargetCertificate:
4299 settings->RedirectionTargetCertificate = (rdpCertificate*)cnv.v;
4300 break;
4301
4302 case FreeRDP_RedirectionTsvUrl:
4303 settings->RedirectionTsvUrl = (BYTE*)cnv.v;
4304 break;
4305
4306 case FreeRDP_ServerAutoReconnectCookie:
4307 settings->ServerAutoReconnectCookie = (ARC_SC_PRIVATE_PACKET*)cnv.v;
4308 break;
4309
4310 case FreeRDP_ServerCertificate:
4311 settings->ServerCertificate = (BYTE*)cnv.v;
4312 break;
4313
4314 case FreeRDP_ServerLicenseProductIssuers:
4315 settings->ServerLicenseProductIssuers = (char**)cnv.v;
4316 break;
4317
4318 case FreeRDP_ServerRandom:
4319 settings->ServerRandom = (BYTE*)cnv.v;
4320 break;
4321
4322 case FreeRDP_StaticChannelArray:
4323 settings->StaticChannelArray = (ADDIN_ARGV**)cnv.v;
4324 break;
4325
4326 case FreeRDP_TargetNetAddresses:
4327 settings->TargetNetAddresses = (char**)cnv.v;
4328 break;
4329
4330 case FreeRDP_TargetNetPorts:
4331 settings->TargetNetPorts = (UINT32*)cnv.v;
4332 break;
4333
4334 case FreeRDP_instance:
4335 settings->instance = cnv.v;
4336 break;
4337
4338 default:
4339 WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
4341 return FALSE;
4342 }
4343 return TRUE;
4344}
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_set_pointer(rdpSettings *settings, FreeRDP_Settings_Keys_Pointer id, const void *val)
Set a pointer to value val.
char * freerdp_settings_get_string_writable(rdpSettings *settings, FreeRDP_Settings_Keys_String id)
Returns a string settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_set_int64(rdpSettings *settings, FreeRDP_Settings_Keys_Int64 id, INT64 val)
Sets a INT64 settings value.
WINPR_ATTR_NODISCARD FREERDP_API const char * freerdp_settings_get_string(const rdpSettings *settings, FreeRDP_Settings_Keys_String id)
Returns a immutable string settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_set_bool(rdpSettings *settings, FreeRDP_Settings_Keys_Bool id, BOOL val)
Sets a BOOL settings value.
BOOL freerdp_settings_set_string_len(rdpSettings *settings, FreeRDP_Settings_Keys_String id, const char *val, size_t len)
Sets a string settings value. The val is copied.
WINPR_ATTR_NODISCARD FREERDP_API INT32 freerdp_settings_get_int32(const rdpSettings *settings, FreeRDP_Settings_Keys_Int32 id)
Returns a INT32 settings value.
void * freerdp_settings_get_pointer_writable(rdpSettings *settings, FreeRDP_Settings_Keys_Pointer id)
Returns a mutable pointer settings value.
WINPR_ATTR_NODISCARD FREERDP_API UINT16 freerdp_settings_get_uint16(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt16 id)
Returns a UINT16 settings value.
WINPR_ATTR_NODISCARD FREERDP_API UINT64 freerdp_settings_get_uint64(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt64 id)
Returns a UINT64 settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_set_uint32(rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id, UINT32 val)
Sets a UINT32 settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_set_uint64(rdpSettings *settings, FreeRDP_Settings_Keys_UInt64 id, UINT64 val)
Sets a UINT64 settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_set_int16(rdpSettings *settings, FreeRDP_Settings_Keys_Int16 id, INT16 val)
Sets a INT16 settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_set_int32(rdpSettings *settings, FreeRDP_Settings_Keys_Int32 id, INT32 val)
Sets a INT32 settings value.
WINPR_ATTR_NODISCARD FREERDP_API const char * freerdp_settings_get_type_name_for_key(SSIZE_T key)
Returns the type name for a key.
WINPR_ATTR_NODISCARD FREERDP_API INT16 freerdp_settings_get_int16(const rdpSettings *settings, FreeRDP_Settings_Keys_Int16 id)
Returns a INT16 settings value.
WINPR_ATTR_NODISCARD FREERDP_API UINT32 freerdp_settings_get_uint32(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id)
Returns a UINT32 settings value.
WINPR_ATTR_NODISCARD FREERDP_API INT64 freerdp_settings_get_int64(const rdpSettings *settings, FreeRDP_Settings_Keys_Int64 id)
Returns a INT64 settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_set_uint16(rdpSettings *settings, FreeRDP_Settings_Keys_UInt16 id, UINT16 val)
Sets a UINT16 settings value.
BOOL freerdp_settings_set_string(rdpSettings *settings, FreeRDP_Settings_Keys_String id, const char *val)
Sets a string settings value. The param is copied.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_get_bool(const rdpSettings *settings, FreeRDP_Settings_Keys_Bool id)
Returns a boolean settings value.
WINPR_ATTR_NODISCARD FREERDP_API const char * freerdp_settings_get_name_for_key(SSIZE_T key)
Returns the type name for a key.