Windows 核心编程 _ 进程一
定义 一般将进程定义成一个正在运行的程序的一个实例 一个内核对象,操作系统用它来管理进程。 内核对象也是系统保存进程统计信息的地方。 一个地址空间,其中包含所有可执行文件或DLL模块的代码和数据。 此外,还包含动态内存分配,比如线程堆栈和堆的分配。 进程要做什么事情,都必须让一个...
定义 一般将进程定义成一个正在运行的程序的一个实例 一个内核对象,操作系统用它来管理进程。 内核对象也是系统保存进程统计信息的地方。 一个地址空间,其中包含所有可执行文件或DLL模块的代码和数据。 此外,还包含动态内存分配,比如线程堆栈和堆的分配。 进程要做什么事情,都必须让一个...
cpp 数据模型和数据类型大小 C++ 数据类型的大小并不是完全固定的,而是由数据模型(Data Model)决定的 不同的操作系统和编译器组合会采用不同的数据模型 为什么有不同数据模型 Windows 选择 LLP64 是为了最大化 32 位代码兼容性 保持 long 为 4 ...
取文件后缀 Ext默认打开应用 仅处理了HKEY_CLASSES_ROOT这一层。 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp4\UserChoice这里的优先...
用户模式同步 Interlocked 系列函数 原理 通过 CPU 原子指令(如 LOCK XCHG)直接操作内存,无需进入内核态 场景 简单计数器(如引用计数) 无锁数据结构(如无锁队列) 特点 性能极高(无内核切换) 仅支持单个变量的原子操作,无法实现复杂同步 临界区(Cri...
错误处理 调用windows函数时,它会先验证我们传给它的参数,然后再开始执行任务。如果传入的参数无效,或者由于其他原因导致操作无法执行,则函数的返回值将指出函数因为某些原因失败了。 在内部,windows函数检测到错误了,它会使用一种名为"线程本地存储区"的...
调试实践 关于调试实践。 内存破坏 栈内存 在Windows中,栈只是操作系统为线程分配的一块内存。 作用是记录函数调用链(局部变量的分配、参数传递)。 每当调用函数时,都会创建一个栈帧并且把它压入到栈中。 随着线程中调用的函数越来越多,栈也会变得越来越大。 函数结构 函数前导指...
脚本相关 setup.nsi 一些定义 setup.nsh app.nsh app_s.nsh 对应静默 脚本相关-其他 卸载删文件 普通 静默 开机自启 快捷方式 调用浏览器打开网页 调用本地notepad 关于函数 在un.DUIPage脚本函数里面调用的其他脚本函数,同样要...
编译相关 #pragma init_seg 概述 是微软C++编译器中的一个编译指令,专门用于精细控制全局静态对象(包括静态变量)的构造和析构顺序 在解决复杂的初始化依赖或DLL加载问题时非常有用 语法 优先级 compiler 最高优先级 此组别的对象最先构造,最后析构 通常保...
概述 Windows 是事件驱动的,事件驱动围绕着消息的产生与处理展开,事件驱动是靠消息循环机制来实现的。也可以理解为消息是一种报告有关事件发生的通知。 消息(Message)指的就是Windows 操作系统发给应用程序的一个通告,它告诉应用程序某个特定的事件发生了。 比如,用户...
示例dump分析:堆内存泄露 代码 分析步骤一 在程序启动时,先用下面命令查看堆的情况 !heap -s !heap -stat -h 1cb0000 分析步骤二 g 让程序跑一会儿 !heap -s 对比发现Commit多了128h !heap -stat -h 1cb0000...
搜索当前分类