当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++ Builder教程

文件系统驱动编程基础篇之1——我们的预备

  一、导言

  在四个月漫长的征战后,终于在国庆节的今天完成了基础篇系列。本文写作的初衷很简单,就是给平静的池水中加入一点波澜,假如大家在阅读后感受到一点生气,激起探索未知的热情,笔者也会感到由衷的喜悦。

  本系列文章为业余编程爱好者而写,仅仅作为初学者的一个借鉴,真正的精华存在于参考资料*中。知识的积累将经历从薄到厚,再从厚到薄的反复过程,为了打下牢固的基础,请读者务必在阅读本文的基础上花费必要的时间完成参考资料。

  二、基本架构

  为了保证性能,汇编与c成为操作系统编写的首选语言,Windows家族的前辈都不例外,唯独Vista那庞大的身躯,让人不禁迷惑微软究竟如何才能诞下比恐龙还大的怪物。与此相反,WinPE作为维护型操作系统可以被一个32M的U盘所容纳。不管外观上的诸多差异,功能上的强弱区别,我们所关心的是它们的共性——即操作系统的内核。与操作系统密不可分的文件系统,就成为我们研讨内核的一条途径。

  Windows采用了基于对象模型(object-based model)的设想方式,各功能划分为不同的组件,两幅常见的架构图如下:

文件系统驱动编程基础篇之1——我们的预备

文件系统驱动编程基础篇之1——我们的预备

  我们把入口选定为Win32子系统(Win32 Subsystem),它是我们接触最多,也最熟悉的一个子系统。硬件抽象层(HAL)及其以下部分目前不在我们关注的焦点内,我们将精力集中在系统执行层和核心层,它们具体的功能请参看资料2的第一章。

  内核模式下除了屈指可数的几个函数,一切都将是全新的——全新的思想、概念、模型、结构、函数,跨越的幅度不亚于从c语言编程迁移到c++语言,用c语言的思维来学习c++必然会产生障碍。令人欣慰的是,这里没有特色之流的术语,绝大部分内容都符合人的记忆规律。你将很快把握设备对象、IRP、IO堆栈等基础结构,同时你还发现以前很难记忆的PEB、TEB、_ETHREAD等一系列无具体文档甚至无文档结构都已有迹可寻,假如你足够勤奋,甚至会在一年左右的时间后就可以阅读天书般的防火墙源码。

  让我们先来完成必要的预备工作吧。

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接