码迷,mamicode.com
首页 > Windows程序 > 详细

Windows驱动程序开发基础(四)驱动的编译调试和安装

时间:2014-08-24 11:45:02      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:驱动开发   windows 7   

Windows驱动程序开发基础,转载标明出处:http://blog.csdn.net/ikerpeng/article/details/38793995


下面说一下开发出来驱动程序以后如何编译。一般有以下几种方式:

1. 建立Makefile文件,用nmake工具进行编译和链接;

2. 建立Makefile,sources, dirs文件,用build工具编译。

3. 用集成开发环境进行编译链接。


我采用的是第三种方式,通过VS2010+wdk配置Windows驱动程序开发环境。地址:   http://blog.csdn.net/ikerpeng/article/details/38761441


但是接下来要说的是那样配置的部分原因:

   编译函数的过程中有4种调用约定:c语言调用约定:函数用_cdecl修饰;标准调用约定:函数用_stdcall 修饰;快速调用约定:函数用_fastcall 修饰;C++类成员函数调用约定:函数用 thiscall 修饰。

    其中的前两种是经常用到的。c语言调用约定中,会在目标文件中产生一个符号来代替这个函数:下划线+函数名的形式;而标准调用约定的形式是:下划线+函数名+@X,同时返回X。其中X代表需要清理堆栈是需要的数字。例如:

    Windows驱动程序需要使用到标准调用约定,对于DriverEntry函数,系统会寻找_DriverEntry@8作为驱动程序的入口,但是VS2010默认的是C语言调用约定。所以只存在_DriverEntry,因此调用的时候就会出错。所以要将C/C++中的调用设置为_stdcall 修饰。


Tips:

1. 很多C/C++的的使用技巧都要慎重的使用,甚至C语言中的malloc函数和C++中new操作都不要使用。因为在内核模式下,程序无法调用用户模式下面的API。


2. 最后安调试驱动程序可以使用:DbgView,装驱动可以使用DriverMonitor。


本小节完。


参考书籍:


《Windows驱动开发技术详解》


Windows驱动程序开发基础(四)驱动的编译调试和安装

标签:驱动开发   windows 7   

原文地址:http://blog.csdn.net/ikerpeng/article/details/38793995

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!