20#ifndef FREERDP_LIB_CORE_CLIENT_H
21#define FREERDP_LIB_CORE_CLIENT_H
24#include <winpr/stream.h>
25#include <winpr/wtsapi.h>
27#include <freerdp/freerdp.h>
28#include <freerdp/constants.h>
30#include <freerdp/svc.h>
31#include <freerdp/peer.h>
32#include <freerdp/addin.h>
33#include <freerdp/api.h>
35#include <freerdp/client/channels.h>
36#include <freerdp/client/drdynvc.h>
37#include <freerdp/channels/channels.h>
39#ifndef CHANNEL_MAX_COUNT
40#define CHANNEL_MAX_COUNT 30
45 PVIRTUALCHANNELENTRY entry;
46 PVIRTUALCHANNELENTRYEX entryEx;
47 PCHANNEL_INIT_EVENT_FN pChannelInitEventProc;
48 PCHANNEL_INIT_EVENT_EX_FN pChannelInitEventProcEx;
55 char name[CHANNEL_NAME_LEN + 1];
60 rdpChannels* channels;
62 PCHANNEL_OPEN_EVENT_FN pChannelOpenEventProc;
63 PCHANNEL_OPEN_EVENT_EX_FN pChannelOpenEventProcEx;
82 rdpChannels* channels;
106 wMessageQueue* queue;
108 DrdynvcClientContext* drdynvc;
111 wHashTable* channelEvents;
114FREERDP_LOCAL
void freerdp_channels_free(rdpChannels* channels);
116WINPR_ATTR_MALLOC(freerdp_channels_free, 1)
117FREERDP_LOCAL rdpChannels* freerdp_channels_new(freerdp* instance);
119FREERDP_LOCAL UINT freerdp_channels_disconnect(rdpChannels* channels, freerdp* instance);
120FREERDP_LOCAL
void freerdp_channels_close(rdpChannels* channels, freerdp* instance);
122FREERDP_LOCAL
void freerdp_channels_register_instance(rdpChannels* channels, freerdp* instance);
123FREERDP_LOCAL UINT freerdp_channels_pre_connect(rdpChannels* channels, freerdp* instance);
124FREERDP_LOCAL UINT freerdp_channels_post_connect(rdpChannels* channels, freerdp* instance);
127FREERDP_LOCAL SSIZE_T freerdp_client_channel_get_registered_event_handles(rdpChannels* channels,