REACTOS
文章平均质量分 65
caimouse
在IT行业有20多年的经验。拥有20多年的C和C++开发经验,5年以上Python开发经验,资深数据库开发、上百G数据库优化经验。曾经任职嵌入式工程师、P2P开发工程师、银行信用卡交易系统工程师、全自动化电池测试部门经理。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KiSystemStartupBootStack 函数分析
KiSystemStartupBootStack是Windows内核初始化过程中的关键函数,负责在内核启动栈上执行核心初始化工作。该函数通过jmp指令从KiSwitchToBootStack跳转而来,永不返回。 主要功能包括: 调用KiInitializeKernel初始化内核执行体子系统,参数包含初始进程、线程、栈和PRCB等信息 将空闲线程优先级设为0,触发调度器切换到优先级更高的Phase1初始化线程 启用中断并将IRQL降至DISPATCH_LEVEL 最终进入KiIdleLoop空闲循环 该函数完原创 2026-07-15 23:06:20 · 26 阅读 · 0 评论 -
KiSwitchToBootStack 函数分析
文章摘要 KiSwitchToBootStack是ReactOS内核中的一个关键内联函数,负责在系统启动时将CPU栈从引导加载程序切换到内核初始化栈。该函数通过内联汇编执行三个核心操作:1) 将栈指针切换到内核启动栈;2) 预留672字节空间用于NPX帧和陷阱帧;3) 压入CR0标志值0x0E。完成这些操作后,函数直接跳转到KiSystemStartupBootStack继续内核初始化流程。这个函数设计为永不返回,其执行标志着内核从引导阶段正式进入初始化阶段。原创 2026-07-15 22:50:48 · 30 阅读 · 0 评论 -
KiSystemStartup 函数分析 — 内核入口点的初始化过程
本文分析了 Windows/ReactOS 内核入口函数 KiSystemStartup 的初始化过程。该函数是内核执行的起点,负责接管 CPU 控制权并完成关键系统结构的初始化。主要内容包括: 函数接收 LOADER_PARAMETER_BLOCK 参数,保存引导信息并区分引导处理器(BSP)与应用处理器(AP) 初始化处理器控制区(PCR)、设置中断描述符表(IDT)和任务状态段(TSS) 采用巧妙方法识别当前CPU类型:BSP进入时 KeNumberProcessors=0,AP进入时该值已递增 详细原创 2026-07-15 21:19:18 · 373 阅读 · 0 评论 -
FreeLDR → ntoskrnl.exe 启动过程分析
本文分析了ReactOS启动加载器FreeLDR如何加载Windows NT内核(ntoskrnl.exe)的完整过程。启动流程分为七个关键阶段:从FreeLDR初始化、启动菜单交互、核心模块加载,到最终控制权移交内核。FreeLDR首先完成硬件初始化、内存管理设置、文件系统驱动加载等基础工作,然后通过启动菜单选择操作系统版本,最后按照Windows NT规范加载内核镜像和硬件抽象层,建立分页内存环境,最终跳转到内核入口点KiSystemStartup。整个过程实现了从裸机环境到Windows内核环境的完整原创 2026-07-15 21:02:53 · 34 阅读 · 0 评论 -
ReactOS BootCD 光盘布局完整深度分析
ReactOS BootCD深度解析手册摘要 ReactOS BootCD是官方核心发行镜像,具备BIOS/UEFI双启动架构,支持系统安装与Live演示双模式。该镜像严格遵循ISO9660标准,采用分层文件存储策略(NO_CAB裸文件+reactos.cab压缩包),优化启动速度与镜像体积。核心特点包括: 双引导机制:BIOS链路通过isoboot.bin加载,UEFI通过efisys.bin虚拟软盘适配多架构; 多场景适配:衍生BootCDRegTest测试镜像和LiveCD演示镜像; 智能文件布局:m原创 2026-07-15 20:39:48 · 42 阅读 · 0 评论 -
ReactOS bootcd.iso 引导到桌面显示过程分析
本文分析了ReactOS bootcd.iso从启动到桌面显示的完整过程,主要分为六个阶段: BIOS/UEFI阶段:完成硬件自检并加载引导扇区 FreeLoader引导加载器阶段:初始化硬件,加载第二阶段加载器rosload.exe WinLdr Windows兼容加载器阶段:加载NT内核、HAL和核心驱动 内核初始化阶段:执行系统初始化,包括内存管理、驱动加载等 会话管理器(SMSS)阶段:创建系统会话,初始化子系统 Winlogon与桌面显示阶段:启动登录进程,加载用户界面 整个过程通过多个组件协同工原创 2026-07-15 08:19:37 · 188 阅读 · 0 评论 -
FreeLdr CDFS ISO Level 3 文件名尾部点号 Bug
使用,只有 Live 模式失败。原创 2026-07-13 22:54:30 · 225 阅读 · 0 评论 -
ReactOS Development Notes
本文记录了ReactOS开发中的关键操作流程和注意事项,主要包括: 构建与运行VM:通过PowerShell脚本完成bootcd构建、VM控制、ISO挂载和日志监控,强调使用ReactOS-Test-New虚拟机名; VDI修改流程:详细说明通过VHD中转修改VDI文件的10步标准化操作,重点包括介质清理、文件拷贝方式(必须使用[System.IO.File]::Copy)和路径注册问题处理; API开发规范:以SetFileInformationByHandle为例,说明Vista+ API需在kerne原创 2026-07-12 10:03:00 · 263 阅读 · 0 评论 -
ReactOS ntoskrnl/mm 内存管理器实现分析
ReactOS ntoskrnl/mm 内存管理器采用双架构并行设计,包含传统MM和现代ARM3两种实现。目录结构显示44+个文件,其中28+属于ARM3新架构,7个为旧MM实现,其余为分派层和平台支持代码。系统通过分派层动态路由请求,使用标志位(如MI_IS_ROSMM_VAD)区分处理路径。ARM3核心采用VAD AVL树管理虚拟地址,支持O(log n)操作,并通过CONTROL_AREA/SEGMENT/SUBSECTION三层结构描述节区对象。物理内存通过PFN数据库管理,体现渐进式替换策略以实现原创 2026-07-11 12:11:17 · 257 阅读 · 0 评论 -
Windows Research Kernel (WRK) 内存管理器完整分析
MmCreateSection → CONTROL_AREA + SEGMENT + SUBSECTION + 原型PTEs↓MmMapViewOfSection → MMVAD (插入 VAD 树)↓缺页 → MmAccessFault → MiDispatchFault → MiResolveProtoPteFault。原创 2026-07-08 22:31:46 · 272 阅读 · 0 评论 -
REACTOS RtlGetVersion 函数实现分析
标准版本信息结构// 结构大小(必须初始化)// 主版本号// 次版本号// 构建号// 平台标识// CSD 版本字符串(如 "Service Pack 1")│ 用户态调用 ││ ├── 参数验证 ││ ├── 版本欺骗检查 (RosGetProcessEffectiveVersion) ││ ├── 从 PEB 读取版本信息 ││ ├── CSD 版本处理 ││ ├── 扩展结构处理 ││ └── ReactOS 产品类型覆盖 ││ 内核态调用 │。原创 2026-07-04 19:23:05 · 396 阅读 · 0 评论 -
reactos 测试安装32位微信失败的日志
STATUS!原创 2026-07-04 17:53:24 · 235 阅读 · 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 · 301 阅读 · 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 · 428 阅读 · 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 · 395 阅读 · 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 · 213 阅读 · 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 · 417 阅读 · 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 · 351 阅读 · 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 · 502 阅读 · 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 · 602 阅读 · 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 · 328 阅读 · 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 · 256 阅读 · 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 · 280 阅读 · 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 · 667 阅读 · 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 · 273 阅读 · 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 · 371 阅读 · 0 评论 -
Reactos 第 10 章 网络操作 — 10.2 NDIS及其实现
摘要: 本节深入解析NDIS(网络驱动接口规范)库的设计与实现,作为协议驱动与网卡驱动的中间层。NDIS通过Miniport、IM和Protocol三套标准接口实现解耦,核心架构包括四个抽象层:硬件抽象层、包管理层、绑定管理层和协议无关层。ReactOS的NDIS实现采用模块化设计,包含12个主要功能模块,维护三个关键全局链表(协议、驱动、适配器)并实现严格的同步机制。NDIS采用异步发送模型和批量接收优化,通过内存池提升性能,同时遵循分层IRQL规则确保系统稳定性。文章详细阐述了NDIS与内核子系统的交互原创 2026-06-15 22:20:51 · 548 阅读 · 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 · 549 阅读 · 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 · 844 阅读 · 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 · 237 阅读 · 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 · 283 阅读 · 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 · 263 阅读 · 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 · 370 阅读 · 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 · 393 阅读 · 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 · 389 阅读 · 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 · 154 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.7 一个过滤设备驱动模块的示例
摘要: 本节以键盘类驱动(kbdclass)和过滤管理器(fltmgr)为例,解析过滤设备驱动的实现原理。过滤驱动通过IoAttachDeviceToDeviceStack附加到设备栈中(功能驱动的上层或下层),在不修改原有驱动的情况下实现日志审计、透明加密、防病毒扫描等功能。其核心流程包括:创建过滤设备对象、附加到目标设备栈、处理IRP转发与完成例程链。ReactOS中的fltmgr和kbdclass模块展示了上层过滤(如键盘事件转换)和下层过滤(如PnP拦截)的典型实现方式,关键涉及IoCopyCurr原创 2026-06-13 21:30:27 · 139 阅读 · 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 · 111 阅读 · 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 · 128 阅读 · 0 评论 -
Reactos 第 9 章 设备驱动 — 9.4 内核劳务线程
EX 工作项层(无状态)IO 工作项层(带对象引用)设备线程层(设备专用线程)每个工作项都是一条延迟执行的工作单元,会被某个系统线程()取出并执行。三套 API(最低级)(带对象引用)(设备线程)三种队列系统工作线程在等待信号量设备线程:每线程一个设备工作队列安全释放自动管理引用计数典型用途:文件系统延迟写、设备清理、IRP 完成回调、长时间 I/O 处理下一节 9.5 将以 PCI/PCI-X/ACPI 为例剖析一组 PnP 设备驱动的实例。原创 2026-06-13 21:08:16 · 113 阅读 · 0 评论
分享