VC6.0 +WDK 开发驱动的环境配置
前段时间,系统偶感风寒,挂掉了,苦于又没有备份过,只有重装了。原来开发驱动的环境是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:\WINDDK\6001.18002\INC
E:\WINDDK\6001.18002\INC\CRT
E:\WINDDK\6001.18002\INC\DDK
E:\WINDDK\6001.18002\INC\API (这里可能有些不需要,也可能少了,根据自己的情况在INC目录下继续添加就OK了)
设置LIB路径:
E:\WINDDK\6001.18002\LIB
E:\WINDDK\6001.18002\LIB\CRT\I386
E:\WINDDK\6001.18002\LIB\WNET\I386
设置Executable Files:
E:\WINDDK\6001.18002\bin\x86\x86
(这里要注意,一定要在bin\x86目录下,确切的找到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 开发驱动的环境配置的更多相关文章
- 详解LUA开发工具及其环境配置
LUA开发工具及其环境配置是本文要介绍的内容,主要是来了解并学习lua开发工具的使用和环境的配置,第一次接触LUA的话,就跟本人一起学习吧.看我能不能忽悠到你. LUA是语言,那么一定有编写的工具.第 ...
- Windows下OpenFOAM开发及使用环境配置指南 (2)【转载】
转载自:http://openfoam.blog.sohu.com/158751915.html *************************************************** ...
- webpack根据开发与生产环境配置不同变量--webpack.DefinePlugin
webpack有一个DefinePlugin接口,可以实现根据开发与生产环境配置不同变量.范例如下: 需求:开发环境请求baseUrl = '':生产环境请求 baseUrl = 'http://lo ...
- 代码编辑器[0] -> Vim/gVim[0] -> 基于 Python 的 gVim 环境配置(Windows)
环境配置 / Environment Setup 基于Python开发的 gVim 环境配置(Windows) 使用方式参考 Vim 的使用. 1 基于vundle进行配置 Vim有多个扩展管理器, ...
- Windows下OpenFOAM开发及使用环境配置指南 (1)【转载】
转载自:http://openfoam.blog.sohu.com/158614863.html *************************************************** ...
- Android 开发基础及环境配置
2011年买了第一部安卓操作系统的手机,当时势头正盛的HTC不可思议(incredible),当时的想法就是想学习下智能手机开发,但是由于各种原因,客观上是公司的项目太忙了,忙于项目管理.团队建设.客 ...
- 使用ionic与cordova(phonegap)进行轻量级app开发前的环境配置与打包安卓apk过程记录
前言 有人说:"如果你恨一个人,就让ta去接触cordova(phonegap)",这是因为这里面的水很深,坑很多,真让人不是一般地发狂.或许有幸运的人儿基本顺顺利利就配置完环境 ...
- webpack开发与生产环境配置
前言 作者去年就开始使用webpack, 最早的接触就来自于vue-cli.那个时候工作重点主要也是 vue 的使用,对webpack的配置是知之甚少,期间有问题也是询问大牛 @吕大豹.顺便说一句,对 ...
- [android开发篇]java环境配置
http://www.runoob.com/java/java-environment-setup.html Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. window ...
随机推荐
- ubuntu MySQL安装和设置
1. apt-get install mysql-server 2. apt-get isntall mysql-client 修改 /etc/mysql/my.cnf #bind-address ...
- 服务信息块协议 SMB(Server Message Block protocol)
SMB(Server Message Block)是协议名,它能被用于Web连接和客户端与服务器之间的信息沟通. SMB协议 SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制 ...
- Oracle中表列由VARCHAR2类型改成CLOB
情景 原来表中的列定义成VARCHAR2类型,众所周知,VARCHAR2类型最大支持长度为4000.假设因为业务须要.想把此列转换为CLOB类型,在Oracle中直接通过ALTER语句转换是行不通的. ...
- C++代码统计工具
自己前几天写的C++代码统计工具. http://pan.baidu.com/s/17SnnH
- Reverse Nodes in k-Group leetcode java
题目: Given a linked list, reverse the nodes of a linked list k at a time and return its modified list ...
- 【属性动画总结】Property Animation
属性动画概述 3.0以前,android仅支持两种动画模式,tweened animation 和 frame-by-frame animation,在android3.0中又引入了一个新的动画系统: ...
- 详解Spring Boot集成MyBatis的开发流程
MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集. spring Boot是能支持快速创建Spring应用的Java框 ...
- WebRequest多线程 超时问题
using System; using System.Collections; using System.Collections.Generic; using System.Net; using Sy ...
- 微信小程序中用户唯一ID的获取
折腾到半夜,搞得挺兴奋,总结一下,免得忘了: 1.微信小程序直接获得的是一些简单信息,基本无用 2.用户唯一标识是openid,还有一个unionid是关联多个公众号之类情况下用,我不大关心 3.在g ...
- python使用md5处理下载图片
import urllib2 import hashlib opener = urllib2.build_opener() req = opener.open("http://avatar. ...