Blame include/freerdp/freerdp.h

Packit 1fb8d4
/**
Packit 1fb8d4
 * FreeRDP: A Remote Desktop Protocol Implementation
Packit 1fb8d4
 * FreeRDP Interface
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2009-2011 Jay Sorg
Packit 1fb8d4
 * Copyright 2015 Thincast Technologies GmbH
Packit 1fb8d4
 * Copyright 2015 DI (FH) Martin Haimberger <martin.haimberger@thincast.com>
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifndef FREERDP_H
Packit 1fb8d4
#define FREERDP_H
Packit 1fb8d4
Packit 1fb8d4
typedef struct rdp_rdp rdpRdp;
Packit 1fb8d4
typedef struct rdp_gdi rdpGdi;
Packit 1fb8d4
typedef struct rdp_rail rdpRail;
Packit 1fb8d4
typedef struct rdp_cache rdpCache;
Packit 1fb8d4
typedef struct rdp_channels rdpChannels;
Packit 1fb8d4
typedef struct rdp_graphics rdpGraphics;
Packit 1fb8d4
typedef struct rdp_metrics rdpMetrics;
Packit 1fb8d4
typedef struct rdp_codecs rdpCodecs;
Packit 1fb8d4
Packit 1fb8d4
typedef struct rdp_freerdp freerdp;
Packit 1fb8d4
typedef struct rdp_context rdpContext;
Packit 1fb8d4
typedef struct rdp_freerdp_peer freerdp_peer;
Packit 1fb8d4
Packit 1fb8d4
typedef struct rdp_client_context rdpClientContext;
Packit 1fb8d4
typedef struct rdp_client_entry_points_v1 RDP_CLIENT_ENTRY_POINTS_V1;
Packit 1fb8d4
typedef RDP_CLIENT_ENTRY_POINTS_V1 RDP_CLIENT_ENTRY_POINTS;
Packit 1fb8d4
Packit 1fb8d4
#include <freerdp/api.h>
Packit 1fb8d4
#include <freerdp/types.h>
Packit 1fb8d4
#include <freerdp/error.h>
Packit 1fb8d4
#include <freerdp/event.h>
Packit 1fb8d4
#include <freerdp/codecs.h>
Packit 1fb8d4
#include <freerdp/metrics.h>
Packit 1fb8d4
#include <freerdp/settings.h>
Packit 1fb8d4
#include <freerdp/extension.h>
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/stream.h>
Packit 1fb8d4
Packit 1fb8d4
#include <freerdp/input.h>
Packit 1fb8d4
#include <freerdp/update.h>
Packit 1fb8d4
#include <freerdp/message.h>
Packit 1fb8d4
#include <freerdp/autodetect.h>
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit 1fb8d4
extern "C" {
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
typedef BOOL (*pContextNew)(freerdp* instance, rdpContext* context);
Packit 1fb8d4
typedef void (*pContextFree)(freerdp* instance, rdpContext* context);
Packit 1fb8d4
Packit 1fb8d4
typedef BOOL (*pPreConnect)(freerdp* instance);
Packit 1fb8d4
typedef BOOL (*pPostConnect)(freerdp* instance);
Packit 1fb8d4
typedef void (*pPostDisconnect)(freerdp* instance);
Packit 1fb8d4
typedef BOOL (*pAuthenticate)(freerdp* instance, char** username,
Packit 1fb8d4
                              char** password, char** domain);
Packit 1fb8d4
Packit 1fb8d4
/** @brief Callback used if user interaction is required to accept
Packit 1fb8d4
 *         an unknown certificate.
Packit 1fb8d4
 *
Packit 1fb8d4
 *  @param common_name      The certificate registered hostname.
Packit 1fb8d4
 *  @param subject          The common name of the certificate.
Packit 1fb8d4
 *  @param issuer           The issuer of the certificate.
Packit 1fb8d4
 *  @param fingerprint      The fingerprint of the certificate.
Packit 1fb8d4
 *  @param host_mismatch    A flag indicating the certificate
Packit 1fb8d4
 *                          subject does not match the host connecting to.
Packit 1fb8d4
 *
Packit 1fb8d4
 *  @return 1 to accept and store a certificate, 2 to accept
Packit 1fb8d4
 *          a certificate only for this session, 0 otherwise.
Packit 1fb8d4
 */
Packit 1fb8d4
typedef DWORD (*pVerifyCertificate)(freerdp* instance,
Packit 1fb8d4
                                    const char* common_name,
Packit 1fb8d4
                                    const char* subject,
Packit 1fb8d4
                                    const char* issuer,
Packit 1fb8d4
                                    const char* fingerprint,
Packit 1fb8d4
                                    BOOL host_mismatch);
Packit 1fb8d4
Packit 1fb8d4
/** @brief Callback used if user interaction is required to accept
Packit 1fb8d4
 *         a changed certificate.
Packit 1fb8d4
 *
Packit 1fb8d4
 *  @param common_name      The certificate registered hostname.
Packit 1fb8d4
 *  @param subject          The common name of the new certificate.
Packit 1fb8d4
 *  @param issuer           The issuer of the new certificate.
Packit 1fb8d4
 *  @param fingerprint      The fingerprint of the new certificate.
Packit 1fb8d4
 *  @param old_subject      The common name of the old certificate.
Packit 1fb8d4
 *  @param old_issuer       The issuer of the new certificate.
Packit 1fb8d4
 *  @param old_fingerprint  The fingerprint of the old certificate.
Packit 1fb8d4
 *
Packit 1fb8d4
 *  @return 1 to accept and store a certificate, 2 to accept
Packit 1fb8d4
 *          a certificate only for this session, 0 otherwise.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
typedef DWORD (*pVerifyChangedCertificate)(freerdp* instance,
Packit 1fb8d4
        const char* common_name,
Packit 1fb8d4
        const char* subject,
Packit 1fb8d4
        const char* issuer,
Packit 1fb8d4
        const char* new_fingerprint,
Packit 1fb8d4
        const char* old_subject,
Packit 1fb8d4
        const char* old_issuer,
Packit 1fb8d4
        const char* old_fingerprint);
Packit 1fb8d4
typedef int (*pVerifyX509Certificate)(freerdp* instance, BYTE* data,
Packit 1fb8d4
                                      int length, const char* hostname,
Packit 1fb8d4
                                      int port, DWORD flags);
Packit 1fb8d4
Packit 1fb8d4
typedef int (*pLogonErrorInfo)(freerdp* instance, UINT32 data, UINT32 type);
Packit 1fb8d4
Packit 1fb8d4
typedef int (*pSendChannelData)(freerdp* instance, UINT16 channelId, BYTE* data,
Packit 1fb8d4
                                int size);
Packit 1fb8d4
typedef int (*pReceiveChannelData)(freerdp* instance, UINT16 channelId,
Packit 1fb8d4
                                   BYTE* data, int size, int flags, int totalSize);
Packit 1fb8d4
Packit 1fb8d4
/**
Packit 1fb8d4
 * Defines the context for a given instance of RDP connection.
Packit 1fb8d4
 * It is embedded in the rdp_freerdp structure, and allocated by a call to freerdp_context_new().
Packit 1fb8d4
 * It is deallocated by a call to freerdp_context_free().
Packit 1fb8d4
 */
Packit 1fb8d4
struct rdp_context
Packit 1fb8d4
{
Packit 1fb8d4
	ALIGN64 freerdp* instance; /**< (offset 0)
Packit 1fb8d4
						  Pointer to a rdp_freerdp structure.
Packit 1fb8d4
						  This is a back-link to retrieve the freerdp instance from the context.
Packit 1fb8d4
						  It is set by the freerdp_context_new() function */
Packit 1fb8d4
	ALIGN64 freerdp_peer* peer; /**< (offset 1)
Packit 1fb8d4
						   Pointer to the client peer.
Packit 1fb8d4
						   This is set by a call to freerdp_peer_context_new() during peer initialization.
Packit 1fb8d4
						   This field is used only on the server side. */
Packit 1fb8d4
	ALIGN64 BOOL ServerMode; /**< (offset 2) true when context is in server mode */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 UINT32 LastError; /* 3 */
Packit 1fb8d4
Packit 1fb8d4
	UINT64 paddingA[16 - 4]; /* 4 */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 int argc;	/**< (offset 16)
Packit 1fb8d4
				   Number of arguments given to the program at launch time.
Packit 1fb8d4
				   Used to keep this data available and used later on, typically just before connection initialization.
Packit 1fb8d4
				   @see freerdp_parse_args() */
Packit 1fb8d4
	ALIGN64 char** argv; /**< (offset 17)
Packit 1fb8d4
					List of arguments given to the program at launch time.
Packit 1fb8d4
					Used to keep this data available and used later on, typically just before connection initialization.
Packit 1fb8d4
					@see freerdp_parse_args() */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 wPubSub* pubSub; /* (offset 18) */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 HANDLE channelErrorEvent; /* (offset 19)*/
Packit 1fb8d4
	ALIGN64 UINT channelErrorNum; /*(offset 20)*/
Packit 1fb8d4
	ALIGN64 char* errorDescription; /*(offset 21)*/
Packit 1fb8d4
Packit 1fb8d4
	UINT64 paddingB[32 - 22]; /* 22 */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 rdpRdp* rdp; /**< (offset 32)
Packit 1fb8d4
					Pointer to a rdp_rdp structure used to keep the connection's parameters.
Packit 1fb8d4
					It is allocated by freerdp_context_new() and deallocated by freerdp_context_free(), at the same
Packit 1fb8d4
					time that this rdp_context structure - there is no need to specifically allocate/deallocate this. */
Packit 1fb8d4
	ALIGN64 rdpGdi* gdi; /**< (offset 33)
Packit 1fb8d4
					Pointer to a rdp_gdi structure used to keep the gdi settings.
Packit 1fb8d4
					It is allocated by gdi_init() and deallocated by gdi_free().
Packit 1fb8d4
					It must be deallocated before deallocating this rdp_context structure. */
Packit 1fb8d4
	ALIGN64 rdpRail* rail; /* 34 */
Packit 1fb8d4
	ALIGN64 rdpCache* cache; /* 35 */
Packit 1fb8d4
	ALIGN64 rdpChannels* channels; /* 36 */
Packit 1fb8d4
	ALIGN64 rdpGraphics* graphics; /* 37 */
Packit 1fb8d4
	ALIGN64 rdpInput* input; /* 38 */
Packit 1fb8d4
	ALIGN64 rdpUpdate* update; /* 39 */
Packit 1fb8d4
	ALIGN64 rdpSettings* settings; /* 40 */
Packit 1fb8d4
	ALIGN64 rdpMetrics* metrics; /* 41 */
Packit 1fb8d4
	ALIGN64 rdpCodecs* codecs; /* 42 */
Packit 1fb8d4
	ALIGN64 rdpAutoDetect* autodetect; /* 43 */
Packit 1fb8d4
	ALIGN64 HANDLE abortEvent; /* 44 */
Packit 1fb8d4
	ALIGN64 int  disconnectUltimatum; /* 45 */
Packit 1fb8d4
	UINT64 paddingC[64 - 46]; /* 46 */
Packit 1fb8d4
Packit 1fb8d4
	UINT64 paddingD[96 - 64]; /* 64 */
Packit 1fb8d4
	UINT64 paddingE[128 - 96]; /* 96 */
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
/**
Packit 1fb8d4
 *  Defines the possible disconnect reasons in the MCS Disconnect Provider
Packit 1fb8d4
 *  Ultimatum PDU
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
enum Disconnect_Ultimatum
Packit 1fb8d4
{
Packit 1fb8d4
	Disconnect_Ultimatum_domain_disconnected = 0,
Packit 1fb8d4
	Disconnect_Ultimatum_provider_initiated = 1,
Packit 1fb8d4
	Disconnect_Ultimatum_token_purged = 2,
Packit 1fb8d4
	Disconnect_Ultimatum_user_requested = 3,
Packit 1fb8d4
	Disconnect_Ultimatum_channel_purged = 4
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
#include <freerdp/client.h>
Packit 1fb8d4
Packit 1fb8d4
/** Defines the options for a given instance of RDP connection.
Packit 1fb8d4
 *  This is built by the client and given to the FreeRDP library to create the connection
Packit 1fb8d4
 *  with the expected options.
Packit 1fb8d4
 *  It is allocated by a call to freerdp_new() and deallocated by a call to freerdp_free().
Packit 1fb8d4
 *  Some of its content need specific allocation/deallocation - see field description for details.
Packit 1fb8d4
 */
Packit 1fb8d4
struct rdp_freerdp
Packit 1fb8d4
{
Packit 1fb8d4
	ALIGN64 rdpContext* context; /**< (offset 0)
Packit 1fb8d4
							  Pointer to a rdpContext structure.
Packit 1fb8d4
							  Client applications can use the ContextSize field to register a context bigger than the rdpContext
Packit 1fb8d4
							  structure. This allow clients to use additional context information.
Packit 1fb8d4
							  When using this capability, client application should ALWAYS declare their structure with the
Packit 1fb8d4
							  rdpContext field first, and any additional content following it.
Packit 1fb8d4
							  Can be allocated by a call to freerdp_context_new().
Packit 1fb8d4
							  Must be deallocated by a call to freerdp_context_free() before deallocating the current instance. */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints;
Packit 1fb8d4
Packit 1fb8d4
	UINT64 paddingA[16 - 2]; /* 2 */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 rdpInput* input; /* (offset 16)
Packit 1fb8d4
						Input handle for the connection.
Packit 1fb8d4
						Will be initialized by a call to freerdp_context_new() */
Packit 1fb8d4
	ALIGN64 rdpUpdate* update; /* (offset 17)
Packit 1fb8d4
						  Update display parameters. Used to register display events callbacks and settings.
Packit 1fb8d4
						  Will be initialized by a call to freerdp_context_new() */
Packit 1fb8d4
	ALIGN64 rdpSettings* settings; /**< (offset 18)
Packit 1fb8d4
								Pointer to a rdpSettings structure. Will be used to maintain the required RDP settings.
Packit 1fb8d4
								Will be initialized by a call to freerdp_context_new() */
Packit 1fb8d4
	ALIGN64 rdpAutoDetect* autodetect; /* (offset 19)
Packit 1fb8d4
									Auto-Detect handle for the connection.
Packit 1fb8d4
									Will be initialized by a call to freerdp_context_new() */
Packit 1fb8d4
	UINT64 paddingB[32 - 20]; /* 20 */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 size_t ContextSize; /* (offset 32)
Packit 1fb8d4
							Specifies the size of the 'context' field. freerdp_context_new() will use this size to allocate the context buffer.
Packit 1fb8d4
							freerdp_new() sets it to sizeof(rdpContext).
Packit 1fb8d4
							If modifying it, there should always be a minimum of sizeof(rdpContext), as the freerdp library will assume it can use the
Packit 1fb8d4
							'context' field to set the required informations in it.
Packit 1fb8d4
							Clients will typically make it bigger, and use a context structure embedding the rdpContext, and
Packit 1fb8d4
							adding additional information after that.
Packit 1fb8d4
						 */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pContextNew ContextNew; /**< (offset 33)
Packit 1fb8d4
								 Callback for context allocation
Packit 1fb8d4
								 Can be set before calling freerdp_context_new() to have it executed after allocation and initialization.
Packit 1fb8d4
								 Must be set to NULL if not needed. */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pContextFree ContextFree; /**< (offset 34)
Packit 1fb8d4
								   Callback for context deallocation
Packit 1fb8d4
								   Can be set before calling freerdp_context_free() to have it executed before deallocation.
Packit 1fb8d4
								   Must be set to NULL if not needed. */
Packit 1fb8d4
	UINT64 paddingC[47 - 35]; /* 35 */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 UINT ConnectionCallbackState; /* 47 */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pPreConnect PreConnect; /**< (offset 48)
Packit 1fb8d4
								 Callback for pre-connect operations.
Packit 1fb8d4
								 Can be set before calling freerdp_connect() to have it executed before the actual connection happens.
Packit 1fb8d4
								 Must be set to NULL if not needed. */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pPostConnect PostConnect; /**< (offset 49)
Packit 1fb8d4
								   Callback for post-connect operations.
Packit 1fb8d4
								   Can be set before calling freerdp_connect() to have it executed after the actual connection has succeeded.
Packit 1fb8d4
								   Must be set to NULL if not needed. */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pAuthenticate Authenticate; /**< (offset 50)
Packit 1fb8d4
									 Callback for authentication.
Packit 1fb8d4
									 It is used to get the username/password when it was not provided at connection time. */
Packit 1fb8d4
	ALIGN64 pVerifyCertificate VerifyCertificate; /**< (offset 51)
Packit 1fb8d4
											   Callback for certificate validation.
Packit 1fb8d4
											   Used to verify that an unknown certificate is trusted. */
Packit 1fb8d4
	ALIGN64 pVerifyChangedCertificate VerifyChangedCertificate; /**< (offset 52)
Packit 1fb8d4
															 Callback for changed certificate validation.
Packit 1fb8d4
															 Used when a certificate differs from stored fingerprint.
Packit 1fb8d4
															 If returns TRUE, the new fingerprint will be trusted and old thrown out. */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pVerifyX509Certificate
Packit 1fb8d4
	VerifyX509Certificate;  /**< (offset 53)  Callback for X509 certificate verification (PEM format) */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pLogonErrorInfo
Packit 1fb8d4
	LogonErrorInfo; /**< (offset 54)  Callback for logon error info, important for logon system messages with RemoteApp */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pPostDisconnect PostDisconnect; /**< (offset 55)
Packit 1fb8d4
																						Callback for cleaning up resources allocated
Packit 1fb8d4
																						by connect callbacks. */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pAuthenticate GatewayAuthenticate; /**< (offset 56)
Packit 1fb8d4
									 Callback for gateway authentication.
Packit 1fb8d4
									 It is used to get the username/password when it was not provided at connection time. */
Packit 1fb8d4
Packit 1fb8d4
	UINT64 paddingD[64 - 57]; /* 57 */
Packit 1fb8d4
Packit 1fb8d4
	ALIGN64 pSendChannelData SendChannelData; /* (offset 64)
Packit 1fb8d4
										 Callback for sending data to a channel.
Packit 1fb8d4
										 By default, it is set by freerdp_new() to freerdp_send_channel_data(), which eventually calls
Packit 1fb8d4
										 freerdp_channel_send() */
Packit 1fb8d4
	ALIGN64 pReceiveChannelData ReceiveChannelData; /* (offset 65)
Packit 1fb8d4
											   Callback for receiving data from a channel.
Packit 1fb8d4
											   This is called by freerdp_channel_process() (if not NULL).
Packit 1fb8d4
											   Clients will typically use a function that calls freerdp_channels_data() to perform the needed tasks. */
Packit 1fb8d4
Packit 1fb8d4
	UINT64 paddingE[80 - 66]; /* 66 */
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
struct rdp_channel_handles
Packit 1fb8d4
{
Packit 1fb8d4
	wListDictionary* init;
Packit 1fb8d4
	wListDictionary* open;
Packit 1fb8d4
};
Packit 1fb8d4
typedef struct rdp_channel_handles rdpChannelHandles;
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API BOOL freerdp_context_new(freerdp* instance);
Packit 1fb8d4
FREERDP_API void freerdp_context_free(freerdp* instance);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API BOOL freerdp_connect(freerdp* instance);
Packit 1fb8d4
FREERDP_API BOOL freerdp_abort_connect(freerdp* instance);
Packit 1fb8d4
FREERDP_API BOOL freerdp_shall_disconnect(freerdp* instance);
Packit 1fb8d4
FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API BOOL freerdp_disconnect_before_reconnect(freerdp* instance);
Packit 1fb8d4
FREERDP_API BOOL freerdp_reconnect(freerdp* instance);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API UINT freerdp_channel_add_init_handle_data(rdpChannelHandles* handles, void* pInitHandle,
Packit 1fb8d4
        void* pUserData);
Packit 1fb8d4
FREERDP_API void* freerdp_channel_get_init_handle_data(rdpChannelHandles* handles,
Packit 1fb8d4
        void* pInitHandle);
Packit 1fb8d4
FREERDP_API void freerdp_channel_remove_init_handle_data(rdpChannelHandles* handles,
Packit 1fb8d4
        void* pInitHandle);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API UINT freerdp_channel_add_open_handle_data(rdpChannelHandles* handles, DWORD openHandle,
Packit 1fb8d4
        void* pUserData);
Packit 1fb8d4
FREERDP_API void* freerdp_channel_get_open_handle_data(rdpChannelHandles* handles,
Packit 1fb8d4
        DWORD openHandle);
Packit 1fb8d4
FREERDP_API void freerdp_channel_remove_open_handle_data(rdpChannelHandles* handles,
Packit 1fb8d4
        DWORD openHandle);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API UINT freerdp_channels_attach(freerdp* instance);
Packit 1fb8d4
FREERDP_API UINT freerdp_channels_detach(freerdp* instance);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API BOOL freerdp_get_fds(freerdp* instance, void** rfds, int* rcount,
Packit 1fb8d4
                                 void** wfds, int* wcount);
Packit 1fb8d4
FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events,
Packit 1fb8d4
        DWORD count);
Packit 1fb8d4
FREERDP_API BOOL freerdp_check_event_handles(rdpContext* context);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance,
Packit 1fb8d4
        DWORD id);
Packit 1fb8d4
FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance,
Packit 1fb8d4
        DWORD id);
Packit 1fb8d4
FREERDP_API int freerdp_message_queue_process_message(freerdp* instance,
Packit 1fb8d4
        DWORD id, wMessage* message);
Packit 1fb8d4
FREERDP_API int freerdp_message_queue_process_pending_messages(
Packit 1fb8d4
    freerdp* instance, DWORD id);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API UINT32 freerdp_error_info(freerdp* instance);
Packit 1fb8d4
FREERDP_API void freerdp_set_error_info(rdpRdp* rdp, UINT32 error);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API void freerdp_get_version(int* major, int* minor, int* revision);
Packit 1fb8d4
FREERDP_API const char* freerdp_get_version_string(void);
Packit 1fb8d4
FREERDP_API const char* freerdp_get_build_date(void);
Packit 1fb8d4
FREERDP_API const char* freerdp_get_build_revision(void);
Packit 1fb8d4
FREERDP_API const char* freerdp_get_build_config(void);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API freerdp* freerdp_new(void);
Packit 1fb8d4
FREERDP_API void freerdp_free(freerdp* instance);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
Packit 1fb8d4
FREERDP_API void freerdp_set_focus(freerdp* instance);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API int freerdp_get_disconnect_ultimatum(rdpContext* context);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API UINT32 freerdp_get_last_error(rdpContext* context);
Packit 1fb8d4
FREERDP_API const char* freerdp_get_last_error_name(UINT32 error);
Packit 1fb8d4
FREERDP_API const char* freerdp_get_last_error_string(UINT32 error);
Packit 1fb8d4
FREERDP_API void freerdp_set_last_error(rdpContext* context, UINT32 lastError);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API const char* freerdp_get_logon_error_info_type(UINT32 type);
Packit 1fb8d4
FREERDP_API const char* freerdp_get_logon_error_info_data(UINT32 data);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API ULONG freerdp_get_transport_sent(rdpContext* context,
Packit 1fb8d4
        BOOL resetCount);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_API void clearChannelError(rdpContext* context);
Packit 1fb8d4
FREERDP_API HANDLE getChannelErrorEventHandle(rdpContext* context);
Packit 1fb8d4
FREERDP_API UINT getChannelError(rdpContext* context);
Packit 1fb8d4
FREERDP_API const char* getChannelErrorDescription(rdpContext* context);
Packit 1fb8d4
FREERDP_API void setChannelError(rdpContext* context, UINT errorNum,
Packit 1fb8d4
                                 char* description);
Packit 1fb8d4
FREERDP_API BOOL checkChannelErrorEvent(rdpContext* context);
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit 1fb8d4
}
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#endif /* FREERDP_H */