第27章 硬件输入模型和局部输入状态.PDFVIP

第27章 硬件输入模型和局部输入状态.PDF

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第27章 硬件输入模型和局部输入状态.PDF

下载 第2 7章 硬件输入模型和局部输入状态 本章将讨论系统的硬件输入模型。重点将考察按键和鼠标事件是如何进入系统并发送给适 当的窗口过程的。微软设计输入模型的一个主要目标就是为了保证一个线程的动作不要对其他 线程的动作产生不好的影响。这里是一个 1 6位Wi n d o w s 中的例子:如果一个任务引起一个死循 环,所有的任务都被挂起,不能再响应用户。用户只能重新启动计算机。这样就给一个单个的 任务太多的控制。强壮的操作系统,例如 Windows 2000 和Windows 98 ,不会使一个挂起的线 程妨碍系统中其他线程接收硬件输入。 27.1 原始输入线程 图2 7 - 1概括描述了系统的硬件输入模型。当系统初始化时,要建立一个特殊的线程,即原 始输入线程(raw input thread ,R I T )。此外,系统还要建立一个队列,称为系统硬件输入队列 (System hardware input queue, SHIQ )。R I T和S H I Q构成系统硬件输入模型的核心。 鼠标和键盘事件 设备 系统硬件输 驱动程序 入队列 原始输入线程 VIQ VIQ VIQ 线程A 的 线程B 的 线程C的 THREADINFO THREADINFO THREADINFO 646计计第六部分 窗 口 下载 件输入事件的响应。 那么R I T 怎么才能知道要向哪一个线程的虚拟输入队列里增加硬件输入消息?对鼠标消 息,R I T 只是确定是哪一个窗口在鼠标光标之下。利用这个窗口, R I T调用G e t Wi n d o w T h r e a d P r o c e s s I d来确定是哪个线程建立了这个窗口。返回的线程 I D指出哪一个线程应该得到这个鼠 标消息。 对按键硬件事件的处理稍有不同。在任何给定的时刻,只有一个线程同 R I T “连接”。这个 线程称为前景线程(foreground thread ),因为它建立了正在与用户交互的窗口,并且这个线程 的窗口相对于其他线程所建立的窗口来说处在画面中的前景。 当一个用户在系统上登录时, Windows Explorer 进程让一个线程建立相应的任务栏 (t a s k b a r )和桌面。这个线程连接到R I T 。如果你又要产生C a l c u l a t o r ,那么就又有一个线程来建 立一个窗口,并且这个线程变成连接到 R I T 的线程。注意现在Windows Explorer 的线程不再与 R I T连接,因为在一个时刻只能有一个线程同R I T连接。当一个按键消息进入S H I Q时,R I T就被 唤醒,将这个事件转换成适当的按键消息,并将消息放入与R I T连接的线程的虚拟输入队列。 不同的线程是如何连接到 R I T 的呢?我们已经说过,当产生一个进程时,这个进程的线程 可以建立一个窗口。这个窗口处于前景,其建立窗口的线程同 R I T相连接。另外,R I T还要负 责处理特殊的键组合,如A l t + Ta b 、A l t + E s c和C t r l + A l t + D e l等。因为R I T在内部处理这些键组合, 就可以保证用户总能用键盘激活窗口。应用程序不能够拦截和废弃这些键组合。当用户按动了 某个特殊的键组合时,R I T激活选定的窗口,并将窗口的线程连接到 R I T 。Wi n d o w s也提供激活 窗口的功能,使窗口的线程连接到R I T 。这些功能在本章后面讨论。 从图2 7 - 1 中可以看到如何保护线程,避免相互影响的。如果R I T 向窗口 B 或窗口 B 发送一 1 2 个消息,消息到

文档评论(0)

专业好文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6110200002000000

1亿VIP精品文档

相关文档