Skip to main content
The freerdp type (also spelled rdp_freerdp) is the top-level handle for an RDP client connection. It holds the pointer to the rdpContext and all callbacks that drive connection behaviour. In typical use you obtain a freerdp instance indirectly through freerdp_client_context_new()context->instance. When lower-level control is needed you can allocate one directly.

Instance Lifecycle

Always call freerdp_context_free() (or freerdp_client_context_free()) before calling freerdp_free(). Freeing the instance before the context is undefined behaviour.

Direct allocation

Key Fields

rdpContext*
Pointer to the associated context. Allocated by freerdp_context_new(). Access settings, channels, GDI, etc. through this field.
size_t
The number of bytes to allocate for the context. Defaults to sizeof(rdpContext). Set to sizeof(MyContext) before calling freerdp_context_new() to use an extended context struct.
UINT
Internal field tracking whether PreConnect / PostConnect have been called. Do not modify directly.

Connection Callbacks

Set these on the freerdp instance — typically inside your ClientNew (i.e., pRdpClientNew) implementation — before calling freerdp_connect().

Authentication Callbacks

Certificate Verification Callbacks

VERIFY_CERT_FLAG_* Constants

Other Callbacks

Context Allocation Callbacks

These are set directly on the freerdp struct (not via RDP_CLIENT_ENTRY_POINTS) when using the lower-level freerdp_context_new() path:

Minimal Example