winvnc源码阅读笔记(四)---------vncDesktopThread线程

本文详细解读了winvnc源码中的vncDesktopThread线程,该线程主要负责初始化、设置系统Hook、定时处理拉模式以及处理剪切板消息。在run_undetached函数中,它等待多个事件并响应屏幕、键盘、鼠标等更新,同时执行屏幕捕捉、光标和鼠标处理,确保VNC服务器高效运行。
摘要由CSDN通过智能技术生成

   此线程的核心函数是run_undetached(),我们从这个函数开始阅读。

  该函数的核心功能是:

(1)    该线程调用vncDesktop::Startup()进行所有的初始化工作:
    1.    设置象素格式和位图信息
    2.    设置各种系统 Hook, 添加系统挂钩,包括屏幕, 键盘,鼠标。
    3.    设置一个定时器来处理拉模式(polling mode),每一秒钟执行一次. 这样 TriggerUpdate 例程每秒钟被执行一次.

(2)    设置处理剪切板消息
(3)    创建一个缓存区域对象。所有的区域更新消息都被缓存在该对象中,仅当 TriggerUpdate被触发时,才把这些消息传给所有的客户端。

   我们来看代码:

   void *
vncDesktopThread::run_undetached(void *arg)
{

 if(Q_init() == NULL)  //debug by qz,初始化工作。
  return NULL;
 rfb::SimpleUpdateTracker clipped_updates;
 rfb::ClippedUpdateTracker updates(clipped_updates, m_desktop->m_Cliprect);
 Q_process_desktop(); //debug by qz,处理桌面信息

 while (looping && !fShutdownOrdered)
 {  

   result=WaitForMultipleObjects(6,m_desktop->trigger_events,FALSE,waittime);//debug by qz,等待其中一个事件发送信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值