20 #ifndef FREERDP_LIB_CORE_CLIENT_H
21 #define FREERDP_LIB_CORE_CLIENT_H
23 #include <winpr/crt.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;
114 FREERDP_LOCAL
void freerdp_channels_free(rdpChannels* channels);
116 WINPR_ATTR_MALLOC(freerdp_channels_free, 1)
117 FREERDP_LOCAL rdpChannels* freerdp_channels_new(freerdp* instance);
119 FREERDP_LOCAL UINT freerdp_channels_disconnect(rdpChannels* channels, freerdp* instance);
120 FREERDP_LOCAL
void freerdp_channels_close(rdpChannels* channels, freerdp* instance);
122 FREERDP_LOCAL
void freerdp_channels_register_instance(rdpChannels* channels, freerdp* instance);
123 FREERDP_LOCAL UINT freerdp_channels_pre_connect(rdpChannels* channels, freerdp* instance);
124 FREERDP_LOCAL UINT freerdp_channels_post_connect(rdpChannels* channels, freerdp* instance);
127 FREERDP_LOCAL SSIZE_T freerdp_client_channel_get_registered_event_handles(rdpChannels* channels,