欢迎来到天天文库
浏览记录
ID:6561588
大小:517.00 KB
页数:20页
时间:2018-01-18
《文件系统驱动的编程基础文章 1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、文件系统驱动编程基础篇之1——我们的准备关键字:文件系统驱动编程基础篇作者:wskjuf更新:2008-10-0621:56:51浏览:14781文件系统驱动编程基础篇之一——我们的准备一、导言在四个月漫长的征战后,终于在国庆节的今天完成了基础篇系列。本文写作的初衷很简单,就是给平静的池水中加入一点波澜,如果大家在阅读后感受到一点生气,激起探索未知的热情,笔者也会感到由衷的喜悦。本系列文章为业余编程爱好者而写,仅仅作为初学者的一个借鉴,真正的精华存在于参考资料*中。知识的积累将经历从薄到厚,再从厚
2、到薄的反复过程,为了打下牢固的基础,请读者务必在阅读本文的基础上花费必要的时间完成参考资料。参考资料*:1.《ProgrammingtheMicrosoftWindowsdrivermodel》第一版(当前阶段主要阅读资料,尝试阅读前两章,体会驱动编程的难度),配套代码位于http://www.oneysoft.com/2.《WindowsNTFileSystemInternals-ADevelopersGuide》第一章3.《KernelDebuggingwithWinDbg》(随WinDbg软
3、件附带的doc文档,阅读基础部分)4.《UsingSerialPorts》(VMware官方文档)5.《安装DriverStudio3.2过程中出现DSDDKEnv8.dllfailedtoregister错误的解决方法》6.《驱动程序和应用程序编译出现的问题及解决方法》7.《EssentialsOfBuildingWindowsDrivers》阅读基础:不限。本章目的:了解操作系统的基本架构、构建调试器环境、驱动程序编译的一般步骤。二、基本架构为了保证性能,汇编和c成为操作系统编写的首选语言,W
4、indows家族的前辈都不例外,唯独Vista那庞大的身躯,让人不禁疑惑微软究竟如何才能诞下比恐龙还大的怪物。和此相反,WinPE作为维护型操作系统可以被一个32M的U盘所容纳。不管外观上的诸多差异,功能上的强弱区别,我们所关心的是它们的共性——即操作系统的内核。和操作系统密不可分的文件系统,就成为我们研究内核的一条途径。Windows采用了基于对象模型(object-basedmodel)的设计方式,各功能划分为不同的组件,两幅常见的架构图如下:我们把入口选定为Win32子系统(Win32Sub
5、system),它是我们接触最多,也最熟悉的一个子系统。硬件抽象层(HAL)及其以下部分目前不在我们关注的焦点内,我们将精力集中在系统执行层和核心层,它们具体的功能请参看资料2的第一章。内核模式下除了屈指可数的几个函数,一切都将是全新的——全新的思想、概念、模型、结构、函数,跨越的幅度不亚于从c语言编程迁移到c++语言,用c语言的思维来学习c++必然会产生阻碍。令人欣慰的是,这里没有特色之流的术语,绝大部分内容都符合人的记忆规律。你将很快掌握设备对象、IRP、IO堆栈等基础结构,同时你还发现以前很
6、难记忆的PEB、TEB、_ETHREAD等一系列无详细文档甚至无文档结构都已有迹可寻,如果你足够勤奋,甚至会在一年左右的时间后就可以阅读天书般的防火墙源码。让我们先来完成必要的准备工作吧。三、调试环境的构建在用户模式下编程,除了编译器几乎可以不需要其他辅助工具。想查看输出?直接ShowMessage即可,内核模式下,如果不希望摔得筋折骨断后才有所醒悟,你该在入门前就选好几件宝物——注意它既不是闻西同志的西瓜刀,更不是单车链。·MicrosoftVisualStudio200x+WindowsIFS
7、KitandDDKxxx+CompuwareDriverStudio3.x+VAssistXxxx+VMware如果记忆力超强的读者,也可以选择C++Builder、Delphi+插件的形式,有些站点正在致力于推广这方面的技术,对于新手而言,还是用原装货为上策。WindowsIFSKitandDDK是收费软件,电驴上有试用版,依照资料6的说明完成安装,注意选上xp和2000部分;Compuware公司已经改行不做DriverStudio,幸好出家前支持了vs2005,安装完成后,根据资料5打上Vi
8、sualStudio2005Integrationfix补丁;VAssistX有试用限制,不巧有人发现不修改代码而使用trial-reset_32清Armadillo壳,可以恢复试用时间,安全而可靠。VassistX增强了编译器的语法提示、代码搜索功能,大大提高了千行规模子程序的阅读和书写效率。VMware虚拟机用于减少重启的烦恼,提高调试的效率。经过一阵忙碌后,一个已经设置好的编译器出现了:·VMware虚拟机下的DebuggingToolsforWindows(即WinDbg)
此文档下载收益归作者所有