转自xiunai78的博客,原文地址:http://blog.csdn.net/xiunai78/archive/2008/12/31/3668887.aspx
消息分为进队消息消息和非进队消息。所谓进队消息就是windows将消息发送到每个线程所专有的队列中,然后由程序自主处理,这种消息基本上是由用户输入产生(wm_keydown,wm_keyup,wm_char,wm_mouse**,以及wm_paint,wm_timer,wm_quit)或者是调用postmessage,postthreadmessage产生的消息;所谓的非进队消息就是直接发送给窗口过程的消息,就是直接调用窗口过程,上述消息以外的一般都是这种类型!
一个线程一旦建立了至少一个窗口,则系统就为其分配一个消息队列。主要表现形式为系统为其分配一个THREADINFO结构,该结构有四个指针分别指向登记消息队列,发送消息队列,应答消息队列和虚拟输入队列。如果想将消息放入登记消息队列,可以调用postmessage,或者 postthreadmessage。其余的消息队列主要用于处理如下的事务。当某线程调用sendmessage给别的线程创建的窗口时,发送的消息首先追加到接收线程的发送消息队列,发送线程处于空闲状态,等待接收线程处理完他的消息返回给发送线程的应答队列,等到后发送线程被唤醒取得应答队列的消息 (就是处理完消息的返回值),继续执行。而虚拟输入队列则是由windows的系统线程RIT(原始输入线程)负责将硬件事件转换成消息添加到对应线程的虚拟消息队列中。
处理消息队列的顺序。首先windows绝对不是按队列先进先出的次序来处理的,而是有一定优先级的。优先级通过消息队列的状态标志来实现的。首先最高优先级的是别的线程发过来的消息(通过sendmessage),其次是处理登记消息队列消息,再次处理QS_QUIT标志,再处理虚拟输入队列,再处理 wm_paint最后是wm_timer!
分享到:
相关推荐
### 应用程序框架设计——基于Windows“事件驱动”模型 #### 一、应用程序框架设计的基本内容 在探讨应用程序框架的设计之前,我们需要先理解应用程序框架的重要性。随着软件开发的复杂性和规模不断扩大,如何构建...
在展开关于"深入浅出讲解Windows程序设计——Visual+C++课程"的知识点之前,我们首先要了解这门课程的重要性。Windows程序设计是IT行业中一个核心的技术领域,它涵盖了创建、开发、维护和优化运行于Windows操作系统...
设计SPI驱动时,你需要创建一个KMDF驱动模型的驱动程序,该模型包括初始化、设备枚举、IRP处理等核心部分。 1. **初始化阶段**:驱动程序在加载时需要进行初始化,这包括注册设备对象,设置设备接口,以及配置SPI...
总之,《C#的Windows程序设计》这本书将带领读者深入理解C#语言在Windows平台上的应用,涵盖从基本概念到高级特性的全面内容。通过学习,开发者不仅能够提升C#编程技能,还能更好地理解和利用Windows环境下的各种...
- **驱动程序模型**:分析了不同版本Windows中的驱动程序模型(如WDM、NDIS等),以及它们如何与内核交互以提供硬件支持。 #### 2. 进程与线程管理 - **进程创建与终止**:详细解释了进程生命周期管理的过程,包括...
接着,书籍会涉及C#中的高级主题,如委托和事件,这是创建事件驱动应用程序的关键。另外,还会深入浅出地讲解Lambda表达式和 LINQ(Language Integrated Query),这两者极大地简化了数据操作和处理,是现代C#开发中...
WDM 源自于 Windows NT 的 32 位设备驱动程序模型(Layered 32-bit device driver model),它支持更多特性,如即插即用 (PnP)、电源管理、WMI (Windows Management Instrumentation) 和 NT 事件。 在 Windows 2000...
在Windows CE嵌入式开发中,驱动程序是操作系统与硬件设备之间的重要桥梁,它们负责管理和控制硬件设备,确保系统的正常运行。本篇文章主要探讨了基于Xscale架构的Windows CE嵌入式开发中驱动开发的分类及其特点。 ...
操作系统课程设计——Windows下的虚拟磁盘驱动程序是一个深入学习操作系统原理和驱动开发的重要实践项目。在Windows环境中,虚拟磁盘驱动程序(Virtual Disk Driver)扮演着关键角色,它允许操作系统与非物理存在的...
在Windows操作系统中,内核驱动程序是运行在操作系统核心层的代码,它们具有高级权限,可以直接访问硬件资源和系统服务。"EPROCESS遍历进程模块"这个主题涉及到的是如何在内核驱动中获取并遍历当前系统中所有进程的...
Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动...
《Windows驱动开发技术详解——Code and WinIO》是一本深入探讨Windows驱动程序开发的专业书籍,主要聚焦于WinIO这一关键技术。Windows驱动程序是操作系统核心的一部分,负责硬件设备的管理和软件服务的提供,它们在...
操作系统实验——Windows 控制台命令主要涉及Windows操作系统中与控制台相关的操作,包括命令行窗口的设置、系统配置、信息显示、系统管理以及任务管理。这些知识点是理解操作系统底层工作原理和进行日常维护的重要...
此外,Windows程序的核心运行机制是消息驱动。操作系统通过消息队列接收并分发各种事件(如用户输入),并将这些事件转化为消息,传递给相应的应用程序进行处理。与传统编程模型不同,Windows程序并不主动执行任务,...
《Windows和Linux设备驱动程序的中断处理》这篇文章主要探讨了两个主流操作系统——Windows和Linux——在设备驱动程序中断处理方面的机制。中断处理是操作系统中关键的一环,它负责协调硬件事件与软件响应之间的通信...
本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...
- **内建的驱动程序 (Builder-in Driver)**:这类驱动程序被静态链接到图形窗口事件子系统(GWES)中,专门为特定类型的设备提供一组标准功能。例如,键盘、触摸屏和音频设备等。 - **可安装的驱动程序 (Installable...
这本书的核心在于将理论知识与实际操作相结合,通过编写中国象棋程序,学习并实践面向对象编程、图形用户界面(GUI)设计、事件处理和算法应用等多个方面的重要技能。 C++Builder,简称BCB(Borland C++Builder),...