亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? channels.c

?? LInux 下的遠程桌面工具 Rdesktop
?? C
字號:
/* -*- c-basic-offset: 8 -*-   rdesktop: A Remote Desktop Protocol client.   Protocol services - Virtual channels   Copyright (C) Erik Forsberg <forsberg@cendio.se> 2003   Copyright (C) Matthew Chapman 2003-2007   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#include "rdesktop.h"#define MAX_CHANNELS			6#define CHANNEL_CHUNK_LENGTH		1600#define CHANNEL_FLAG_FIRST		0x01#define CHANNEL_FLAG_LAST		0x02#define CHANNEL_FLAG_SHOW_PROTOCOL	0x10extern RD_BOOL g_use_rdp5;extern RD_BOOL g_encryption;VCHANNEL g_channels[MAX_CHANNELS];unsigned int g_num_channels;/* FIXME: We should use the information in TAG_SRV_CHANNELS to map RDP5   channels to MCS channels.   The format of TAG_SRV_CHANNELS seems to be   global_channel_no (uint16le)   number_of_other_channels (uint16le)   ..followed by uint16les for the other channels.*/VCHANNEL *channel_register(char *name, uint32 flags, void (*callback) (STREAM)){	VCHANNEL *channel;	if (!g_use_rdp5)		return NULL;	if (g_num_channels >= MAX_CHANNELS)	{		error("Channel table full, increase MAX_CHANNELS\n");		return NULL;	}	channel = &g_channels[g_num_channels];	channel->mcs_id = MCS_GLOBAL_CHANNEL + 1 + g_num_channels;	strncpy(channel->name, name, 8);	channel->flags = flags;	channel->process = callback;	g_num_channels++;	return channel;}STREAMchannel_init(VCHANNEL * channel, uint32 length){	STREAM s;	s = sec_init(g_encryption ? SEC_ENCRYPT : 0, length + 8);	s_push_layer(s, channel_hdr, 8);	return s;}voidchannel_send(STREAM s, VCHANNEL * channel){	uint32 length, flags;	uint32 thislength, remaining;	uint8 *data;#ifdef WITH_SCARD	scard_lock(SCARD_LOCK_CHANNEL);#endif	/* first fragment sent in-place */	s_pop_layer(s, channel_hdr);	length = s->end - s->p - 8;	DEBUG_CHANNEL(("channel_send, length = %d\n", length));	thislength = MIN(length, CHANNEL_CHUNK_LENGTH);/* Note: In the original clipboard implementation, this number was   1592, not 1600. However, I don't remember the reason and 1600 seems   to work so.. This applies only to *this* length, not the length of   continuation or ending packets. */	remaining = length - thislength;	flags = (remaining == 0) ? CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST : CHANNEL_FLAG_FIRST;	if (channel->flags & CHANNEL_OPTION_SHOW_PROTOCOL)		flags |= CHANNEL_FLAG_SHOW_PROTOCOL;	out_uint32_le(s, length);	out_uint32_le(s, flags);	data = s->end = s->p + thislength;	DEBUG_CHANNEL(("Sending %d bytes with FLAG_FIRST\n", thislength));	sec_send_to_channel(s, g_encryption ? SEC_ENCRYPT : 0, channel->mcs_id);	/* subsequent segments copied (otherwise would have to generate headers backwards) */	while (remaining > 0)	{		thislength = MIN(remaining, CHANNEL_CHUNK_LENGTH);		remaining -= thislength;		flags = (remaining == 0) ? CHANNEL_FLAG_LAST : 0;		if (channel->flags & CHANNEL_OPTION_SHOW_PROTOCOL)			flags |= CHANNEL_FLAG_SHOW_PROTOCOL;		DEBUG_CHANNEL(("Sending %d bytes with flags %d\n", thislength, flags));		s = sec_init(g_encryption ? SEC_ENCRYPT : 0, thislength + 8);		out_uint32_le(s, length);		out_uint32_le(s, flags);		out_uint8p(s, data, thislength);		s_mark_end(s);		sec_send_to_channel(s, g_encryption ? SEC_ENCRYPT : 0, channel->mcs_id);		data += thislength;	}#ifdef WITH_SCARD	scard_unlock(SCARD_LOCK_CHANNEL);#endif}voidchannel_process(STREAM s, uint16 mcs_channel){	uint32 length, flags;	uint32 thislength;	VCHANNEL *channel = NULL;	unsigned int i;	STREAM in;	for (i = 0; i < g_num_channels; i++)	{		channel = &g_channels[i];		if (channel->mcs_id == mcs_channel)			break;	}	if (i >= g_num_channels)		return;	in_uint32_le(s, length);	in_uint32_le(s, flags);	if ((flags & CHANNEL_FLAG_FIRST) && (flags & CHANNEL_FLAG_LAST))	{		/* single fragment - pass straight up */		channel->process(s);	}	else	{		/* add fragment to defragmentation buffer */		in = &channel->in;		if (flags & CHANNEL_FLAG_FIRST)		{			if (length > in->size)			{				in->data = (uint8 *) xrealloc(in->data, length);				in->size = length;			}			in->p = in->data;		}		thislength = MIN(s->end - s->p, in->data + in->size - in->p);		memcpy(in->p, s->p, thislength);		in->p += thislength;		if (flags & CHANNEL_FLAG_LAST)		{			in->end = in->p;			in->p = in->data;			channel->process(in);		}	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品不卡在线| 日韩免费视频一区| 国产精品看片你懂得| 日韩av电影天堂| 久久久久久电影| 亚洲精品成人悠悠色影视| 国产女主播视频一区二区| 欧美成人免费网站| 欧美精品 国产精品| 欧美精品电影在线播放| 欧美一区二区三区免费大片| 日韩欧美成人一区| 久久九九久久九九| 18成人在线观看| 午夜影院在线观看欧美| 蜜桃视频免费观看一区| 国产精品99久久久久久有的能看| 成人精品视频.| 91久久精品一区二区| 91精品国产品国语在线不卡| 精品成人a区在线观看| 国产精品丝袜一区| 亚洲1区2区3区视频| 国产精品99久久久久久宅男| 97超碰欧美中文字幕| 欧美群妇大交群中文字幕| 久久久综合网站| 尤物在线观看一区| 美女视频黄免费的久久| 成人黄色av网站在线| 欧美日韩dvd在线观看| 久久久不卡影院| 香蕉av福利精品导航 | 国产精品亚洲午夜一区二区三区| 成人晚上爱看视频| 欧美卡1卡2卡| 国产精品盗摄一区二区三区| 舔着乳尖日韩一区| 91网址在线看| 精品国产乱码久久久久久图片 | 欧美日韩视频在线观看一区二区三区 | 精品国产麻豆免费人成网站| 亚洲日本成人在线观看| 激情综合色丁香一区二区| 色天天综合久久久久综合片| 精品日韩99亚洲| 亚洲国产一区在线观看| 成人一区二区视频| 精品国产髙清在线看国产毛片| 亚洲精选一二三| 成人免费av资源| 久久久99精品免费观看| 日韩影院精彩在线| 色婷婷香蕉在线一区二区| 欧美国产激情二区三区| 国产综合久久久久影院| 欧美一级片免费看| 亚洲h在线观看| 欧美吻胸吃奶大尺度电影| 中文字幕中文字幕一区| 成人综合在线网站| 久久久久久免费| 激情丁香综合五月| 91精品国产综合久久精品麻豆| 一区二区三区四区乱视频| 成人一区二区三区在线观看 | 91视频一区二区| 国产精品伦理一区二区| 国产91在线观看丝袜| 久久久久国产成人精品亚洲午夜| 日韩黄色免费网站| 日韩欧美国产精品一区| 激情综合五月婷婷| 精品久久久久久久久久久院品网| 另类中文字幕网| 精品福利一区二区三区免费视频| 免费视频最近日韩| 精品国产91九色蝌蚪| 国产成人精品三级| 国产精品卡一卡二| 色一情一伦一子一伦一区| 一区二区在线电影| 91精品国产综合久久国产大片| 蜜桃在线一区二区三区| 久久午夜羞羞影院免费观看| 国产黄色91视频| 亚洲色欲色欲www在线观看| 91官网在线观看| 香蕉成人啪国产精品视频综合网| 欧美一区二区三区视频免费播放| 另类人妖一区二区av| 国产欧美日韩一区二区三区在线观看| 成人高清视频在线| 亚洲一区影音先锋| 精品欧美一区二区三区精品久久 | 91麻豆精品国产自产在线观看一区 | 最新日韩av在线| 在线观看网站黄不卡| 热久久久久久久| 欧美激情在线看| 欧美三区在线视频| 激情深爱一区二区| 亚洲综合网站在线观看| 日韩精品资源二区在线| 成a人片国产精品| 午夜精品福利在线| 中文字幕成人网| 91精品在线一区二区| 美女久久久精品| 香蕉成人伊视频在线观看| 91精品国产综合久久精品app| 老司机精品视频在线| 国产精品久久久久一区二区三区| 不卡高清视频专区| 午夜精品福利一区二区蜜股av| 日韩免费视频一区| 91久久精品网| 国产精品中文字幕日韩精品| 亚洲一区二区三区视频在线播放 | 免费观看30秒视频久久| 国产精品久久久久久久蜜臀| 69堂国产成人免费视频| 成人18视频在线播放| 亚洲美女视频一区| 欧美在线999| 国产在线一区二区| 亚洲国产另类精品专区| 国产精品短视频| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日本不卡在线视频| 最近日韩中文字幕| 欧美经典一区二区三区| 日韩一区二区精品葵司在线| 91亚洲精品久久久蜜桃| 成人午夜私人影院| 久久激五月天综合精品| 婷婷综合五月天| 亚洲一区二区视频| 亚洲欧美另类小说| 日韩一区在线看| 国产精品亲子伦对白| 国产精品天美传媒沈樵| 国产午夜精品一区二区| 久久嫩草精品久久久久| 欧美成人aa大片| 国产成人午夜99999| 亚洲国产精品天堂| 亚洲精品免费在线观看| 亚洲人成影院在线观看| 国产精品久久网站| 国产精品国产精品国产专区不蜜 | 国产综合久久久久影院| 人人爽香蕉精品| 麻豆视频观看网址久久| 日韩精品久久理论片| 青青草97国产精品免费观看无弹窗版| 丝袜美腿一区二区三区| 日韩不卡一二三区| 日韩国产在线一| 免费成人在线观看视频| 国产一区激情在线| 成人免费不卡视频| 色呦呦一区二区三区| 欧美日韩成人在线一区| 日韩一区二区在线观看视频播放| 日韩一级高清毛片| 26uuu色噜噜精品一区| 国产精品欧美综合在线| 亚洲女同ⅹxx女同tv| 一区二区三区在线不卡| 日韩二区三区四区| 国产一区在线观看麻豆| 成人国产精品视频| 在线视频观看一区| 欧美一级高清大全免费观看| 久久婷婷国产综合精品青草| 国产区在线观看成人精品| 亚洲精品国产第一综合99久久 | 国产激情一区二区三区桃花岛亚洲| 丰满亚洲少妇av| 欧美裸体一区二区三区| 久久久亚洲欧洲日产国码αv| 日本一区二区动态图| 午夜精品福利一区二区蜜股av | 日韩一区二区三区在线| 国产亚洲精品超碰| 亚洲成人高清在线| 国产激情精品久久久第一区二区| 色94色欧美sute亚洲线路一ni| 日韩三级视频在线观看| 亚洲男人的天堂在线aⅴ视频| 日本不卡一区二区| 91丨九色丨蝌蚪丨老版| 日韩欧美国产三级电影视频| 亚洲六月丁香色婷婷综合久久| 美女www一区二区| 色老综合老女人久久久| www久久精品| 婷婷国产在线综合| 99re这里都是精品|