竹林蹊径:深入浅出windows驱动开发 - (EPUB全文下载)
文件大小:0.93 mb。
文件格式:epub 格式。
书籍内容:
竹林蹊径:深入浅出windows驱动开发
第1章 Hello World驱动
第2章 商业驱动开发技术
第3章 WDF概述
第4章 WDF USB设备驱动开发
第5章 WDF 1394驱动开发
第6章 内核驱动C++编程
第7章 WDF驱动测试
第8章 调试命令详解
第9章 内核同步
第10章 音频驱动开发
第11章 ASIO虚拟声卡
第12章 设备驱动安装入门
第13章 深入解析INF文件
第14章 设计驱动安装程序
附录A CY001 USB开发板
附录B VisualKD + VMWare实现单机内核调试
《竹林蹊径——深入浅出Windows驱动开发》读者交流区
反侵权盗版声明
第1章 Hello World驱动
1.1 从Hello World开始.......................................................2
1.1.1 HelloDRIVER......................................................4
1.1.2 代码解释..............................................................8
1.1.3 驱动程序的编译和安装..................................11
1.1.4 查看我们的驱动...............................................14
1.2 虚拟环境.........................................................................15
1.2.1使用虚拟环境进行驱动开发.........................15
1.2.2 使用VMware虚拟机......................................15
1.2.3 目标机设置........................................................16
1.2.4 Virtual PC虚拟机.............................................18
1.3 小结.................................................................................19
1.1 从Hello World开始
国外的计算机领域有一个著名的组织,名字叫“计算机器协会”,它在互联网上专门维护了一个网页,上面列出了200多种版本的“Hello World”程序,仿佛代码的罗塞塔石碑。
在使用一门新的编程语言时,人们习惯把“Hello World”作为第一个程序。渐渐地,人们也习惯用类似“Hello World”的程序作为一切程序的第一步,以此唤出程序员心中对于编程乐观的一面。
如本节的题目一样,如何编写驱动程序是本节将要解决的问题。
那么,让我们看一下驱动程序的“Hello World”吧!
代码示例1-1 Hello World驱动程序
本示例代码可以从本书的\Chapter01\Hello World目录下找到。
以上就是驱动程序最简单的“Hello World”例子,去掉代码注释部分,放眼程序,全部代码屈指可数。
由第003行注释可知,这个例子的文件名称是Hello World.c,说明此文件是由C语言编写而成的。
我们知道,操作系统刚出现时是由机器语言和汇编语言编写的,后来为了可移植性等采用了C语言。早期的一些Windows操作系统也是采用C语言编写的,而在开发基于NT技术的Windows操作系统时,同时采用了C和C++这两种高级语言。
那么究竟是采用C语言还是C++语言来开发驱动程序呢?其实两者各有优缺点,读者可以在读本书的时候仔细体会。这里采用C语言编写了第一个例子,因为用C语言完全可以开发出所有的驱动程序,同时你会有似曾相识的感觉。但是微软提供了WDF驱动开发模型,这个在后面的章节中会讲到,如果需要使用WDF,C++无疑是最好的选择。
实际上,驱动程序编译成的二进制文件是SYS类型文件,和普通的EXE类型文件一样,也是PE格式。PE是Portable Executable File Format的简写,是微软Windows平台环境下主流的可执行程序标准格式,DLL也是常见的PE格式。所以,使用什么编程语言并不严格限定,如果你喜欢,即使用汇编或Delphi也可以开发驱动程序。比如在VxD驱动编程模型盛行时,很多人还是使用汇编开发设备驱动程序,并提供了相应的开发环境;更有甚者提供了EXE类型程序到SYS类型程序的转换工具,这些工具虽然大多没有流行起来,但是却佐证了这种方法的可行性。
不过,微软提供的内核编程接口和示例只有C/C++的,为了方便起见,我们约定本书使用C/C++语言来开发驱动程序。
开发驱动程序大致和开发普通应用程序一样,几乎拥有同样的流程:分析需求、设计、编码、调试、测试、发布、维护这几个主要环节。但是在后几个环节上,驱动程序的开发和普通应用程序的开发又有着很大的差别。
下面,我们来简单分析一下代码。
第010行包含了一个头文件NTDDK.h,这个头文件是NT驱动必须包含的一个头文件,WDM驱动则需要换成WDM.h。
第019~027行,整段代码只有一个DriverEntry函数。这个函数是所有驱动程序的入口函数,类似于Win32编程下的WinMain函数或C语言的main函数。
第021~022行,函数的两个参数,分别代表驱动对象的指针和注册表子键的字符串指针。这个暂且不作详细论述,我们将在下面章节中具体说明。其中,__in是一个宏,代表这个参数是入口参数,常见的还有__out,代表出口参数。
第025~026行,再看函数里面,我们看到只有两个语句,是不是很熟悉呢? ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 竹林蹊径:深入浅出windows驱动开发 - (EPUB全文下载)