コード例 #1
0
ファイル: wtsvc.c プロジェクト: ArthurGodoy/FreeRDP
void WTSVirtualChannelManagerGetFileDescriptor(WTSVirtualChannelManager* vcm,
	void** fds, int* fds_count)
{
	wait_obj_get_fds(vcm->send_event, fds, fds_count);
	if (vcm->drdynvc_channel)
	{
		wait_obj_get_fds(vcm->drdynvc_channel->receive_event, fds, fds_count);
	}
}
コード例 #2
0
ファイル: wtsvc.c プロジェクト: railmeat/FreeRDP
boolean WTSVirtualChannelQuery(
    /* __in */  void* hChannelHandle,
    /* __in */  WTS_VIRTUAL_CLASS WtsVirtualClass,
    /* __out */ void** ppBuffer,
    /* __out */ uint32* pBytesReturned)
{
    void* fds[10];
    int fds_count = 0;
    boolean result = false;
    rdpPeerChannel* channel = (rdpPeerChannel*) hChannelHandle;

    switch (WtsVirtualClass)
    {
    case WTSVirtualFileHandle:
        wait_obj_get_fds(channel->receive_event, fds, &fds_count);
        *ppBuffer = xmalloc(sizeof(void*));
        memcpy(*ppBuffer, &fds[0], sizeof(void*));
        *pBytesReturned = sizeof(void*);
        result = true;
        break;

    default:
        break;
    }
    return result;
}
コード例 #3
0
ファイル: wtsvc.c プロジェクト: ArthurGodoy/FreeRDP
boolean WTSVirtualChannelQuery(
	/* __in */  void* hChannelHandle,
	/* __in */  WTS_VIRTUAL_CLASS WtsVirtualClass,
	/* __out */ void** ppBuffer,
	/* __out */ uint32* pBytesReturned)
{
	boolean bval;
	void* fds[10];
	int fds_count = 0;
	boolean result = false;
	rdpPeerChannel* channel = (rdpPeerChannel*) hChannelHandle;

	switch (WtsVirtualClass)
	{
		case WTSVirtualFileHandle:
			wait_obj_get_fds(channel->receive_event, fds, &fds_count);
			*ppBuffer = xmalloc(sizeof(void*));
			memcpy(*ppBuffer, &fds[0], sizeof(void*));
			*pBytesReturned = sizeof(void*);
			result = true;
			break;

		case WTSVirtualChannelReady:
			if (channel->channel_type == RDP_PEER_CHANNEL_TYPE_SVC)
			{
				bval = true;
				result = true;
			}
			else
			{
				switch (channel->dvc_open_state)
				{
					case DVC_OPEN_STATE_NONE:
						bval = false;
						result = true;
						break;
					case DVC_OPEN_STATE_SUCCEEDED:
						bval = true;
						result = true;
						break;
					default:
						bval = false;
						result = false;
						break;
				}
			}
			*ppBuffer = xmalloc(sizeof(boolean));
			memcpy(*ppBuffer, &bval, sizeof(boolean));
			*pBytesReturned = sizeof(boolean);
			break;

		default:
			break;
	}
	return result;
}
コード例 #4
0
ファイル: wtsvc.c プロジェクト: railmeat/FreeRDP
void WTSVirtualChannelManagerGetFileDescriptor(WTSVirtualChannelManager* vcm,
        void** fds, int* fds_count)
{
    wait_obj_get_fds(vcm->send_event, fds, fds_count);
}
コード例 #5
0
ファイル: transport.c プロジェクト: racoon00/FreeRDP
void transport_get_fds(rdpTransport* transport, void** rfds, int* rcount)
{
	rfds[*rcount] = (void*)(long)(transport->tcp->sockfd);
	(*rcount)++;
	wait_obj_get_fds(transport->recv_event, rfds, rcount);
}
コード例 #6
0
ファイル: libchannels.c プロジェクト: adambprotiviti/FreeRDP
/**
 * called only from main thread
 */
boolean freerdp_channels_get_fds(rdpChannels* chan_man, freerdp* instance, void** read_fds,
	int* read_count, void** write_fds, int* write_count)
{
	wait_obj_get_fds(chan_man->signal, read_fds, read_count);
	return true;
}
コード例 #7
0
ファイル: libchanman.c プロジェクト: mwu406/FreeRDP-1.0
/**
 * called only from main thread
 */
int freerdp_chanman_get_fds(rdpChanMan* chan_man, rdpInst* inst, void** read_fds,
	int* read_count, void** write_fds, int* write_count)
{
	wait_obj_get_fds(chan_man->signal, read_fds, read_count);
	return 0;
}