FreeRDP
Loading...
Searching...
No Matches
freerdp.h
1
22#ifndef FREERDP_H
23#define FREERDP_H
24
25#include <winpr/stream.h>
26#include <winpr/sspi.h>
27
28#include <freerdp/api.h>
29#include <freerdp/types.h>
30#include <freerdp/error.h>
31#include <freerdp/event.h>
32
33#include <freerdp/settings.h>
34
35#include <freerdp/gdi/gdi.h>
36#include <freerdp/codecs.h>
37#include <freerdp/metrics.h>
38#include <freerdp/extension.h>
39#include <freerdp/heartbeat.h>
40#include <freerdp/message.h>
41#include <freerdp/autodetect.h>
42#include <freerdp/streamdump.h>
43
44#ifdef __cplusplus
45extern "C"
46{
47#endif
48
49 typedef struct rdp_rdp rdpRdp;
50 typedef struct rdp_rail rdpRail;
51 typedef struct rdp_cache rdpCache;
52
53 typedef struct rdp_client_context rdpClientContext;
54 typedef struct rdp_client_entry_points_v1 RDP_CLIENT_ENTRY_POINTS_V1;
55 typedef RDP_CLIENT_ENTRY_POINTS_V1 RDP_CLIENT_ENTRY_POINTS;
56
57#include <freerdp/utils/smartcardlogon.h>
58#include <freerdp/update.h>
59#include <freerdp/input.h>
60#include <freerdp/graphics.h>
61
62#define MCS_BASE_CHANNEL_ID 1001
63#define MCS_GLOBAL_CHANNEL_ID 1003
64
65/* Flags used by certificate callbacks */
66#define VERIFY_CERT_FLAG_NONE 0x00
67#define VERIFY_CERT_FLAG_LEGACY 0x02
68#define VERIFY_CERT_FLAG_REDIRECT 0x10
69#define VERIFY_CERT_FLAG_GATEWAY 0x20
70#define VERIFY_CERT_FLAG_CHANGED 0x40
71#define VERIFY_CERT_FLAG_MISMATCH 0x80
72#define VERIFY_CERT_FLAG_MATCH_LEGACY_SHA1 0x100
73#define VERIFY_CERT_FLAG_FP_IS_PEM 0x200
74
75/* Message types used by gateway messaging callback */
76#define GATEWAY_MESSAGE_CONSENT 1
77#define GATEWAY_MESSAGE_SERVICE 2
78
79 typedef enum
80 {
81 AUTH_NLA,
82 AUTH_TLS,
83 AUTH_RDP,
84 GW_AUTH_HTTP,
85 GW_AUTH_RDG,
86 GW_AUTH_RPC,
87 AUTH_SMARTCARD_PIN,
88 AUTH_RDSTLS
89 } rdp_auth_reason;
90
91 typedef BOOL (*pContextNew)(freerdp* instance, rdpContext* context);
92 typedef void (*pContextFree)(freerdp* instance, rdpContext* context);
93
94 typedef BOOL (*pConnectCallback)(freerdp* instance);
95 typedef void (*pPostDisconnect)(freerdp* instance);
96
110 typedef BOOL (*pAuthenticate)(freerdp* instance, char** username, char** password,
111 char** domain);
112
134 typedef BOOL (*pAuthenticateEx)(freerdp* instance, char** username, char** password,
135 char** domain, rdp_auth_reason reason);
136
155 typedef BOOL (*pChooseSmartcard)(freerdp* instance, SmartcardCertInfo** cert_list, DWORD count,
156 DWORD* choice, BOOL gateway);
157
158 typedef enum
159 {
160 ACCESS_TOKEN_TYPE_AAD,
161 ACCESS_TOKEN_TYPE_AVD
162 } AccessTokenType;
163
174 typedef BOOL (*pGetAccessToken)(freerdp* instance, AccessTokenType tokenType, char** token,
175 size_t count, ...);
176
190 typedef BOOL (*pGetCommonAccessToken)(rdpContext* context, AccessTokenType tokenType,
191 char** token, size_t count, ...);
192
204 typedef SSIZE_T (*pRetryDialog)(freerdp* instance, const char* what, size_t current,
205 void* userarg);
206
222#if defined(WITH_FREERDP_DEPRECATED)
223 WINPR_DEPRECATED_VAR("Use pVerifyCertificateEx",
224 typedef DWORD (*pVerifyCertificate)(
225 freerdp* instance, const char* common_name, const char* subject,
226 const char* issuer, const char* fingerprint, BOOL host_mismatch));
227#endif
228
244 typedef DWORD (*pVerifyCertificateEx)(freerdp* instance, const char* host, UINT16 port,
245 const char* common_name, const char* subject,
246 const char* issuer, const char* fingerprint, DWORD flags);
247
263#if defined(WITH_FREERDP_DEPRECATED)
264 WINPR_DEPRECATED_VAR("Use pVerifyChangedCertificateEx",
265 typedef DWORD (*pVerifyChangedCertificate)(
266 freerdp* instance, const char* common_name, const char* subject,
267 const char* issuer, const char* new_fingerprint,
268 const char* old_subject, const char* old_issuer,
269 const char* old_fingerprint));
270#endif
271
292 typedef DWORD (*pVerifyChangedCertificateEx)(freerdp* instance, const char* host, UINT16 port,
293 const char* common_name, const char* subject,
294 const char* issuer, const char* new_fingerprint,
295 const char* old_subject, const char* old_issuer,
296 const char* old_fingerprint, DWORD flags);
297
311 typedef int (*pVerifyX509Certificate)(freerdp* instance, const BYTE* data, size_t length,
312 const char* hostname, UINT16 port, DWORD flags);
313
314 typedef int (*pLogonErrorInfo)(freerdp* instance, UINT32 data, UINT32 type);
315
316 typedef BOOL (*pSendChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
317 size_t size);
318 typedef BOOL (*pSendChannelPacket)(freerdp* instance, UINT16 channelId, size_t totalSize,
319 UINT32 flags, const BYTE* data, size_t chunkSize);
320 typedef BOOL (*pReceiveChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
321 size_t size, UINT32 flags, size_t totalSize);
322
323 /* type can be one of the GATEWAY_MESSAGE_ type defines */
324 typedef BOOL (*pPresentGatewayMessage)(freerdp* instance, UINT32 type, BOOL isDisplayMandatory,
325 BOOL isConsentMandatory, size_t length,
326 const WCHAR* message);
327
334 {
335 ALIGN64 freerdp* instance;
339 ALIGN64 freerdp_peer* peer;
343 ALIGN64 BOOL ServerMode;
345 ALIGN64 UINT32 LastError; /* 3 */
346
347 UINT64 paddingA[16 - 4]; /* 4 */
348
349 ALIGN64 int argc;
354 ALIGN64 char** argv;
360 ALIGN64 wPubSub* pubSub; /* (offset 18) */
361
362 ALIGN64 HANDLE channelErrorEvent; /* (offset 19)*/
363 ALIGN64 UINT channelErrorNum; /*(offset 20)*/
364 ALIGN64 char* errorDescription; /*(offset 21)*/
365
366 UINT64 paddingB[32 - 22]; /* 22 */
367
368 ALIGN64 rdpRdp*
374 ALIGN64 rdpGdi* gdi;
378 ALIGN64 rdpRail* rail; /* 34 */
379 ALIGN64 rdpCache* cache; /* 35 */
380 ALIGN64 rdpChannels* channels; /* 36 */
381 ALIGN64 rdpGraphics* graphics; /* 37 */
382 ALIGN64 rdpInput* input; /* 38 owned by rdpRdp */
383 ALIGN64 rdpUpdate* update; /* 39 owned by rdpRdp */
384 ALIGN64 rdpSettings* settings; /* 40 owned by rdpRdp */
385 ALIGN64 rdpMetrics* metrics; /* 41 */
386 ALIGN64 rdpCodecs* codecs; /* 42 */
387 ALIGN64 rdpAutoDetect* autodetect; /* 43 owned by rdpRdp */
388 UINT64 paddingC1[45 - 44]; /* 44 */
389 ALIGN64 int disconnectUltimatum; /* 45 */
390 UINT64 paddingC[64 - 46]; /* 46 */
391
392 ALIGN64 rdpStreamDumpContext* dump; /* 64 */
393 ALIGN64 wLog* log; /* 65 */
394
395 UINT64 paddingD[96 - 66]; /* 66 */
396 UINT64 paddingE[128 - 96]; /* 96 */
397 };
398
406 enum Disconnect_Ultimatum
407 {
408 Disconnect_Ultimatum_domain_disconnected = 0,
409 Disconnect_Ultimatum_provider_initiated = 1,
410 Disconnect_Ultimatum_token_purged = 2,
411 Disconnect_Ultimatum_user_requested = 3,
412 Disconnect_Ultimatum_channel_purged = 4
413 };
414
415#include <freerdp/client.h>
416
425 {
426 ALIGN64
427 rdpContext* context;
437 ALIGN64 RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints;
438
439 UINT64 paddingA[16 - 2]; /* 2 */
440
441#if defined(WITH_FREERDP_DEPRECATED)
442 WINPR_DEPRECATED_VAR("use rdpContext::input instead", ALIGN64 rdpInput* input;) /* (offset
443 16) Input handle for the connection. Will be initialized by a call
444 to freerdp_context_new() owned by rdpRdp */
445 WINPR_DEPRECATED_VAR("use rdpContext::update instead",
446 ALIGN64 rdpUpdate* update;) /* (offset 17)
447 Update display parameters. Used to register display events callbacks
448and settings. Will be initialized by a call to freerdp_context_new() owned by rdpRdp */
449 WINPR_DEPRECATED_VAR("use rdpContext::settings instead",
450 ALIGN64 rdpSettings* settings;)
456 WINPR_DEPRECATED_VAR("use rdpContext::autodetect instead",
457 ALIGN64 rdpAutoDetect* autodetect;) /* (offset 19)
458 Auto-Detect handle for the connection.
459 Will be initialized by a call to freerdp_context_new()
460owned by rdpRdp */
461#else
462 UINT64 paddingX[4];
463#endif
464 ALIGN64 rdpHeartbeat* heartbeat; /* (offset 21) owned by rdpRdp*/
465
466 UINT64 paddingB[32 - 21]; /* 21 */
467
468 ALIGN64 size_t
469 ContextSize; /* (offset 32)
470 Specifies the size of the 'context' field. freerdp_context_new() will use this
471 size to allocate the context buffer. freerdp_new() sets it to
472 sizeof(rdpContext). If modifying it, there should always be a minimum of
473 sizeof(rdpContext), as the freerdp library will assume it can use the 'context'
474 field to set the required information in it. Clients will typically make it
475 bigger, and use a context structure embedding the rdpContext, and adding
476 additional information after that.
477 */
478
479 WINPR_ATTR_NODISCARD ALIGN64 pContextNew
485 ALIGN64 pContextFree
490 UINT64 paddingC[47 - 35]; /* 35 */
491
492 ALIGN64 UINT ConnectionCallbackState; /* 47 */
493
494 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
500 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
506#if defined(WITH_FREERDP_DEPRECATED)
507 WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead",
508 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate
509 Authenticate);
514 WINPR_DEPRECATED_VAR("Use VerifyCertificateEx or VerifyX509Certificate instead",
515 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificate
516 VerifyCertificate;)
517 WINPR_DEPRECATED_VAR("Use VerifyChangedCertificateEx or VerifyX509Certificate instead",
518 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificate
519 VerifyChangedCertificate;)
520#else
521 ALIGN64 UINT64 reserved50[3];
522#endif
523 WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate
527 WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo
531 ALIGN64 pPostDisconnect
539#if defined(WITH_FREERDP_DEPRECATED)
540 WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead",
541 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate
542 GatewayAuthenticate);
546#else
547 ALIGN64 UINT64 reserved56[1];
548#endif
549 WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage;
553 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect;
559 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
564 ALIGN64 pPostDisconnect
565 PostFinalDisconnect;
571 UINT64 paddingD[64 - 61]; /* 61 */
572
573 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelData
574 SendChannelData; /* (offset 64)
575 Callback for sending data to a channel.
576 By default, it is set by freerdp_new() to freerdp_send_channel_data(), which
577 eventually calls freerdp_channel_send() */
578 WINPR_ATTR_NODISCARD ALIGN64 pReceiveChannelData
579 ReceiveChannelData; /* (offset 65)
580 Callback for receiving data from a channel.
581 This is called by freerdp_channel_process() (if not nullptr).
582 Clients will typically use a function that calls freerdp_channels_data()
583 to perform the needed tasks. */
584
585 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx
589 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx
593 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelPacket
594 SendChannelPacket; /* (offset 68)
595 * Callback for sending RAW data to a channel. In contrast to
596 * SendChannelData data fragmentation is up to the user and this
597 * function sends data as is with the provided flags.
598 */
599 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx;
603 WINPR_ATTR_NODISCARD ALIGN64 pChooseSmartcard
604 ChooseSmartcard; /* (offset 70)
605 Callback for choosing a smartcard for logon.
606 Used when multiple smartcards are available. Returns an index into a list
607 of SmartcardCertInfo pointers */
608 WINPR_ATTR_NODISCARD ALIGN64 pGetAccessToken GetAccessToken; /* (offset 71)
609 Callback for obtaining an access token
610 for \b AccessTokenType authentication */
611 WINPR_ATTR_NODISCARD ALIGN64 pRetryDialog
612 RetryDialog; /* (offset 72) Callback for displaying a dialog in case of
613 something needs a retry */
614 UINT64 paddingE[80 - 73]; /* 73 */
615 };
616
618 {
619 wListDictionary* init;
620 wListDictionary* open;
621 };
622 typedef struct rdp_channel_handles rdpChannelHandles;
623
624 FREERDP_API void freerdp_context_free(freerdp* instance);
625
626 WINPR_ATTR_NODISCARD
627 FREERDP_API BOOL freerdp_context_new(freerdp* instance);
628
629 WINPR_ATTR_NODISCARD
630 FREERDP_API BOOL freerdp_context_new_ex(freerdp* instance, rdpSettings* settings);
631
632 WINPR_ATTR_NODISCARD
633 FREERDP_API BOOL freerdp_context_reset(freerdp* instance);
634
635 WINPR_ATTR_NODISCARD
636 FREERDP_API BOOL freerdp_connect(freerdp* instance);
637
638#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
639 WINPR_DEPRECATED_VAR("use freerdp_abort_connect_context instead",
640 FREERDP_API BOOL freerdp_abort_connect(freerdp* instance));
641#endif
642
643 FREERDP_API BOOL freerdp_abort_connect_context(rdpContext* context);
644
645 WINPR_ATTR_NODISCARD
646 FREERDP_API HANDLE freerdp_abort_event(rdpContext* context);
647
648#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
649 WINPR_DEPRECATED_VAR("use freerdp_shall_disconnect_context instead",
650 WINPR_ATTR_NODISCARD FREERDP_API BOOL
651 freerdp_shall_disconnect(const freerdp* instance));
652#endif
653
654 WINPR_ATTR_NODISCARD
655 FREERDP_API BOOL freerdp_shall_disconnect_context(const rdpContext* context);
656
657 FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
658
667 WINPR_ATTR_NODISCARD
668 FREERDP_API const char* freerdp_disconnect_reason_string(int reason);
669
670#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
671 WINPR_DEPRECATED_VAR("use freerdp_disconnect_before_reconnect_context instead",
672 WINPR_ATTR_NODISCARD FREERDP_API BOOL
673 freerdp_disconnect_before_reconnect(freerdp* instance));
674#endif
675
676 WINPR_ATTR_NODISCARD
677 FREERDP_API BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context);
678
679 WINPR_ATTR_NODISCARD
680 FREERDP_API BOOL freerdp_reconnect(freerdp* instance);
681
682 WINPR_ATTR_NODISCARD
683 FREERDP_API UINT freerdp_channels_attach(freerdp* instance);
684
685 WINPR_ATTR_NODISCARD
686 FREERDP_API UINT freerdp_channels_detach(freerdp* instance);
687
688#if defined(WITH_FREERDP_DEPRECATED)
689 WINPR_DEPRECATED_VAR("Use freerdp_get_event_handles",
690 WINPR_ATTR_NODISCARD FREERDP_API BOOL
691 freerdp_get_fds(freerdp* instance, void** rfds, int* rcount,
692 void** wfds, int* wcount));
693#endif
694
695 WINPR_ATTR_NODISCARD
696 FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
697
698 WINPR_ATTR_NODISCARD
699 FREERDP_API DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count);
700
701 WINPR_ATTR_NODISCARD
702 FREERDP_API BOOL freerdp_check_event_handles(rdpContext* context);
703
704 WINPR_ATTR_NODISCARD
705 FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id);
706
707 WINPR_ATTR_NODISCARD
708 FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id);
709
710 WINPR_ATTR_NODISCARD
711 FREERDP_API int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
712 wMessage* message);
713
714 WINPR_ATTR_NODISCARD
715 FREERDP_API int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id);
716
717 WINPR_ATTR_NODISCARD
718 FREERDP_API UINT32 freerdp_error_info(const freerdp* instance);
719
720 FREERDP_API void freerdp_set_error_info(rdpRdp* rdp, UINT32 error);
721
722 WINPR_ATTR_NODISCARD
723 FREERDP_API BOOL freerdp_send_error_info(rdpRdp* rdp);
724
725 WINPR_ATTR_NODISCARD
726 FREERDP_API BOOL freerdp_get_stats(const rdpRdp* rdp, UINT64* inBytes, UINT64* outBytes,
727 UINT64* inPackets, UINT64* outPackets);
728
729 FREERDP_API void freerdp_get_version(int* major, int* minor, int* revision);
730
731 WINPR_ATTR_NODISCARD
732 FREERDP_API const char* freerdp_get_version_string(void);
733
734 WINPR_ATTR_NODISCARD
735 FREERDP_API const char* freerdp_get_build_revision(void);
736
737 WINPR_ATTR_NODISCARD
738 FREERDP_API const char* freerdp_get_build_config(void);
739
740 FREERDP_API void freerdp_free(freerdp* instance);
741
742 WINPR_ATTR_MALLOC(freerdp_free, 1)
743 WINPR_ATTR_NODISCARD
744 FREERDP_API freerdp* freerdp_new(void);
745
746 WINPR_ATTR_NODISCARD
747 FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
748 FREERDP_API void freerdp_set_focus(freerdp* instance);
749
750 WINPR_ATTR_NODISCARD
751 FREERDP_API int freerdp_get_disconnect_ultimatum(const rdpContext* context);
752
753 WINPR_ATTR_NODISCARD
754 FREERDP_API UINT32 freerdp_get_last_error(const rdpContext* context);
755
756 WINPR_ATTR_NODISCARD
757 FREERDP_API const char* freerdp_get_last_error_name(UINT32 code);
758
759 WINPR_ATTR_NODISCARD
760 FREERDP_API const char* freerdp_get_last_error_string(UINT32 code);
761
762 WINPR_ATTR_NODISCARD
763 FREERDP_API const char* freerdp_get_last_error_category(UINT32 code);
764
765#define freerdp_set_last_error(context, lastError) \
766 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
767
768#define freerdp_set_last_error_if_not(context, lastError) \
769 do \
770 { \
771 if (freerdp_get_last_error(context) == FREERDP_ERROR_SUCCESS) \
772 freerdp_set_last_error_log(context, lastError); \
773 } while (0)
774
775#define freerdp_set_last_error_log(context, lastError) \
776 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
777 FREERDP_API void freerdp_set_last_error_ex(rdpContext* context, UINT32 lastError,
778 const char* fkt, const char* file, int line);
779
780 WINPR_ATTR_NODISCARD
781 FREERDP_API const char* freerdp_get_logon_error_info_type(UINT32 type);
782
783 WINPR_ATTR_NODISCARD
784 FREERDP_API const char* freerdp_get_logon_error_info_type_ex(UINT32 type, char* buffer,
785 size_t size);
786
787 WINPR_ATTR_NODISCARD
788 FREERDP_API const char* freerdp_get_logon_error_info_data(UINT32 data);
789
790 WINPR_ATTR_NODISCARD
791 FREERDP_API const char* freerdp_get_logon_error_info_data_ex(UINT32 data, char* buffer,
792 size_t size);
793
794 WINPR_ATTR_NODISCARD
795 FREERDP_API ULONG freerdp_get_transport_sent(const rdpContext* context, BOOL resetCount);
796
797 WINPR_ATTR_NODISCARD
798 FREERDP_API BOOL freerdp_nla_impersonate(rdpContext* context);
799
800 WINPR_ATTR_NODISCARD
801 FREERDP_API BOOL freerdp_nla_revert_to_self(rdpContext* context);
802
803 WINPR_ATTR_NODISCARD
804 FREERDP_API UINT32 freerdp_get_nla_sspi_error(const rdpContext* context);
805
814 WINPR_ATTR_NODISCARD
815 FREERDP_API BOOL freerdp_nla_encrypt(rdpContext* context, const SecBuffer* inBuffer,
816 SecBuffer* outBuffer);
817
826 WINPR_ATTR_NODISCARD
827 FREERDP_API BOOL freerdp_nla_decrypt(rdpContext* context, const SecBuffer* inBuffer,
828 SecBuffer* outBuffer);
829
839 WINPR_ATTR_NODISCARD
840 FREERDP_API SECURITY_STATUS freerdp_nla_QueryContextAttributes(rdpContext* context,
841 DWORD ulAttr, PVOID pBuffer);
842
852 WINPR_ATTR_NODISCARD
853 FREERDP_API SECURITY_STATUS freerdp_nla_FreeContextBuffer(rdpContext* context, PVOID pBuffer);
854
855 FREERDP_API void clearChannelError(rdpContext* context);
856
857 WINPR_ATTR_NODISCARD
858 FREERDP_API HANDLE getChannelErrorEventHandle(rdpContext* context);
859
860 WINPR_ATTR_NODISCARD
861 FREERDP_API UINT getChannelError(const rdpContext* context);
862
863 WINPR_ATTR_NODISCARD
864 FREERDP_API const char* getChannelErrorDescription(const rdpContext* context);
865
866 FREERDP_API void setChannelError(rdpContext* context, UINT errorNum, const char* format, ...);
867
868 WINPR_ATTR_NODISCARD
869 FREERDP_API BOOL checkChannelErrorEvent(rdpContext* context);
870
871 WINPR_ATTR_NODISCARD
872 FREERDP_API const char* freerdp_nego_get_routing_token(const rdpContext* context,
873 DWORD* length);
874
881 WINPR_ATTR_NODISCARD
882 FREERDP_API CONNECTION_STATE freerdp_get_state(const rdpContext* context);
883
890 WINPR_ATTR_NODISCARD
891 FREERDP_API const char* freerdp_state_string(CONNECTION_STATE state);
892
902 WINPR_ATTR_NODISCARD
903 FREERDP_API BOOL freerdp_is_active_state(const rdpContext* context);
904
905 WINPR_ATTR_NODISCARD
906 FREERDP_API BOOL freerdp_channels_from_mcs(rdpSettings* settings, const rdpContext* context);
907
908 WINPR_ATTR_NODISCARD
909 FREERDP_API BOOL freerdp_is_valid_mcs_create_request(const BYTE* data, size_t size);
910
911 WINPR_ATTR_NODISCARD
912 FREERDP_API BOOL freerdp_is_valid_mcs_create_response(const BYTE* data, size_t size);
913
926 WINPR_ATTR_NODISCARD
927 FREERDP_API BOOL freerdp_persist_credentials(rdpContext* context);
928
937 WINPR_ATTR_NODISCARD
938 FREERDP_API BOOL freerdp_set_common_access_token(rdpContext* context,
939 pGetCommonAccessToken GetCommonAccessToken);
940
947 WINPR_ATTR_NODISCARD
948 FREERDP_API pGetCommonAccessToken freerdp_get_common_access_token(const rdpContext* context);
949
950#ifdef __cplusplus
951}
952#endif
953
954#endif /* FREERDP_H */
ALIGN64 char ** argv
Definition freerdp.h:354
ALIGN64 rdpRdp * rdp
Definition freerdp.h:369
ALIGN64 freerdp_peer * peer
Definition freerdp.h:339
ALIGN64 BOOL ServerMode
Definition freerdp.h:343
ALIGN64 rdpGdi * gdi
Definition freerdp.h:374
ALIGN64 int argc
Definition freerdp.h:349
ALIGN64 freerdp * instance
Definition freerdp.h:335
UINT64 paddingD[64 - 61]
Definition freerdp.h:571
WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx VerifyCertificateEx
Definition freerdp.h:586
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect
Definition freerdp.h:553
WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo LogonErrorInfo
Definition freerdp.h:528
WINPR_ATTR_NODISCARD ALIGN64 pContextNew ContextNew
Definition freerdp.h:480
ALIGN64 pPostDisconnect PostDisconnect
Definition freerdp.h:532
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx
Definition freerdp.h:599
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback LoadChannels
Definition freerdp.h:560
ALIGN64 rdpContext * context
Definition freerdp.h:427
WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage
Definition freerdp.h:549
ALIGN64 pContextFree ContextFree
Definition freerdp.h:486
WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate VerifyX509Certificate
Definition freerdp.h:524
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PreConnect
Definition freerdp.h:495
WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx VerifyChangedCertificateEx
Definition freerdp.h:590
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PostConnect
Definition freerdp.h:501
Definition rdp.h:148