mirror of
https://github.com/FreeRDP/FreeRDP.git
synced 2025-06-03 00:00:20 +00:00
libfreerdp-core: expose opaque HANDLE instead of WTSVirtualChannelManager*
This commit is contained in:
parent
25259b33b0
commit
6e1cdf1b67
@ -453,12 +453,11 @@ static BOOL audin_server_close(audin_server_context* context)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
audin_server_context* audin_server_context_new(WTSVirtualChannelManager* vcm)
|
audin_server_context* audin_server_context_new(HANDLE vcm)
|
||||||
{
|
{
|
||||||
audin_server* audin;
|
audin_server* audin;
|
||||||
|
|
||||||
audin = (audin_server*) malloc(sizeof(audin_server));
|
audin = (audin_server*) calloc(1, sizeof(audin_server));
|
||||||
ZeroMemory(audin, sizeof(audin_server));
|
|
||||||
|
|
||||||
audin->context.vcm = vcm;
|
audin->context.vcm = vcm;
|
||||||
audin->context.selected_client_format = -1;
|
audin->context.selected_client_format = -1;
|
||||||
|
@ -468,7 +468,7 @@ static void* cliprdr_server_thread(void* arg)
|
|||||||
|
|
||||||
static int cliprdr_server_start(CliprdrServerContext* context)
|
static int cliprdr_server_start(CliprdrServerContext* context)
|
||||||
{
|
{
|
||||||
context->priv->ChannelHandle = WTSVirtualChannelOpen((HANDLE) context->vcm, WTS_CURRENT_SESSION, "cliprdr");
|
context->priv->ChannelHandle = WTSVirtualChannelOpen(context->vcm, WTS_CURRENT_SESSION, "cliprdr");
|
||||||
|
|
||||||
if (!context->priv->ChannelHandle)
|
if (!context->priv->ChannelHandle)
|
||||||
return -1;
|
return -1;
|
||||||
@ -491,7 +491,7 @@ static int cliprdr_server_stop(CliprdrServerContext* context)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CliprdrServerContext* cliprdr_server_context_new(WTSVirtualChannelManager* vcm)
|
CliprdrServerContext* cliprdr_server_context_new(HANDLE vcm)
|
||||||
{
|
{
|
||||||
CliprdrServerContext* context;
|
CliprdrServerContext* context;
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ static void* drdynvc_server_thread(void* arg)
|
|||||||
|
|
||||||
static int drdynvc_server_start(DrdynvcServerContext* context)
|
static int drdynvc_server_start(DrdynvcServerContext* context)
|
||||||
{
|
{
|
||||||
context->priv->ChannelHandle = WTSVirtualChannelOpen((HANDLE) context->vcm, WTS_CURRENT_SESSION, "drdynvc");
|
context->priv->ChannelHandle = WTSVirtualChannelOpen(context->vcm, WTS_CURRENT_SESSION, "drdynvc");
|
||||||
|
|
||||||
if (!context->priv->ChannelHandle)
|
if (!context->priv->ChannelHandle)
|
||||||
return -1;
|
return -1;
|
||||||
@ -109,27 +109,20 @@ static int drdynvc_server_stop(DrdynvcServerContext* context)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DrdynvcServerContext* drdynvc_server_context_new(WTSVirtualChannelManager* vcm)
|
DrdynvcServerContext* drdynvc_server_context_new(HANDLE vcm)
|
||||||
{
|
{
|
||||||
DrdynvcServerContext* context;
|
DrdynvcServerContext* context;
|
||||||
|
|
||||||
context = (DrdynvcServerContext*) malloc(sizeof(DrdynvcServerContext));
|
context = (DrdynvcServerContext*) calloc(1, sizeof(DrdynvcServerContext));
|
||||||
|
|
||||||
if (context)
|
if (context)
|
||||||
{
|
{
|
||||||
ZeroMemory(context, sizeof(DrdynvcServerContext));
|
|
||||||
|
|
||||||
context->vcm = vcm;
|
context->vcm = vcm;
|
||||||
|
|
||||||
context->Start = drdynvc_server_start;
|
context->Start = drdynvc_server_start;
|
||||||
context->Stop = drdynvc_server_stop;
|
context->Stop = drdynvc_server_stop;
|
||||||
|
|
||||||
context->priv = (DrdynvcServerPrivate*) malloc(sizeof(DrdynvcServerPrivate));
|
context->priv = (DrdynvcServerPrivate*) calloc(1, sizeof(DrdynvcServerPrivate));
|
||||||
|
|
||||||
if (context->priv)
|
|
||||||
{
|
|
||||||
ZeroMemory(context->priv, sizeof(DrdynvcServerPrivate));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return context;
|
return context;
|
||||||
|
@ -630,7 +630,7 @@ static void* rdpdr_server_thread(void* arg)
|
|||||||
|
|
||||||
static int rdpdr_server_start(RdpdrServerContext* context)
|
static int rdpdr_server_start(RdpdrServerContext* context)
|
||||||
{
|
{
|
||||||
context->priv->ChannelHandle = WTSVirtualChannelOpen((HANDLE) context->vcm, WTS_CURRENT_SESSION, "rdpdr");
|
context->priv->ChannelHandle = WTSVirtualChannelOpen(context->vcm, WTS_CURRENT_SESSION, "rdpdr");
|
||||||
|
|
||||||
if (!context->priv->ChannelHandle)
|
if (!context->priv->ChannelHandle)
|
||||||
return -1;
|
return -1;
|
||||||
@ -653,7 +653,7 @@ static int rdpdr_server_stop(RdpdrServerContext* context)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RdpdrServerContext* rdpdr_server_context_new(WTSVirtualChannelManager* vcm)
|
RdpdrServerContext* rdpdr_server_context_new(HANDLE vcm)
|
||||||
{
|
{
|
||||||
RdpdrServerContext* context;
|
RdpdrServerContext* context;
|
||||||
|
|
||||||
|
@ -488,7 +488,7 @@ static BOOL rdpsnd_server_close(RdpsndServerContext* context)
|
|||||||
|
|
||||||
static int rdpsnd_server_start(RdpsndServerContext* context)
|
static int rdpsnd_server_start(RdpsndServerContext* context)
|
||||||
{
|
{
|
||||||
context->priv->ChannelHandle = WTSVirtualChannelOpen((HANDLE) context->vcm, WTS_CURRENT_SESSION, "rdpsnd");
|
context->priv->ChannelHandle = WTSVirtualChannelOpen(context->vcm, WTS_CURRENT_SESSION, "rdpsnd");
|
||||||
|
|
||||||
if (!context->priv->ChannelHandle)
|
if (!context->priv->ChannelHandle)
|
||||||
return -1;
|
return -1;
|
||||||
@ -513,7 +513,7 @@ static int rdpsnd_server_stop(RdpsndServerContext* context)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RdpsndServerContext* rdpsnd_server_context_new(WTSVirtualChannelManager* vcm)
|
RdpsndServerContext* rdpsnd_server_context_new(HANDLE vcm)
|
||||||
{
|
{
|
||||||
RdpsndServerContext* context;
|
RdpsndServerContext* context;
|
||||||
|
|
||||||
|
@ -43,8 +43,6 @@
|
|||||||
#define WTSVirtualEventHandle 3 /* Extended */
|
#define WTSVirtualEventHandle 3 /* Extended */
|
||||||
#define WTSVirtualChannelReady 4 /* Extended */
|
#define WTSVirtualChannelReady 4 /* Extended */
|
||||||
|
|
||||||
typedef struct WTSVirtualChannelManager WTSVirtualChannelManager;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@ -53,11 +51,11 @@ extern "C" {
|
|||||||
* WTSVirtualChannelManager functions are FreeRDP extensions to the API.
|
* WTSVirtualChannelManager functions are FreeRDP extensions to the API.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
FREERDP_API void WTSVirtualChannelManagerGetFileDescriptor(WTSVirtualChannelManager* vcm, void** fds, int* fds_count);
|
FREERDP_API void WTSVirtualChannelManagerGetFileDescriptor(HANDLE hServer, void** fds, int* fds_count);
|
||||||
FREERDP_API BOOL WTSVirtualChannelManagerCheckFileDescriptor(WTSVirtualChannelManager* vcm);
|
FREERDP_API BOOL WTSVirtualChannelManagerCheckFileDescriptor(HANDLE hServer);
|
||||||
FREERDP_API HANDLE WTSVirtualChannelManagerGetEventHandle(WTSVirtualChannelManager* vcm);
|
FREERDP_API HANDLE WTSVirtualChannelManagerGetEventHandle(HANDLE hServer);
|
||||||
|
|
||||||
FREERDP_API BOOL WTSVirtualChannelManagerIsChannelJoined(WTSVirtualChannelManager* vcm, const char* name);
|
FREERDP_API BOOL WTSVirtualChannelManagerIsChannelJoined(HANDLE hServer, const char* name);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ struct _audin_server_context
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FREERDP_API audin_server_context* audin_server_context_new(WTSVirtualChannelManager* vcm);
|
FREERDP_API audin_server_context* audin_server_context_new(HANDLE vcm);
|
||||||
FREERDP_API void audin_server_context_free(audin_server_context* context);
|
FREERDP_API void audin_server_context_free(audin_server_context* context);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -39,7 +39,7 @@ typedef int (*psCliprdrStop)(CliprdrServerContext* context);
|
|||||||
|
|
||||||
struct _cliprdr_server_context
|
struct _cliprdr_server_context
|
||||||
{
|
{
|
||||||
WTSVirtualChannelManager* vcm;
|
HANDLE vcm;
|
||||||
|
|
||||||
psCliprdrStart Start;
|
psCliprdrStart Start;
|
||||||
psCliprdrStop Stop;
|
psCliprdrStop Stop;
|
||||||
@ -47,7 +47,7 @@ struct _cliprdr_server_context
|
|||||||
CliprdrServerPrivate* priv;
|
CliprdrServerPrivate* priv;
|
||||||
};
|
};
|
||||||
|
|
||||||
FREERDP_API CliprdrServerContext* cliprdr_server_context_new(WTSVirtualChannelManager* vcm);
|
FREERDP_API CliprdrServerContext* cliprdr_server_context_new(HANDLE vcm);
|
||||||
FREERDP_API void cliprdr_server_context_free(CliprdrServerContext* context);
|
FREERDP_API void cliprdr_server_context_free(CliprdrServerContext* context);
|
||||||
|
|
||||||
#endif /* FREERDP_CHANNEL_SERVER_CLIPRDR_H */
|
#endif /* FREERDP_CHANNEL_SERVER_CLIPRDR_H */
|
||||||
|
@ -36,7 +36,7 @@ typedef int (*psDrdynvcStop)(DrdynvcServerContext* context);
|
|||||||
|
|
||||||
struct _drdynvc_client_context
|
struct _drdynvc_client_context
|
||||||
{
|
{
|
||||||
WTSVirtualChannelManager* vcm;
|
HANDLE vcm;
|
||||||
|
|
||||||
psDrdynvcStart Start;
|
psDrdynvcStart Start;
|
||||||
psDrdynvcStop Stop;
|
psDrdynvcStop Stop;
|
||||||
@ -44,7 +44,7 @@ struct _drdynvc_client_context
|
|||||||
DrdynvcServerPrivate* priv;
|
DrdynvcServerPrivate* priv;
|
||||||
};
|
};
|
||||||
|
|
||||||
FREERDP_API DrdynvcServerContext* drdynvc_server_context_new(WTSVirtualChannelManager* vcm);
|
FREERDP_API DrdynvcServerContext* drdynvc_server_context_new(HANDLE vcm);
|
||||||
FREERDP_API void drdynvc_server_context_free(DrdynvcServerContext* context);
|
FREERDP_API void drdynvc_server_context_free(DrdynvcServerContext* context);
|
||||||
|
|
||||||
#endif /* FREERDP_CHANNEL_SERVER_DRDYNVC_H */
|
#endif /* FREERDP_CHANNEL_SERVER_DRDYNVC_H */
|
||||||
|
@ -37,7 +37,7 @@ typedef int (*psRdpdrStop)(RdpdrServerContext* context);
|
|||||||
|
|
||||||
struct _rdpdr_server_context
|
struct _rdpdr_server_context
|
||||||
{
|
{
|
||||||
WTSVirtualChannelManager* vcm;
|
HANDLE vcm;
|
||||||
|
|
||||||
psRdpdrStart Start;
|
psRdpdrStart Start;
|
||||||
psRdpdrStop Stop;
|
psRdpdrStop Stop;
|
||||||
@ -45,7 +45,7 @@ struct _rdpdr_server_context
|
|||||||
RdpdrServerPrivate* priv;
|
RdpdrServerPrivate* priv;
|
||||||
};
|
};
|
||||||
|
|
||||||
FREERDP_API RdpdrServerContext* rdpdr_server_context_new(WTSVirtualChannelManager* vcm);
|
FREERDP_API RdpdrServerContext* rdpdr_server_context_new(HANDLE vcm);
|
||||||
FREERDP_API void rdpdr_server_context_free(RdpdrServerContext* context);
|
FREERDP_API void rdpdr_server_context_free(RdpdrServerContext* context);
|
||||||
|
|
||||||
#endif /* FREERDP_CHANNEL_SERVER_RDPDR_H */
|
#endif /* FREERDP_CHANNEL_SERVER_RDPDR_H */
|
||||||
|
@ -40,7 +40,7 @@ typedef void (*psRdpsndServerActivated)(RdpsndServerContext* context);
|
|||||||
|
|
||||||
struct _rdpsnd_server_context
|
struct _rdpsnd_server_context
|
||||||
{
|
{
|
||||||
WTSVirtualChannelManager* vcm;
|
HANDLE vcm;
|
||||||
|
|
||||||
psRdpsndStart Start;
|
psRdpsndStart Start;
|
||||||
psRdpsndStop Stop;
|
psRdpsndStop Stop;
|
||||||
@ -105,7 +105,7 @@ struct _rdpsnd_server_context
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FREERDP_API RdpsndServerContext* rdpsnd_server_context_new(WTSVirtualChannelManager* vcm);
|
FREERDP_API RdpsndServerContext* rdpsnd_server_context_new(HANDLE vcm);
|
||||||
FREERDP_API void rdpsnd_server_context_free(RdpsndServerContext* context);
|
FREERDP_API void rdpsnd_server_context_free(RdpsndServerContext* context);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -383,9 +383,10 @@ static int WTSReceiveChannelData(freerdp_peer* client, UINT16 channelId, BYTE* d
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WTSVirtualChannelManagerGetFileDescriptor(WTSVirtualChannelManager* vcm, void** fds, int* fds_count)
|
void WTSVirtualChannelManagerGetFileDescriptor(HANDLE hServer, void** fds, int* fds_count)
|
||||||
{
|
{
|
||||||
void* fd;
|
void* fd;
|
||||||
|
WTSVirtualChannelManager* vcm = (WTSVirtualChannelManager*) hServer;
|
||||||
|
|
||||||
fd = GetEventWaitObject(MessageQueue_Event(vcm->queue));
|
fd = GetEventWaitObject(MessageQueue_Event(vcm->queue));
|
||||||
|
|
||||||
@ -409,12 +410,13 @@ void WTSVirtualChannelManagerGetFileDescriptor(WTSVirtualChannelManager* vcm, vo
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WTSVirtualChannelManagerCheckFileDescriptor(WTSVirtualChannelManager* vcm)
|
BOOL WTSVirtualChannelManagerCheckFileDescriptor(HANDLE hServer)
|
||||||
{
|
{
|
||||||
wMessage message;
|
wMessage message;
|
||||||
BOOL status = TRUE;
|
BOOL status = TRUE;
|
||||||
rdpPeerChannel* channel;
|
rdpPeerChannel* channel;
|
||||||
UINT32 dynvc_caps;
|
UINT32 dynvc_caps;
|
||||||
|
WTSVirtualChannelManager* vcm = (WTSVirtualChannelManager*) hServer;
|
||||||
|
|
||||||
if ((vcm->drdynvc_state == DRDYNVC_STATE_NONE) && vcm->client->activated)
|
if ((vcm->drdynvc_state == DRDYNVC_STATE_NONE) && vcm->client->activated)
|
||||||
{
|
{
|
||||||
@ -455,16 +457,20 @@ BOOL WTSVirtualChannelManagerCheckFileDescriptor(WTSVirtualChannelManager* vcm)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
HANDLE WTSVirtualChannelManagerGetEventHandle(WTSVirtualChannelManager* vcm)
|
HANDLE WTSVirtualChannelManagerGetEventHandle(HANDLE hServer)
|
||||||
{
|
{
|
||||||
|
WTSVirtualChannelManager* vcm = (WTSVirtualChannelManager*) hServer;
|
||||||
return MessageQueue_Event(vcm->queue);
|
return MessageQueue_Event(vcm->queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WTSVirtualChannelManagerIsChannelJoined(WTSVirtualChannelManager* vcm, const char* name)
|
BOOL WTSVirtualChannelManagerIsChannelJoined(HANDLE hServer, const char* name)
|
||||||
{
|
{
|
||||||
|
rdpMcs* mcs;
|
||||||
UINT32 index;
|
UINT32 index;
|
||||||
BOOL joined = FALSE;
|
BOOL joined = FALSE;
|
||||||
rdpMcs* mcs = vcm->rdp->mcs;
|
WTSVirtualChannelManager* vcm = (WTSVirtualChannelManager*) hServer;
|
||||||
|
|
||||||
|
mcs = vcm->rdp->mcs;
|
||||||
|
|
||||||
for (index = 0; index < mcs->channelCount; index++)
|
for (index = 0; index < mcs->channelCount; index++)
|
||||||
{
|
{
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
#include <winpr/stream.h>
|
#include <winpr/stream.h>
|
||||||
#include <winpr/collections.h>
|
#include <winpr/collections.h>
|
||||||
|
|
||||||
|
typedef struct WTSVirtualChannelManager WTSVirtualChannelManager;
|
||||||
|
|
||||||
#include "rdp.h"
|
#include "rdp.h"
|
||||||
|
|
||||||
#define CREATE_REQUEST_PDU 0x01
|
#define CREATE_REQUEST_PDU 0x01
|
||||||
|
@ -59,7 +59,7 @@ struct mf_peer_context
|
|||||||
NSC_CONTEXT* nsc_context;
|
NSC_CONTEXT* nsc_context;
|
||||||
|
|
||||||
//#ifdef WITH_SERVER_CHANNELS
|
//#ifdef WITH_SERVER_CHANNELS
|
||||||
WTSVirtualChannelManager* vcm;
|
HANDLE vcm;
|
||||||
//#endif
|
//#endif
|
||||||
//#ifdef CHANNEL_AUDIN_SERVER
|
//#ifdef CHANNEL_AUDIN_SERVER
|
||||||
audin_server_context* audin;
|
audin_server_context* audin;
|
||||||
|
@ -187,7 +187,7 @@ int mf_peer_context_new(freerdp_peer* client, mfPeerContext* context)
|
|||||||
context->s = Stream_New(NULL, 0xFFFF);
|
context->s = Stream_New(NULL, 0xFFFF);
|
||||||
|
|
||||||
//#ifdef WITH_SERVER_CHANNELS
|
//#ifdef WITH_SERVER_CHANNELS
|
||||||
context->vcm = (WTSVirtualChannelManager*) WTSOpenServerA((LPSTR) client->context);
|
context->vcm = WTSOpenServerA((LPSTR) client->context);
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
mf_info_peer_register(context->info, context);
|
mf_info_peer_register(context->info, context);
|
||||||
@ -222,7 +222,7 @@ void mf_peer_context_free(freerdp_peer* client, mfPeerContext* context)
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#ifdef WITH_SERVER_CHANNELS
|
//#ifdef WITH_SERVER_CHANNELS
|
||||||
WTSCloseServer((HANDLE) context->vcm);
|
WTSCloseServer(context->vcm);
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ void test_peer_context_new(freerdp_peer* client, testPeerContext* context)
|
|||||||
context->icon_x = -1;
|
context->icon_x = -1;
|
||||||
context->icon_y = -1;
|
context->icon_y = -1;
|
||||||
|
|
||||||
context->vcm = (WTSVirtualChannelManager*) WTSOpenServerA((LPSTR) client->context);
|
context->vcm = WTSOpenServerA((LPSTR) client->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_peer_context_free(freerdp_peer* client, testPeerContext* context)
|
void test_peer_context_free(freerdp_peer* client, testPeerContext* context)
|
||||||
|
@ -99,7 +99,7 @@ struct wf_peer_context
|
|||||||
HANDLE socketThread;
|
HANDLE socketThread;
|
||||||
HANDLE socketSemaphore;
|
HANDLE socketSemaphore;
|
||||||
|
|
||||||
WTSVirtualChannelManager* vcm;
|
HANDLE vcm;
|
||||||
RdpsndServerContext* rdpsnd;
|
RdpsndServerContext* rdpsnd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
void wf_peer_context_new(freerdp_peer* client, wfPeerContext* context)
|
void wf_peer_context_new(freerdp_peer* client, wfPeerContext* context)
|
||||||
{
|
{
|
||||||
context->info = wf_info_get_instance();
|
context->info = wf_info_get_instance();
|
||||||
context->vcm = (WTSVirtualChannelManager*) WTSOpenServerA((LPSTR) client->context);
|
context->vcm = WTSOpenServerA((LPSTR) client->context);
|
||||||
wf_info_peer_register(context->info, context);
|
wf_info_peer_register(context->info, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user