VC6.0 +WDK 开发驱动的环境配置

摘要:
最初的开发驱动程序环境是VC6+DDK+DriverStudio3.2,因此我们参考了其他人编写的VC6+DDK编译器驱动程序文章,主要是头文件。h文件用于我们的开发;驱动一些链接库文件以供我们调用;它包含用于编译驱动程序的Cl.exe和link.exe文件。VC使用这两个文件生成最终驱动程序。sys文件(如果编译中存在cl.exe错误)。

        前段时间,系统偶感风寒,挂掉了,苦于又没有备份过,只有重装了。原来开发驱动的环境是VC6+DDK+DriverStudio3.2,当时配置的时候就花了好一阵功夫,也没有彻底搞清楚。现在要重装了,决定改用WDK来开发,但环境的配置又搞的我头疼,不太喜欢命令行方式的编译,还是想借助VC6来开发驱动。

         在安装完VC6和WDK以后,就开始进行环境的配置了,可结果是弄了半个上午,还是搞不定。去网上找信息,关于WDK的,多是使用VS2005或VS2008的,有的要借助于DriverStudio之类的,按上面的方法来配置自己的工程看来不行。于是就参考了别人写的VC6+DDK编译驱动的文章,终于成了,不过有些地方还是有点不一样的。在这里把不一样的地方写下来,以供大家参考。

         参考:http://blog.csdn.net/wzsy/archive/2009/04/07/4053632.aspx

(1)第一步:

           打开VC建立一个Win32 Application工程,然后选择An empty Project。

(2)第二步:

            随便找一个驱动程序,主要是.C,.h及rc资源文件,加入第一步建立的工程

(3)第三步:

           设置VC编译驱动的环境,这才是重点。

           打开VC的Tool->Options->Directories里设置Include,Lib,及Exectuable File。这里说明下为什么要设置这三个东西:Include目录中,主要是供我们开发使用的头文件.h文件;Lib目录,为我们驱动所要调用的一些链接库文件;Exectuable File,这个很重要,它里面包含了我们编译驱动所使用的Cl.exe及连接link.exe文件,VC正是通过这两个文件来生成最后的驱动.sys文件(如果编译出现cl.exe错误,说明是这里的路径设置的不正确,我先前在这里走了弯路了,所以提醒下)。

          设置Include路径:

           E:WINDDK6001.18002INC

           E:WINDDK6001.18002INCCRT

          E:WINDDK6001.18002INCDDK

          E:WINDDK6001.18002INCAPI   (这里可能有些不需要,也可能少了,根据自己的情况在INC目录下继续添加就OK了)

         

           设置LIB路径:

            E:WINDDK6001.18002LIB

            E:WINDDK6001.18002LIBCRTI386

            E:WINDDK6001.18002LIBWNETI386

            设置Executable Files:

            E:WINDDK6001.18002inx86x86

           (这里要注意,一定要在binx86目录下,确切的找到Cl.exe文件,然后添加它所在的目录,DDK与WDK这个文件所在的路径并不是一样的,上面的是我所安装的WDK中cl.exe所在的路径,这里要根据不同情况选择正确的路径)

(4)第四步:

           这里要设置工程的属性:

            打开VC->Project菜单,找到C/C++选项卡,在Preprocesser definitions里输入如下字符串:

           Release下输入:           _X86_=1,i386=1,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,NDEBUG           Debug下输入:

          _X86_=1,i386=1,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,_DEBUG

          在Code Generation里的Calling convention用_STDCALL

         Debug版有个特殊编译选项/GZ (注意是大写的,小写的不要删!)删掉,否则有链接错误,chkesp链接 不上什么的。

(5)第五步:

         设置link选项卡,将输出文件名改为sys扩展名,

          在General的Objcet/Library modules,填写驱动调用的几个lib:

           ntoskrnl.lib hal.lib usbd.lib wmilib.lib。


          然后进入Output在Entry-point symbol:填DriverEntry
          下面就是往Project Options手动增加一些链接选项,复制如下进去:
          /machine:IX86 /driver /subsystem:native /SECTION:INIT,d /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221
          删除如下选项:
         /subsystem:windows
         /machine代表目标机器类型,/driver代表驱动,/subsystem:native 也是代表驱动。

(这里,我在配置的时候,只是将/subsystem:windows改为:/subsystem:native没有再进行其它设置,也可成功生成驱动文件,至于有没有问题,暂时不知道)


免责声明:文章转载自《VC6.0 +WDK 开发驱动的环境配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue+vant+js实现购物车原理小demo(中级版有选择)Oracle 11g远程连接 全解 转载下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

未加载的程序集

错误一个接着一个 蹂躏着我脆弱的心灵。。 未处理的“System.IO.FileNotFoundException”类型的异常出现在Microsoft.Xna.Framework.Game.dll中 其他信息:未能加载文件或程序集“Microsoft.Xna.Framework,Version=2.0.0.0,Culture=neutral,Publick...

一、Flume简明笔记

目录 一、Flume概述 1.1 Flume定义 1.2 Flume基础机构 二、Flume快速入门 2.1 安装部署 2.2 入门案例 2.2.1 监控端口数据官方案例:netcat-flume-logger.conf 2.2.2 实时监控单个追加文件案例:exec-flume-hdfs.conf 2.2.3 实时监控目录下多个新文件:s...

android studio如何查看数据库文件

android studio查看数据库文件有两种方式: 1、SQLSCOUT 优点:集成在as中,功能强大。 缺点:收费,破解麻烦。 2、Android Device Monitor 中的File Expoler 优点:免费 缺点:需要导出数据库,并用数据库可视化工具查看;手机需要root获得su权限,并通过adb命令修改/data/data/databa...

python setup.py 构建

摘要:这篇文章描述了自己动手把需要的代码封装成python模块的方法。完成后,我们可以直接使用pip install xxx下载自己的模块并使用内置的函数。 介绍python作为一门鼎鼎大名的语言,最有优势的地方就是它拥有无数第三方的模块可以直接拿来使用。以numpy(一个用于实现科学计算的模块)为例,常见的用法一般是这样,相信写过python的肯定是见得...

Android中的数据存储

Android中的数据存储主要分为三种基本方法:   1.利用shared preferences存储一些轻量级的键值对数据。   2.传统文件系统。   3.利用SQLite的数据库管理系统。   对SharedPreferences对象和SQLite数据库,它们的数据仅对创建它们的应用是可访问的。   (比如,MODE_WORLD_READABLE 和...

eclipse 灵活使用makefile来编译C/C++

需求: 近期在看<C++ Primer Plus>, 作者在不断优化自己的类。有很多不同的版本号,有非常多的測试函数(main函数),我使用的是eclipse+CDT来编写C++,不可能为每一个类都创建一个project。那咋办呢? 我们知道gcc+makefile+gdb。是linux下的神器,使得编敲代码相当的灵活,奈何水平不够,还是使用...