zoukankan      html  css  js  c++  java
  • Windows驱动程序开发基础(四)驱动的编译调试和安装

    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驱动开发技术具体解释》


  • 相关阅读:
    个人项目作业
    自我介绍+软工五问
    Word Count
    个人简介+软工五问
    小学生算术题生成器
    个人项目-WC
    个人简历+软工五问
    学习有感
    学习爱我
    软件工程学习记录
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7160117.html
Copyright © 2011-2022 走看看