Windows 核心编程 _ 线程优先级与关联性
概述 在调度程序给另一个可调度线程分配CPU之前,CPU可以运行一个线程大约20ms。 这是在所有线程的优先级都相同的情况下。实际上,线程间的优先级是不同的。 每个线程都会被赋予0(最低)到31(最高)的优先级数。 当系统确定给哪个线程分配CPU时,它会首先查看优先级为31的线程...
概述 在调度程序给另一个可调度线程分配CPU之前,CPU可以运行一个线程大约20ms。 这是在所有线程的优先级都相同的情况下。实际上,线程间的优先级是不同的。 每个线程都会被赋予0(最低)到31(最高)的优先级数。 当系统确定给哪个线程分配CPU时,它会首先查看优先级为31的线程...
创建线程 概述 每个进程至少都有一个线程。 线程的组成 线程的内核对象,操作系统用它管理线程。 系统还用内核对象来存放线程统计信息的地方。 线程栈,用于维护线程执行时所需的所有函数参数和局部变量。 进程从来不会执行任何东西,它是线程的容器。 线程必然是在某个进程的上下文中创建的,...
概述 Windows 是事件驱动的,事件驱动围绕着消息的产生与处理展开,事件驱动是靠消息循环机制来实现的。也可以理解为消息是一种报告有关事件发生的通知。 消息(Message)指的就是Windows 操作系统发给应用程序的一个通告,它告诉应用程序某个特定的事件发生了。 比如,用户...
概述 Windows 的组件对象模型(Component Object Model,COM)是一种用于构建可重用软件组件的标准和技术 它允许软件组件以二进制形式进行互操作,独立于编程语言、开发工具和平台 COM 技术广泛应用于各种 Windows 应用程序和系统服务 包括 OLE...
错误处理 调用windows函数时,它会先验证我们传给它的参数,然后再开始执行任务。如果传入的参数无效,或者由于其他原因导致操作无法执行,则函数的返回值将指出函数因为某些原因失败了。 在内部,windows函数检测到错误了,它会使用一种名为"线程本地存储区"的...
源码实现 模板类函数指针 命名空间宏定义 与或判断选项开关 判断Windows安装某款字体 这里的实现是通过判断注册表来判断是否安装了某款字体。 应用 lbtoast_menu.h lbtoast_menu.cpp 弹出窗口 关于定时器 监听不到想监听的消息 需要在对应的消息映射...
启动流程 BasicEntry 作为dll导出接口 PrepareEnv 先构建运行时 ntdll.dll kernel32.dll 获取当前dll句柄 EXE被当做DLL加载时,首先修复重定位数据,此时的全局变量等还无法访问 因为Windows操作系统不会修复当做DLL加载的E...
获取 通过一个COM接口的方式获取到一个管理器对象 ThreadHelper 是一个抽象类,接口run是抽象的 start 作为抽象基类,实现了start 主要功能是创建了一个线程(是跨平台的实现), 然后创建了一个Helper,调用了run run里面开始往列表里放数据 wai...
命令标记 命令分隔符 用于分隔单行上的多个命令 块分隔符 圆括号 一对大括号 ( { } ) 用于包围调试器命令程序中的语句块 方括号 用于访问数组元素或表示寄存器或内存位置 别名解释器 用户别名(以$开头) 用户别名只能在当前调试会话中使用 例如:$myalias 全局别名(以...
内核对象 系统会创建和处理的几种内核对象 访问令牌对象(access token) 事件对象 文件对象 文件映射对象 I/O完成端口对象 作业对象 邮件槽对象(mailslot) 互斥量对象 管道对象 进程对象 信号量对象 线程对象 可等待的计时器对象 线程池工厂对象 每个内核对...
搜索当前标签