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

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

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



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

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

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

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



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



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

   编译函数的过程中有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驱动开发技术详解》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176212.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:28
下一篇 2026年3月26日 下午10:28


相关推荐

  • OpenClaw风险全链路分析及安全提示

    OpenClaw风险全链路分析及安全提示

    2026年3月14日
    1
  • sql server 字符串转日期_sql server 字符串替换

    sql server 字符串转日期_sql server 字符串替换提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档sqlserver字符串转为日期时间格式使用步骤1.引入库2.读入数据总结使用步骤1.引入库代码如下(示例):importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsimportwarningswarnings.filterwarnings(‘ignore’)importsslssl._c

    2022年10月8日
    5
  • 轮询与长轮询_轮询和中断

    轮询与长轮询_轮询和中断轮询:说白了就是客户端定时去请求服务端,是客户端主动请求来促使数据更新;长轮询:说白了也是客户端请求服务端,但是服务端并不是即时返回,而是当有内容更新的时候才返回内容给客户端,从流程上讲,可以理解为服务器向客户端推送内容;从中大家可以看出区别:轮询:1:大量耗费服务器内存和宽带资源,因为不停的请求服务器,很多时候并没有新的数据更新,因此绝大部分请求都是无效请…

    2026年4月13日
    5
  • Vue的安装及使用快速入门

    Vue的安装及使用快速入门Vue的安装及使用快速入门

    2022年4月22日
    54
  • 卸载Docker方法

    卸载Docker方法卸载步骤在安装 Autoware 库的时候安装了 Docker 发现电脑硬盘容量被占用不少 现在想卸载一下 docker 查找了很多资料 最终使用以下方法完整卸载 1 在配置 autoware 的时候其实安装的 docker ce 所以需要执行 sudoapt getpurgedock ce 此时可以执行 dockerversio 查看 docker 是否被卸载 2 卸载安装依赖 sudo

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号