Notes 13.窗口的本质 窗口的本质 win32k.sys模块实现图形界面、消息管理 ntoskrnl.exe模块实现进程、线程、内存管理等 GDI 图形设备接口 设备对象HWND:画在哪里? DC(设备上下文,Device Contexts) 图形对象 图形对象 作用 画笔(Pen) 影响线条,包括颜色、粗细、虚实、箭头形状等 画刷(Brus… 2026-7-27 字数 220 阅读全文
Notes 14.消息队列 消息 当我们点击鼠标的时候,或者当我们按下键盘的时候,操作系统都要把这些动作记录下来,存储到一个结构体中,这个结构体就是消息 消息队列 每个线程只有一个消息队列 窗口与线程 2026-7-27 字数 82 阅读全文
Notes 11.互斥体 互斥体 互斥体与线程锁的区别 线程锁只能用于单个进程间的线程控制 互斥体可以设定等待超时,但线程锁不能 线程意外终结时,Mutex可以避免无限等待 Mutex效率没有线程锁高 2026-7-26 字数 82 阅读全文
Notes 12.事件 通知类型 线程同步 线程互斥:线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排他性。当有若干个线程都要使用某一个共享资源时,任何时刻最多只允许一个线程去使用,其他要使用该资源的线程必须等待,直到占用资源者释放该资源。 线程同步:线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它… 2026-7-26 字数 186 阅读全文
Notes 10.临界区 线程安全问题 每个线程都有自己的栈,而局部变量是存储在栈中的,这就意味着每个线程都有一份自己的“局部变量”,如果线程仅仅使用“局部变量”,那么就不存在线程安全问题。如果多个线程公用一个全局变量呢? 线程锁 2026-7-25 字数 100 阅读全文
Notes 4.进程 什么是进程? 进程是提供程序所需的资源,如:数据、代码等等 进程内存空间的地址划分 分区 x86 32位Windows 空指针赋值区 0x00000000-0x00000FFFF 用户模式区 0x00010000-0x7FFEFFFFF 64KB禁入区 0x7FFF0000-0x7FFFFFFFF 内核 0x80000… 2026-7-23 字数 297 阅读全文
Notes 6.句柄表 内核对象 像进程、线程、文件、互斥体、事件等在内核都有一个对应的结构体,这些结构体由内核负责管理。我们管这样的对象叫做内核对象。 管理内核对象 每个进程都有一个句柄表 用户层通过句柄表来操作内核层的结构体 句柄表属于进程(EPROCESS)对象,每个进程拥有自己的句柄表。 多进程可以共享一个内核对象,CreatePro… 2026-7-23 字数 298 阅读全文
Notes 7.进程相关API ID与句柄 进程句柄:当前进程私有句柄表中的索引,用于访问对应的内核对象。 进程ID(PID):操作系统分配给进程的唯一标识符,在整个系统范围内唯一。 线程句柄和TID同理 以挂起的形式创建进程 CreateProcess中的第六个参数creation flag 模块目录和工作目录 GetModuleFileName:… 2026-7-23 字数 332 阅读全文
Notes 1.字符编码 ASCII编码 美国信息交换标准代码 原始ASCII码表 0-7F 扩展ASCII码表 0-FF GB2312:两个扩展ASCII码组成一个汉字 弊端:每个国家用的格式不同,本机是GB2312可能显示是中文,在他机上就可能会是乱码 Unicode编码 0-0x10FFFF 把所有符号全部存储,每个符号都是唯一编码 问题… 2026-7-22 字数 431 阅读全文
Notes 3.Win32 API中的宽字符 Win32 API 主要存放在 C:\\WINDWOS\system32 下面所有的dll 重要DLL: Kernel32.dll:最核心的功能模块,比如管理内存、进程和线程相关的函数等 User32.dll:是Winodws用户界面相关应用程序接口,如创建窗口和发送消息等 GDI32.dll:全称是Graphical… 2026-7-22 字数 237 阅读全文