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函数,系统会寻找[email protected]作为驱动程序的入口,但是VS2010默认的是C语言调用约定。所以只存在_DriverEntry,因此调用的时候就会出错。所以要将C/C++中的调用设置为_stdcall 修饰。

Tips:

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

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

本小节完。

参考书籍:

《Windows驱动开发技术详解》

时间: 2024-12-21 08:44:28

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

第十七章:Python の Web开发基础(四) MVC与Django

本課主題 MVC 介绍 Django 介紹 MVC 介绍 controllers 处理用户请求 views 放置HTML模版 models 操作数据库 MVC框架就是目录的归类 MVC 是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑 (控制器)还有用户接口(视图)分开来 Django 介紹 Django开发的一般流程包括模型设计.URL设计.视图编码.模板设计,搭建Django应用的一种典型流程是:先设计好模型,然后就尽快把admin 运行起来,以便你的员工.客户可以尽快

Windows移动开发(四)——闭关修炼

很久不写博客了,不是因为不想写,只是最近公司任务比较多,终于十一有时间出来冒泡了. 今天继续介绍移动开发中的重中之重--内存管理. C#代码是托管代码,C# 程序员很少像C/CPP程序员那样为程序资源的释放而头疼,一个C/CPP高手必须是内存管理的高手,作为C#程序虽然不要求像C/CPP程序员那样管理内存资源,但是对内存机制还需要有深入的理解,那些代码资源是托管资源交给GC去处理,那些资源需要程序员手工释放,当然大家更关心的是非托管资源,因为托管资源GC会自动清理. 一般查看一个类是否是托管资源

Windows 10开发基础——启动默认应用的URI

主要内容:通过指定的URI来启动默认的应用(设置,应用商店,地图,人脉) 方法一:直接在XAML中添加如下代码 <TextBlock x:Name="LocationDisabledMessage" FontStyle="Italic" Visibility="Visible" Margin="0,150,0,0" TextWrapping="Wrap" > <Run Text="

Windows 10开发基础——XML和JSON (二)

主要内容: Linq to XML Newtonsoft.Json.Linq来解析JSON 博客园RSS(http://www.cnblogs.com/rss)的解析 UWP调用自己实现的Web API 1.Linq to XML     Linq to XML不是一个新鲜的话题了,网上以及各种资料对这个介绍都比较多.今天就简单了解下,不做深入的研究...在代码中生成XML文档,使用Linq to XML会比Windows.Data.Xml.Dom命名空间下的类简单,使用起来也更加灵活.Linq

Windows 10开发基础——文件、文件夹和库(一)

主要内容: 1.枚举查询文件和文件夹 2.文本文件读写的三种方法——创建写入和读取文件 3.获得文件的属性 枚举查询文件和文件夹 先了解一下文件查询的几个方法: StorageFolder.GetFilesAsync: 获取当前文件夹中的所有文件,返回一个 IReadOnlyList<StorageFile>集合 IReadOnlyList<StorageFile> fileList =await picturesFolder.GetFilesAsync(); StorageFol

Windows 10开发基础——指针事件和操作事件(一)

主要内容: 1.指针事件 2.操作事件 1.指针事件 指针事件由各种活动输入源引发,包括触摸.触摸板.笔和鼠标(它们替代传统的鼠标事件).指针事件基于单一输入点(手指.笔尖.鼠标光标),但不支持基于速度的交互.下面是指针事件列表及其相关的事件参数列表: 事件或类 描述 PointerPressed 单根手指触摸屏幕时发生. PointerReleased 该同一触摸接触抬起时发生. PointerMoved 在屏幕上拖动指针时发生. PointerEntered 在指针进入元素的点击测试区时发生

Windows 10开发基础——文件、文件夹和库(二)

主要内容: 使用选取器打开和保存文件 关于文件.文件夹和库,如果深究其实还是有比较多的内容,我们这一次来学习一下选取器就收了.还有上篇博文中读写文本文件的三种方式可以细细体会一下. 文件选取器包含文件打开选取器(FileOpenPicker.FolderPicker)和文件保存选取器(FileSavePicker),分别用来打开文件和保存文件,这两个选取器的使用方法大致相同. FileOpenPicker类: ViewMode ,获取或设置文件选取器用来展示文件或文件夹的视图模式,属性值由Pic

windows下mongodb基础玩法系列一介绍与安装

为什么是mongodb? 昨天开始涉及到一个比较陌生的领域,搜了一下相关的学习资料,不能找到很好的解决方案,昨晚回去恶补了一些官网文档(最好的资料莫过于该知识的官方文档).至于具体为什么对于我来说还没有发言权,知识借用一个话来描述一下.Welcome to the MongoDB Manual! MongoDB is an open-source, document-oriented database designed for ease of development and scaling. 安

【蓝鸥Unity开发基础三】课时1 下载并安装unity

推荐视频讲师博客:http://11165165.blog.51cto.com/ 1.安装Unnity 创建账号登录 3.Unity中创建项目--Lesson-01 完全3D游戏--透视摄像机 正交3D游戏--正交摄像机--2.5D游戏 完全2D游戏--平面游戏--精灵--摄像机是没有视角的 以3D图像显示的2D游戏--玩家限制在2D中,但是游戏环境属于3D 带有透视摄像机的2D游戏--由精灵搭建出来--离摄像机越近越大,离摄像机越远越小 4.视频介绍