rdpSettings is FreeRDP’s unified configuration store. Every aspect of an RDP connection — server hostname, credentials, display geometry, security mode, codec preferences, channel lists — is represented as a named key with a strongly-typed value.
What Settings Are
ArdpSettings struct holds all configuration data for one side of an RDP connection. Settings are accessed exclusively through the typed freerdp_settings_get_* / freerdp_settings_set_* API family; direct struct field access is deprecated and may be removed in future releases.
Three Settings Instances
As documented ininclude/freerdp/settings.h:
There are 3 different settings for each client and server:
- The initial configuration supplied by the user
- The remote peer settings sent during capability exchange
- The merged settings derived from both
instance->context->settings always points to the merged settings once a connection is active.
This distinction is especially important in proxy scenarios where the same process hosts both a client and a server
rdpSettings. Accessing the wrong instance produces stale or incorrect values.Settings Lifetime
PreConnect has been called and want those changes to survive a reconnect or redirect, call:
Reading and Writing Settings
Settings are partitioned by value type. Each type has its own enum for key identifiers and its own getter/setter pair.- Bool
- UInt32
- UInt64
- String
- Pointer
set calls, validate the settings object in one go:
Key Setting Keys
Setting key identifiers areFreeRDP_<Name> constants defined in include/freerdp/settings_keys.h (generated) and surfaced through the typed enum families FreeRDP_Settings_Keys_Bool, FreeRDP_Settings_Keys_UInt32, FreeRDP_Settings_Keys_String, etc.
