예제 #1
0
rdpChannels* freerdp_channels_new(void)
{
	rdpChannels* channels;

	channels = (rdpChannels*) malloc(sizeof(rdpChannels));
	ZeroMemory(channels, sizeof(rdpChannels));

	channels->MsgPipe = MessagePipe_New();

	ArrayList_Add(g_ChannelsList, (void*) channels);

	return channels;
}
예제 #2
0
파일: svc_plugin.c 프로젝트: akboom/FreeRDP
static void svc_plugin_process_connected(rdpSvcPlugin* plugin, void* pData, UINT32 dataLength)
{
	UINT32 status;

	status = plugin->channel_entry_points.pVirtualChannelOpen(plugin->init_handle,
		&plugin->open_handle, plugin->channel_def.name, svc_plugin_open_event);

	if (status != CHANNEL_RC_OK)
	{
		fprintf(stderr, "svc_plugin_process_connected: open failed\n");
		return;
	}

	plugin->MsgPipe = MessagePipe_New();

	plugin->thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) svc_plugin_thread_func, (void*) plugin, 0, NULL);
}
예제 #3
0
파일: client.c 프로젝트: JozLes77/FreeRDP
rdpChannels* freerdp_channels_new(void)
{
    rdpChannels* channels;

    channels = (rdpChannels*) calloc(1, sizeof(rdpChannels));

    if (!channels)
        return NULL;

    channels->MsgPipe = MessagePipe_New();

    if (!g_OpenHandles)
    {
        g_OpenHandles = HashTable_New(TRUE);
        InitializeCriticalSectionAndSpinCount(&g_channels_lock, 4000);
    }

    return channels;
}
예제 #4
0
static void remdesk_virtual_channel_event_connected(remdeskPlugin* remdesk, LPVOID pData, UINT32 dataLength)
{
	UINT32 status;

	status = remdesk->channelEntryPoints.pVirtualChannelOpen(remdesk->InitHandle,
		&remdesk->OpenHandle, remdesk->channelDef.name, remdesk_virtual_channel_open_event);

	remdesk_add_open_handle_data(remdesk->OpenHandle, remdesk);

	if (status != CHANNEL_RC_OK)
	{
		WLog_ERR(TAG,  "open failed: status: %d", status);
		return;
	}

	remdesk->MsgPipe = MessagePipe_New();

	remdesk->thread = CreateThread(NULL, 0,
			(LPTHREAD_START_ROUTINE) remdesk_virtual_channel_client_thread, (void*) remdesk, 0, NULL);
}
예제 #5
0
static void cliprdr_virtual_channel_event_connected(cliprdrPlugin* cliprdr, LPVOID pData, UINT32 dataLength)
{
	UINT32 status;

	status = cliprdr->channelEntryPoints.pVirtualChannelOpen(cliprdr->InitHandle,
		&cliprdr->OpenHandle, cliprdr->channelDef.name, cliprdr_virtual_channel_open_event);

	cliprdr_add_open_handle_data(cliprdr->OpenHandle, cliprdr);

	if (status != CHANNEL_RC_OK)
	{
		WLog_ERR(TAG,  "cliprdr_virtual_channel_event_connected: open failed: status: %d", status);
		return;
	}

	cliprdr->MsgPipe = MessagePipe_New();

	cliprdr->thread = CreateThread(NULL, 0,
			(LPTHREAD_START_ROUTINE) cliprdr_virtual_channel_client_thread, (void*) cliprdr, 0, NULL);
}
예제 #6
0
파일: channels.c 프로젝트: akboom/FreeRDP
rdpChannels* freerdp_channels_new(void)
{
	rdpChannels* channels;
	rdpChannelsList* channels_list;

	channels = (rdpChannels*) malloc(sizeof(rdpChannels));
	ZeroMemory(channels, sizeof(rdpChannels));

	channels->MsgPipe = MessagePipe_New();

	/* Add it to the global list */
	channels_list = (rdpChannelsList*) malloc(sizeof(rdpChannelsList));
	ZeroMemory(channels_list, sizeof(rdpChannelsList));
	channels_list->channels = channels;

	WaitForSingleObject(g_mutex_list, INFINITE);
	channels_list->next = g_channels_list;
	g_channels_list = channels_list;
	ReleaseMutex(g_mutex_list);

	return channels;
}