kikitt
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2005-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:897回复:3

菜鸟问题?

楼主#
更多 发布于:2004-04-22 14:26
我是菜鸟 呵!
我想在WIN2000开发驱动程序
已经下载了2000DDK 安装了VC6.0
 请问
装了VC6 还要装win32 sdk 吗??
2000DDK可以安装在任意目录吗?/
VC中的环境变量怎样设置???
 
I AM KIKITANG
lingzjl
驱动牛犊
驱动牛犊
  • 注册日期2001-10-06
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-22 16:52
可以不装sdk
超级肥雀
euan2004
驱动牛犊
驱动牛犊
  • 注册日期2004-02-17
  • 最后登录2005-10-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-22 19:52
NT DDK的安装以及设备驱动程序的编译
作者:程序员客栈
经常有人问及如何安装DDK,如何编译第一个设备驱动程序以及如何消除掉编译驱动程序
时出现的大量错误信息.  其实, DDK的安装和驱动程序的编译是很简单的. 为了编译驱动程
序, 你必须首先打开一个DOS窗口, 并正确设置好所需的全部环境变量.    本文假定你将要
安装NT DDK 4.0, 并且在安装NT DDK之前,VC已经被安装在 C:\\vcdev\\vc\\bin\\目录下(尽量使
用短的VC路径名称,不要用长的路径命名格式).  

可按如下方法安装NT DDK( 其实就是进行一些环境变量的设置), NT DDK的安装并不需要
SDK--如果你已经安装好了VC的话.  

1.  从微软或其他站点下载NT  
DDK(http://download.microsoft.com/download/winntwks40/Install/1998/NT4/EN-US/nt4ddk.zip),  
将其安装在硬盘上(本文假定DDK安装目录为c:\\ddk).

2.   用任何文本编辑器打开c:\\ddk\\bin\\目录下的setenv.bat文件, 在此文件的第三行(不含空白
行)之后加入如下一行并保存:  call  C:\\vcdev\\vc\\bin\\vcvars32.bat,  具体示例:

@echo off
if \"%1\"==\"\" goto usage
rem This will put the SDK headers & libs first in the search path.

call  C:\\vcdev\\vc\\bin\\vcvars32.bat  

if \"%BASEDIR%\"==\"\" goto setbasedir
if NOT \"%BASEDIR%\"==\"%1\" goto setbasedir
...

3. 完成步骤1和2之后, 你就可以开始编译第一个设备驱动程序了(本文假定驱动程序选为
checked类型):  顺次进入Programs->Windows NT DDK(Common)->Checked Build  
Enviroment,  出现一个 DOS窗口.  使用cd命令进入c:\\ddk\\src\\general\\simple\\sys目录, 键入
build -c命令即可编译, 然后编译器提示已经成功编译好 ldunld.sys文件并已将此文件拷到  
c:\\ddk\\lib\\i386\\checked目录中. 运行build命令只编译需要重新编译的文件, 而build -c命令则
强迫编译器重新编译所有的文件.  

4.使用cd命令进入c:\\ddk\\src\\general\\simple\\exe目录, 在DOS提示符下键入NMAKE -f  
GETHNDL.MAK 即可在当前目录下生成Win32 控制台程序gethndl.exe,此程序用于调用并测
试在第3步中所生成的ldunld.sys设备驱动程序.

5. 从OSR下载OSR driver load(V2.2), 地址如下: http://www.osr.com/files/osrloaderv22.zip, 然
后进行解压缩, 并将osrloader.exe文件拷贝到c:\\ddk\\bin 目录中. 运行osrloader, 在 driver  
path中敲入C:\\DDK\\lib\\i386\\checked\\ldunld.sys (或用Browse选取), 点击Register Service按钮,
然后点击Start service按钮, 如能顺利完成这些步骤, 就意味着 ldunld.sys已经被成功注册及
加载了.


6. 从OSR下载OSR debug monitor, 地址如下: http://www.osr.com/files/dbgmon_v3.zip, 然后进
行解压缩, 并将dbggui.exe文件拷贝到c:\\ddk\\bin 目录中. 运行dbggui,  选中local mode选项.

7. 切换到DOS 窗口, 转入到 c:\\ddk\\src\\general\\simple\\exe目录, 运行gethndl,  显示:
Wow - it really worked!!!. 祝贺你,你已经成功地编译并运行第一个设备驱动程序了. 此时在
dbggui中也会出现一些KdPrint()提示信息!

8.   在osrloader中先点击Stop service, 然后再点击Unregister service即可卸载ldunld.sys.

一些注意事项;
1.  如编译DDK中的示范程序时编译器提示缺少哪个文件, 可用Windows或VC的搜索工具先
找到这个文件, 然后将此文件拷入示范程序所在目录再行编译. 也可对示范程序目录中的
Sources文件进行修改以便使所缺失的路径被包括进来.  
2 . 用build命令时出现的一些错误或警告信息, 有时可用build -c命令消除掉.
3.  如遇到last line incomplete错误,可下载一个叫lastline.exe的工具来解决
(http://grwy.online.ha.cn/dzhang/lastline.exe).
4. 为了使build能正确运行, 在需被编译的源文件目录下面必须有两个文件: SOURCES和
DIRS, 注意这两个文件没有后缀名.

SOURCES的文件格式:

TARGETNAME=drivername , 本参数用于指定生成的设备驱动程序名称(不需后缀名),所产
生的文件为drivername.sys.

TARGETPATH=.\\lib,  本参数用于指定生成的设备驱动程序所存放的路径. 一般采用.\\lib.
TARGETTYPE=DRIVER, build能够生成许多不同的目标对象,设备驱动程序一般选用
DRIVER.
INCLUDES=path1;path2;..., 本参数是可选的, 用于指定其他的#include文件的搜索路径.    
TARGETLIBS=lib1;lib2;..., 本参数是可选的, 用于指定其他的lib库文件的搜索路径.    
SOURCES=file1.c  file2.c ...,   本参数用于指定需被编译的全部源文件名称, 后缀名不能省
略,文件名之间用空格分开.  

DIRS文件格式:
DIRS文件用于指定在当前目录下必须创建的子目录。DIRS文件的内容由一系列用空格分
开的目录名组成,  \\可用于表示对上一行的继续.
DIRS = \\
             subdir1 \\
             subdir2 \\
             subdir3

当前目录下如果只有DIRS文件而没有SOURCES, 则表示没有任何源文件需要编译,但需在
当前目录下创建子目录, 只有SOURCES文件而没有DIRS则表示有源文件需要编译但不需
创建子目录. 二者都有则表示有源文件需要编译且需创建子目录.

5.  BUILD在编译时将会在TARGETPATH和当前目录下创建子目录或文件. 对于一般的
Intel平台, 以c:\\ddk\\src\\general\\simple\\sys为例说明, 编译完后Build在sys目录下创建子目录
obj\\i386\\用于存放ldunld.obj. 在c:\\ddk\\lib\\i386\\checked保存编译好的ldunld.sys文件.

6. 如果你将设备驱动程序的类型从checked转到free, 则第一次编译源文件的free类型驱动
程序时你必须使用build 的-c选项来编译.
7. 可以使用regedit或regedit32来在注册表中加入驱动程序的表项, ldunld.ini的内容:

\\registry\\machine\\system\\currentcontrolset\\services\\Ldunld
    Type = REG_DWORD 0x00000001
    Start = REG_DWORD 0x00000003
    Group = Extended base
    ErrorControl = REG_DWORD 0x00000001

运行regini ldunld.ini即可加入相应的注册表项.

7. 在ddk的src目录下有许多示范程序可供参考.

8.  经过一些繁琐的设置,也可以在VC中直接编译驱动程序
(http://grwy.online.ha.cn/dzhang/insider17.pdf和
http://www.computerworld.com.cn/99/tips/9904/040601_03.asp).
如果觉得回答对你有帮助,别忘记给点分哦,哪怕意思意思,^_^
hellangel
驱动中牛
驱动中牛
  • 注册日期2004-02-16
  • 最后登录2016-04-19
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望236点
  • 贡献值0点
  • 好评度205点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-04-22 21:24
精辟!!
春眠不觉晓,处处闻啼鸟。 夜来风雨声,花落知多少?
游客

返回顶部