REACTOS
文章平均质量分 65
caimouse
在IT行业有20多年的经验。拥有20多年的C和C++开发经验,5年以上Python开发经验,资深数据库开发、上百G数据库优化经验。曾经任职嵌入式工程师、P2P开发工程师、银行信用卡交易系统工程师、全自动化电池测试部门经理。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Windows Research Kernel (WRK) 内存管理器完整分析
MmCreateSection → CONTROL_AREA + SEGMENT + SUBSECTION + 原型PTEs↓MmMapViewOfSection → MMVAD (插入 VAD 树)↓缺页 → MmAccessFault → MiDispatchFault → MiResolveProtoPteFault。原创 2026-07-08 22:31:46 · 23 阅读 · 0 评论 -
REACTOS RtlGetVersion 函数实现分析
标准版本信息结构// 结构大小(必须初始化)// 主版本号// 次版本号// 构建号// 平台标识// CSD 版本字符串(如 "Service Pack 1")│ 用户态调用 ││ ├── 参数验证 ││ ├── 版本欺骗检查 (RosGetProcessEffectiveVersion) ││ ├── 从 PEB 读取版本信息 ││ ├── CSD 版本处理 ││ ├── 扩展结构处理 ││ └── ReactOS 产品类型覆盖 ││ 内核态调用 │。原创 2026-07-04 19:23:05 · 374 阅读 · 0 评论 -
reactos 测试安装32位微信失败的日志
STATUS!原创 2026-07-04 17:53:24 · 221 阅读 · 0 评论 -
Reactos 显示驱动层详细分析
framebuf是一个通用帧缓冲显示驱动,实现了最基本的显示功能,适用于任何提供线性帧缓冲的显示硬件。它是 ReactOS 默认使用的显示驱动之一。vga是传统的VGA 显示驱动平面模式(Planar)显示(4 个 64KB 平面)调色板管理硬件鼠标指针屏幕外内存管理复杂的 BitBlt 操作vga_new是 VGA 驱动的现代化重写版本,提供更清晰的代码结构和更好的硬件支持。bmfd(Bitmap Font Driver)是 GDI 字体驱动,用于处理位图字体格式(.FON和.FNT。原创 2026-07-03 22:06:13 · 275 阅读 · 0 评论 -
ReactOS Win32SS 目录架构分析
维度说明核心职责Windows GUI 子系统,实现窗口管理、图形绘制、输入处理架构模式用户态/内核态分离,通过系统调用通信关键组件win32k.sys(内核驱动)、gdi32.dll、user32.dll兼容性目标兼容 Windows NT/2000/XP/Vista API扩展性通过驱动模型支持多种显示硬件和字体格式设计特点性能优化:GDI 批处理减少系统调用次数资源管理:统一的 handle 管理机制多用户支持:窗口站/桌面隔离硬件抽象:显示驱动模型支持多种硬件。原创 2026-07-03 21:48:54 · 418 阅读 · 0 评论 -
ReactOS user32/win32k Bug Fixes Summary 20260628
子窗口在父窗口 WM_CREATE 中创建后,WM_SIZE/WM_MOVE 的发送时机错误。循环控制和返回值修正方案,但导致更多测试失败(2→45→19),最终回退到原始代码。在遍历 pwndTarget->spwndOwner 链时,窗口已被销毁导致访问无效内存,引发 0xc0000005 崩溃。中,将 WM_SIZE/WM_MOVE 的发送改为 inline 实现,确保始终发送。以 ERR 级别输出,但这是 Winlogon 第一次创建窗口站时的正常初始化路径。失败时输出 ERR,且。原创 2026-06-28 23:38:27 · 357 阅读 · 0 评论 -
CreateWindowEx 消息顺序修复 —— WM_SIZE/WM_MOVE 在嵌套窗口创建时的正确发送
CreateWindowEx 消息顺序修复总结 ReactOS 修复了 CreateWindowEx 中 WM_SIZE/WM_MOVE 消息的发送顺序问题,主要涉及: 样式修正时机调整:将窗口样式修正(如 WS_CLIPSIBLINGS)移到 CBT hook 之后,确保 hook 看到原始样式 子窗口消息发送优化:在 CreateWindowEx 阶段内联发送 WM_SIZE/WM_MOVE,并确保始终使用 SIZE_RESTORED(即使窗口设置了 WS_MAXIMIZE) MDI 子窗口特殊处理:原创 2026-06-28 20:05:57 · 210 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.5 Socket的有连接通信
本文摘要重点介绍了ReactOS中TCP协议的Socket有连接通信实现。主要内容包括: TCP协议特性:面向连接、可靠传输、字节流、全双工和有序传输 TCP通信流程:三次握手建立连接、数据传输、四次挥手断开连接 ReactOS实现架构:涉及AFD驱动、TCP/IP协议栈(lwIP)和Winsock API 关键数据结构:TCP头部字段解析和AFD端点状态机 连接建立过程:从应用层connect调用到内核层AFD和TCP/IP的处理路径 文章通过框架图展示了TCP状态转换过程,并指出了相关源代码位置,为理解原创 2026-06-20 16:47:45 · 411 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.4 Socket的无连接通信
本章节详细介绍了ReactOS中基于UDP协议的Socket无连接通信实现。主要内容包括:UDP协议的无连接、不可靠特性及其适用场景(DNS、实时音视频等);从应用层sendto/recvfrom调用到内核AFD驱动(afd.sys)和TCP/IP协议栈(tcpip.sys)的完整数据流路径;UDP socket创建过程、数据报收发机制以及内部实现中的关键函数(如AfdSendDatagram)。通过框架图和代码片段展示了UDP数据从应用层经Winsock、AFD到网络接口卡(NIC)的完整传输流程,并对比原创 2026-06-20 16:45:44 · 341 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.3 Windows的网络驱动堆叠
Windows网络驱动堆叠摘要 Windows网络驱动采用分层架构,从底层到应用层依次为: NIC Miniport驱动 - 直接操作网卡硬件(如e1000.sys) NDIS库 - 提供硬件抽象层 协议驱动(LAN Manager) - 实现NDIS协议接口 TCP/IP协议栈 - 基于lwIP实现核心网络协议 TDI接口 - 内核通信接口 AFD驱动 - 内核态Winsock支持 Winsock DLL - 提供标准socket API ReactOS实现了完整的网络堆叠,各模块位于drivers/ne原创 2026-06-20 16:39:21 · 497 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.3.4 AFD驱动与Winsock
本文摘要: 本章节深入解析了Windows网络栈中AFD驱动与Winsock的协同工作机制。AFD(afd.sys)作为内核态的Winsock实现,负责socket内核对象管理、连接操作及异步通知;用户态的Winsock(ws2_32.dll + msafd.dll)则将socket API调用转化为对AFD设备的IOCTL控制命令。通过分层架构图展示了从应用程序到TCP/IP协议栈的完整调用链路,重点分析了socket()、bind()等核心API的实现路径及对应的IOCTL操作码。内容涵盖AFD驱动初始原创 2026-06-20 16:32:51 · 594 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.3.3 TCP/IP驱动模块
本文摘要: 本章详细剖析了ReactOS中TCP/IP协议栈(tcpip.sys)的实现架构。主要内容包括:1) TCP/IP在网络体系中的位置,作为TDI与NDIS之间的核心协议栈;2) tcpip.sys的总体结构,包含设备对象创建、协议注册和内部lwIP集成;3) 关键初始化流程如DriverEntry函数、NDIS协议注册和lwIP初始化;4) 内部数据结构如TCPIP_GLOBALS管理适配器列表和协议控制块;5) 网络数据处理路径涉及NdisSend/NdisReceive等NDIS接口操作。通原创 2026-06-20 16:28:31 · 322 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.3.2 LAN驱动模块
本文摘要: ReactOS 中 LAN Manager(lan.sys)作为 NDIS 协议驱动,在网络栈中桥接 TCP/IP 协议栈与 NDIS 库。文章详细解析了其工作原理,包括 TDI 接口与 NDIS Protocol 的对称设计、协议绑定生命周期、并发模型和 OID 查询机制。特别探讨了 ReactOS 中 tcpip.sys 直接调用 NDIS API(主路径)与通过 lan.sys 转发(遗留路径)的双重架构,以及多播处理、电源管理等关键技术实现。原创 2026-06-20 16:23:53 · 251 阅读 · 0 评论 -
ReactOS DelNode: 610 tests executed
本文总结了 DELNODE_recurse_dirtree 函数的修复内容,主要涉及三个关键改进:1)修正了 ADN_DONT_DEL_SUBDIRS 标志对文件的错误过滤,现在仅跳过子目录;2)调整目录删除逻辑,确保 RemoveDirectory 始终被尝试执行;3)优化标志优先级处理,当 ADN_DEL_IF_EMPTY 和 ADN_DONT_DEL_DIR 同时设置时,空目录会被正确删除。修复后通过了610项测试,功能得到完善。原创 2026-06-19 12:39:51 · 279 阅读 · 0 评论 -
ReactOS GDI DIB 边界计算 Bug 修复记录
ReactOS GDI DIB 边界计算 Bug 修复摘要 本文档记录了 ReactOS GDI 子系统中发现的五个关键 DIB 边界计算 Bug 及其修复方案: DIBSECTION 位字段错误:修复了在 BI_RGB 格式下错误填充位字段值的问题,现在仅对 BI_BITFIELDS 格式填充位字段。 裁剪边界计算错误:修正了错误使用区域宽度/高度而非边界值的问题,确保正确裁剪。 RTL 布局边界错误:解决了从右到左布局模式下右边界差1像素的问题,添加了对排他性矩形语义的处理。 LPtoDP 转换后矩形反原创 2026-06-17 22:26:49 · 653 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.3.2 LAN驱动模块
摘要:本章节深入解析ReactOS中LAN Manager(lan.sys)协议驱动的实现原理与架构。作为NDIS协议驱动,lan.sys在网络栈中承担TCP/IP与NDIS库间的桥接功能,通过TDI接口向上提供网络服务,通过NDIS协议接口向下管理网卡通信。文章详细剖析了协议驱动的注册/绑定机制、数据收发流程、OID查询、多播处理等核心功能,并对比了ReactOS中tcpip.sys直接调用NDIS(主路径)与经lan.sys转发(遗留路径)两种实现架构,揭示了NDIS协议驱动与Miniport驱动通过回原创 2026-06-16 21:40:02 · 271 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
本文以ReactOS系统中的dc21x4.sys网卡驱动为例,详细解析了NIC Miniport驱动的实现原理。Miniport驱动作为NDIS架构的硬件适配层,主要负责硬件探测、初始化、数据收发和中断处理等核心功能,通过DMA和寄存器操作直接控制网卡硬件。文章阐述了驱动在NDIS网络栈中的位置、硬件交互模型(寄存器操作+DMA+中断机制),并分析了驱动开发面临的并发同步、资源管理等核心挑战。通过10个典型问题解答,深入探讨了Miniport驱动的设计原理,包括NDIS回调机制、DMA描述符设计、中断处理优原创 2026-06-16 21:32:18 · 362 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.2 NDIS及其实现
摘要: 本节深入解析NDIS(网络驱动接口规范)库的设计与实现,作为协议驱动与网卡驱动的中间层。NDIS通过Miniport、IM和Protocol三套标准接口实现解耦,核心架构包括四个抽象层:硬件抽象层、包管理层、绑定管理层和协议无关层。ReactOS的NDIS实现采用模块化设计,包含12个主要功能模块,维护三个关键全局链表(协议、驱动、适配器)并实现严格的同步机制。NDIS采用异步发送模型和批量接收优化,通过内存池提升性能,同时遵循分层IRQL规则确保系统稳定性。文章详细阐述了NDIS与内核子系统的交互原创 2026-06-15 22:20:51 · 543 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.1 概述
摘要: Windows网络体系采用分层模块化设计,核心包括NDIS驱动接口、TCP/IP协议栈、AFD内核代理和Winsock API。关键架构特点为: 层次解耦:通过NDIS隔离硬件与协议栈,Winsock/AFD分离应用与传输层,实现各层独立演进 数据流路径:应用→Winsock→AFD→TCPIP→NDIS→网卡驱动,每层仅与相邻层交互 NDIS三类驱动:Miniport(网卡控制)、中间驱动(流量处理)、Protocol(协议实现)通过NDIS库协调工作 历史演进:从TDI文件式接口发展为Winso原创 2026-06-15 22:10:40 · 545 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.14 IRP请求的完成与返回
摘要: 本章深入解析了Windows内核中IRP请求的完成与返回机制。IRP完成作为I/O路径的逆向流程,通过IoCompleteRequest函数实现从底层驱动向上层或用户态的传递。核心机制包括完成例程链的逆序调用、IoMarkIrpPending状态管理以及优先级提升控制。ReactOS源码展示的关键设计包括:分层逆序回调的资源释放原则、完成例程的条件触发机制(通过SL_INVOKE_ON_*标志控制),以及特殊状态STATUS_MORE_PROCESSING_REQUIRED的异步处理语义。该机制通过原创 2026-06-15 21:59:07 · 840 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.13 同步I/O与异步I/O
摘要 本章节深入分析了 Windows NT 中同步 I/O 与异步 I/O 的实现机制。主要内容包括: 三种 I/O 模型:同步 I/O(线程阻塞等待)、异步 I/O(立即返回)和基于事件的 I/O(事件触发通知)。 核心技术点:重点阐述了 IO_STATUS_BLOCK 结构的关键作用,以及文件对象同步标志、APC 机制和内核事件对象在实现不同 I/O 模型中的核心地位。 实现差异:同步 I/O 通过 KeWaitForSingleObject 实现零 CPU 消耗的线程挂起,而异步 I/O 则通过 S原创 2026-06-14 21:23:38 · 230 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.12 MDL
Windows NT MDL 机制解析 摘要: MDL(内存描述符列表)是 Windows NT 内核中连接虚拟地址与物理内存的关键数据结构,主要用于解决设备直接访问物理内存的问题。本文剖析了 MDL 的核心概念、生命周期和典型应用场景。 关键点: MDL 通过物理页数组(PFN)实现虚拟地址到物理地址的转换,支持 DMA 和直接 I/O 标准使用流程分为分配、锁定/填充、映射三个阶段 在 DIRECT_IO 模式下由 I/O 管理器自动管理,在 NEITHER 模式下需驱动自行处理 MDL 解决了用户缓冲原创 2026-06-14 21:18:12 · 271 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.11 命名管道与Mailslot
摘要(149字): 本章解析Windows中基于文件系统的两种进程通信机制:命名管道(npfs.sys)和邮槽(msfs.sys)。它们通过模拟文件系统接口实现IPC,支持标准文件API操作。命名管道提供双工/单工通信,邮槽实现单向广播。设计上采用文件系统框架,继承NT内核的统一对象管理、安全模型和异步I/O特性。npfs/msfs驱动分别创建\Device\NamedPipe和\Device\Mailslot设备对象,通过I/O管理器与Win32 API交互。内容涵盖驱动初始化、数据结构(FCB/CCB)原创 2026-06-14 21:13:52 · 256 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.10 磁盘的Miniport驱动模块
摘要: 本章节深入解析Windows磁盘Miniport驱动模型(Scsiport/Storport)的架构与实现。该模型采用类驱动/端口驱动分层设计,其中端口驱动(scsiport.sys/storport.sys)提供通用框架(中断处理、DMA管理、IRP队列等),而Miniport驱动则专注于硬件相关操作(PCI配置、寄存器访问、命令构造)。文章通过代码示例详细说明了Miniport驱动的初始化过程,重点分析了HW_INITIALIZATION_DATA结构的关键字段及其作用。内容涵盖三层驱动架构、S原创 2026-06-14 16:46:25 · 364 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.9 磁盘的设备驱动堆叠
本文摘要(149字): Windows磁盘I/O采用五层设备驱动堆叠架构,包含端口驱动、类驱动、卷管理、文件系统等层次。ReactOS在drivers/storage/目录实现了该架构,核心是理解PDO/FDO嵌套关系、IRP_MJ_SCSI内部IRP和SRB转发链。设备栈从底层硬件控制器到顶层文件系统形成分层抽象,每层只处理特定IRP类别,其他直接下传。这种设计通过解耦各层功能实现模块化,使硬件更换不影响上层驱动。关键代码位于classpnp、disk、partmgr等驱动中,通过PnP IRP先下后上的原创 2026-06-14 16:42:17 · 380 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.9.1 类驱动disk.sys
本文深入解析了 ReactOS 中磁盘类驱动 disk.sys 的核心机制。disk.sys 作为存储栈的关键中间层,实现了 IRP 到 SRB 的转换,向上提供统一的块设备接口,向下兼容多种存储协议(SCSI/ATA/NVMe)。文章详细剖析了其四层驱动架构、设备扩展结构、PnP 处理流程以及几何信息查询等核心功能,并提供了相关源码位置索引。通过理解 disk.sys 的工作原理,可以掌握存储设备驱动在操作系统中的关键作用与实现方法。原创 2026-06-14 08:37:16 · 384 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.8 设备驱动模块的装载
本文摘要主要分析了Windows NT设备驱动模块的装载过程,重点介绍了服务控制管理器(SCM)与内核I/O管理器的协作机制。驱动装载流程分为五个阶段:SCM读取注册表决定启动类型、通过NtLoadDriver系统调用、PE加载器映射驱动文件、调用DriverEntry入口函数以及处理依赖关系。文章详细阐述了SCM架构、注册表服务数据库结构以及关键函数调用路径,并提供了ReactOS中相关实现文件的代码位置(如services.exe和ntoskrnl组件)。最后通过框架图展示了从用户态请求到内核驱动初始化原创 2026-06-13 21:37:26 · 145 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.7 一个过滤设备驱动模块的示例
摘要: 本节以键盘类驱动(kbdclass)和过滤管理器(fltmgr)为例,解析过滤设备驱动的实现原理。过滤驱动通过IoAttachDeviceToDeviceStack附加到设备栈中(功能驱动的上层或下层),在不修改原有驱动的情况下实现日志审计、透明加密、防病毒扫描等功能。其核心流程包括:创建过滤设备对象、附加到目标设备栈、处理IRP转发与完成例程链。ReactOS中的fltmgr和kbdclass模块展示了上层过滤(如键盘事件转换)和下层过滤(如PnP拦截)的典型实现方式,关键涉及IoCopyCurr原创 2026-06-13 21:30:27 · 138 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.6 中断处理
摘要: 本章深入解析 NT 中断处理机制,涵盖中断连接、ISR 注册、DPC 关联及 IRQ 共享等核心功能。通过 HAL、内核和驱动的三层协作(HAL 处理硬件抽象,内核管理 IRQL 调度与 IDT,驱动实现 ISR/DPC),ReactOS 支持现代中断控制器(如 I/O APIC 和 MSI)。关键设计包括 32 级 IRQL 优先级、IDT 映射中断向量、ISR 快速响应与 DPC 延迟处理。代码实现在 irqobj.c 和 apic.c 等文件中,涉及 IoConnectInterrupt 等关原创 2026-06-13 21:18:43 · 100 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.5 一组PnP设备驱动模块的实例
文章摘要(147字): 本节通过PCI/PCI-X/ACPI驱动栈实例解析PnP设备驱动协作机制。现代设备栈由总线驱动→父总线驱动→功能驱动→过滤驱动构成,核心是处理IRP_MJ_PNP子功能码(如IRP_MN_START_DEVICE)和总线枚举流程。PCI总线驱动通过IRP_MN_QUERY_DEVICE_RELATIONS枚举设备并创建PDO,功能驱动通过AddDevice附加FDO形成设备栈。关键点包括:PnP IRP必须下传至PDO完成、资源分配通过IO_RESOURCE_LIST实现,且PCI/原创 2026-06-13 21:14:23 · 122 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.4 内核劳务线程
EX 工作项层(无状态)IO 工作项层(带对象引用)设备线程层(设备专用线程)每个工作项都是一条延迟执行的工作单元,会被某个系统线程()取出并执行。三套 API(最低级)(带对象引用)(设备线程)三种队列系统工作线程在等待信号量设备线程:每线程一个设备工作队列安全释放自动管理引用计数典型用途:文件系统延迟写、设备清理、IRP 完成回调、长时间 I/O 处理下一节 9.5 将以 PCI/PCI-X/ACPI 为例剖析一组 PnP 设备驱动的实例。原创 2026-06-13 21:08:16 · 112 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.3 DPC函数及其执行
摘要:NT内核DPC机制分析 本文深入解析Windows NT内核中的延迟过程调用(DPC)机制。DPC是NT内核中断处理两阶段模型的关键组成部分,用于在低IRQL(DISPATCH_LEVEL)下执行中断后处理。主要内容包括: DPC与ISR的协作模式:ISR在高IRQL下快速确认中断并排队DPC,DPC在DISPATCH_LEVEL执行实际数据处理 DPC核心设计目标:解决中断处理的两难问题,在高效率与功能性之间取得平衡 KDPC数据结构详解:包含类型标识、回调函数、上下文参数等关键字段 DPC操作接口原创 2026-06-13 21:03:19 · 96 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.2 一个“老式“驱动模块的实例
本文以ReactOS中的beep.sys驱动程序为例,深入剖析了一个传统的NT 4风格设备驱动模块。该驱动实现了PC扬声器的控制功能,通过300余行代码完整展示了驱动开发的关键要素,包括: 驱动架构:采用非PnP的老式驱动模式,直接通过DriverEntry创建设备对象 核心功能:实现了IRP_MJ_CREATE/CLOSE/WRITE/DEVICE_CONTROL/CLEANUP等主要派发函数 硬件交互:通过HAL层函数HalMakeBeep/HalStopBeep控制8254计时器芯片 用户接口:与Wi原创 2026-06-13 21:00:56 · 100 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.1 Windows的设备驱动框架
Windows NT 设备驱动框架是 NT 内核 I/O 管理器的子系统。它由三件套:描述一个驱动的"身份",包含派发函数数组:描述一个设备实例,多个设备可挂在同一驱动下IRP:描述一次 I/O 请求,沿设备栈从顶向下流动WDM 相对 NT 4.0 旧式驱动的最大改进是分层(layered)和。WDM 驱动通过设备栈(device stack)串联,PnP 管理器()动态构造和调整设备栈。WDM 驱动框架的核心要点三件套IRP设备栈:PDO + FDO + 过滤设备 沿设备栈传递 IRP。原创 2026-06-13 20:58:22 · 194 阅读 · 0 评论 -
Reactos 第 8 章 结构化异常处理 — 8.4 软异常
摘要: 本节探讨Windows软异常机制,重点分析其与硬件异常的区别及统一处理框架。软异常由软件主动触发(如API调用、调试断点、断言失败等),通过KiDispatchExceptionFromTrapFrame统一入口进入SEH处理流程。核心内容包括:软异常分类(调试断点、API抛出、断言等)、异常码语义(如STATUS_BREAKPOINT)、RtlRaiseException与RtlRaiseStatus的区别、断言宏实现原理,以及SEH与C++异常的统一机制。通过分析异常传递路径(从触发到内核统一分原创 2026-06-13 20:50:14 · 77 阅读 · 0 评论 -
Reactos 第 8 章 结构化异常处理 — 8.3 用户空间的结构化异常处理
用户态结构化异常处理(SEH)核心机制剖析 摘要:本文深入解析ReactOS中用户态(Ring 3)结构化异常处理的实现架构。重点阐述SEH三大核心组件:异常分派(RtlDispatchException遍历EXCEPTION_REGISTRATION_RECORD链表)、栈展开(RtlUnwind反向调用handler)和主动抛出(RtlRaiseException/RtlRaiseStatus)。系统通过KeUserExceptionDispatcher入口,经分派、过滤和展开三阶段处理异常,其中向量化原创 2026-06-13 12:34:20 · 75 阅读 · 0 评论 -
Reactos 第 8 章 结构化异常处理 — 8.2 系统空间的结构化异常处理
摘要: 本节剖析ReactOS内核态(Ring 0)的异常处理机制,重点揭示系统空间结构化异常处理(SEH)的三层架构:硬件入口层(IDT陷阱桩)、Trap处理层(保存现场)和异常分派层(KiDispatchException核心枢纽)。系统通过KiDispatchException实现异常路由,根据PreviousMode和FirstChance决定处理路径(内核态handler链/用户态分派器/调试器/蓝屏),并详细解析了CONTEXT与KTRAP_FRAME的转换关系。内核SEH最终处理所有硬件tra原创 2026-06-13 12:16:28 · 111 阅读 · 0 评论 -
Reactos 第 8 章 结构化异常处理 — 8.1 结构化异常处理的程序框架
摘要: 本章深入解析 ReactOS 中结构化异常处理(SEH)的三层架构体系。SEH 作为同步异常处理机制,横跨硬件中断层、内核态分派层和用户态分派层,通过 EXCEPTION_RECORD、CONTEXT 和 EXCEPTION_REGISTRATION_RECORD 三大核心数据结构实现异常信息的跨层传递。硬件异常通过 KTRAP_FRAME 捕获后,内核将其转换为 CONTEXT 并分发给用户态的异常处理链,由 RtlDispatchException 沿注册记录链表调用处理函数。关键流程包括异常标原创 2026-06-13 12:10:10 · 155 阅读 · 0 评论 -
Reactos 第 7 章 视窗报文 — 7.8 默认的报文处理
每个窗口类都需要一个窗口过程(WndProc)来处理消息。但是,每个窗口都需要处理的"通用消息"(如"用户点击关闭按钮"→ 关闭窗口、"用户拖动标题栏"→ 移动窗口)不应该由每个应用重新实现。应用层:每个窗口有自己的 WndProc系统层:应用未处理的消息最终调用,由系统提供"默认行为是 Windows 消息系统的"安全网"——任何未被应用处理的消息都会传给,由它执行符合 Windows 标准的默认行为。默认报文处理的本质是什么?默认报文处理是 Windows 子系统提供的"消息级操作系统。原创 2026-06-13 11:55:56 · 140 阅读 · 0 评论 -
Reactos 第 7 章 视窗报文 — 7.7 鼠标器输入线程
内核鼠标输入处理机制解析 本文深入剖析Windows/ReactOS系统中鼠标输入的内核态处理流程。主要内容包括: 输入数据流转:从硬件层(PS/2/USB)→mouclass驱动生成MOUSE_INPUT_DATA→RIT原始输入处理→win32k子系统转换。 核心处理机制: 位置计算(绝对/相对/虚拟桌面坐标系) 按钮状态管理及左右键交换逻辑 消息合并(IntCoalesceMouseMove)避免WM_MOUSEMOVE队列爆炸 捕获机制(Capture)确保窗口持续接收事件 命中测试(WM_NCHI原创 2026-06-13 11:53:59 · 135 阅读 · 0 评论
分享