Skip to main content
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

A rdpSettings 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 in include/freerdp/settings.h:
There are 3 different settings for each client and server:
  1. The initial configuration supplied by the user
  2. The remote peer settings sent during capability exchange
  3. 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

If you modify settings after 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.
After a sequence of set calls, validate the settings object in one go:

Key Setting Keys

Setting key identifiers are FreeRDP_<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.

Connection

Display

Security

Performance

Codec / Graphics Pipeline


Lifecycle Management API


Example: Configure a Connection Before Connecting

Never store raw pointers returned by freerdp_settings_get_string(). The string is owned by the settings struct and may be reallocated if the same key is written again. Copy the value if you need it to outlive the next set call.