Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532377
  • 博文数量: 252
  • 博客积分: 6057
  • 博客等级: 准将
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-21 10:17
文章分类

全部博文(252)

文章存档

2013年(1)

2012年(1)

2011年(32)

2010年(212)

2009年(6)

分类:

2010-03-19 13:36:43

fleshwound 2007-05-01 08:07

一、安装Microsoft Visual C++6
二、安装Windows DDK
三、安装Compuware  DriverStudio
四、 打开DDK Build Setting,点击Launch Program按钮自动调用Microsft Visual C++
五、用Microsoft Visual C++打开工程,并编译生成驱动。
注:
可以使用 Compuware DriverStudio中自带的工具Source to DSP Converter为C驱动代码生成Microsoft Visual C++的工程。注意:在转换前需要打开一下源文件中的Source文件,可能要对其中相关项进行修改。如:转换IFS DDK中自带的sfilter时,需要将TARGETNAME项的值由sfilter改为sfilter.sys,否则生成的目标文件只会是 sfilter,而不是sfilter.sys。若转换后在Microsoft Visual C++工程菜单中的设置按钮中进行设置生成文件会提示编译错误,我也不知道这是为什么,有哪位大虾知道其中原因请告知在下。

fleshwound 2007-05-01 08:08
/////////////////////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(), 
将其安装在硬盘上(本文假定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), 地址如下: , 然
后进行解压缩, 并将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, 地址如下: , 然后进
行解压缩, 并将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的工具来解决
().
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中直接编译驱动程序

fleshwound 2007-05-01 08:09
/////////////////////////使用DriverStudio开发WDM设备驱动程序入门 ///////////////////////////////////////////
用DriverWorks为 Windows 98 , Windows Me, Windows NT , Windows 2000 ,和 Windows XP 开发驱动程序
简介
    DriverWorks 通过提供强大并且先进的代码生成向导——DriverWizard,还有库和例子中成千上万行经过严格测试的代码,简化了设备驱动程序的开发。
    Windows NT 和 WDM 驱动程序接口为面向对象方法的应用提供了良好的条件。DriverWorks 充分利用操作系统面向对象的优良特性,与微软的 DDK 相比,它为设计基于 Windows NT 和 WDM(驱动程序设计模型)的驱动程序提供了更加友好的方式。使用 Driverworks,设计人员能以更快的速度开发 NT 和 WDM 驱动程序。在大多数情况下,DriverWorks 函数库的使用,可以大大减少驱动程序的代码长度。利用这些精心设计的函数,你几乎可以完成所有的工作。当然,DDK的C语言级的API函数也是可用的。


注 意:Windows NT 设备驱动程序能运行在 Windows NT 或 Windows 2000 上;而 WDM 设备驱动程序能在 Windows 98 , Windows Me ,Windows 2000 ,和 Windows XP 上运行


    DriverStudio把那些每个驱动程序都需要的代码都封装成类库。库代码自动地处理例行的操作,这极大地简小了任务的复杂度。
  而且,C++编译器提供了ANSI C 所不具备的优点: 包括改进的类型安全检查,内连函数优化,以及更好的代码组织。
    DriverWizard——DriverWorks 的代码向导,与微软的Visual C++ 紧密的集成。超过1500行的驱动程序源代码框架只需几次鼠标点击就可完成。这些代码还包含了详细的注释。另外,DriverWizard 还能生成专为特殊设备定制的代码,比如:USB设备,PCI设备,即插即用设备,ISA 设备,等等。
    DriverStudio对Microsoft Developer Studio 的支持远不止用 DriverWizard 构造一个新工程这么简单。DriverWorks 提供了完整的和Microsoft Developer Studio 相似的开发环境,包括 checked 和 free 编译环境,相似的代码编辑器,错误代码定位,以及类浏览器。


编译库
    在你利用DriverWorks开始工作之前,你必须编译需要的库文件。你可以在Microsoft Visual Studio 环境中,或者用命令行方式编译库文件。
    下面介绍怎样在VC环境中编译库。
    1.启动Visual C++ 。
    2.选择菜单 File|Open Workspace。打开位于DriverStudio\DriverWorks\Source\vdwlibs.dsw的工作空间文件。
    3.选择菜单 Build|Batch Build,在弹出的对话框中选择你想编译的库。
    4.点击Build编译你选择的库。
    怎样用命令行方式编译库,这里省略。



测试你的安装
  如果你想用命令行(不是在Microsoft Visual Studio中)编译一个简单的驱动程序例子,你必须先运行两个批处理文件(后缀为.bat的文件),这两个文件在DDk和Visual C++中。你也可以简单的通过运行开始菜单 程序/Development kits/Windows 2000 DDK 中的 Checked Build Environment 或 Free Build Enviroment 来完成此操作。
  第一批处理文件是 SETENV.BAT ,并且它要求 2 个参数:第一个是DDK 的根目录,第二个是"free" 或 "checked"。第二个参数告诉编译系统是否在驱动程序中加入调试信息。第二批处理文件是 VCVARS32.BAT ,它为编译器建立路径。


编 译例子程序
  对 Windows NT 4.0 来说,最简单的例子在DriverStudio\DriverWorks\Examples\NT\HELLO 文件夹里。你可以编译这个例子,然后用DriverMonitor装载它
    对 WDM 驱动程序( 用于Windows 98 , Windows Me, Windows 2000 ,和 Windows XP ),最简单的例子在 DriverStudio\DriverWorks\Examples\WDM\HELLOWDM 文件夹里。你编译它,然后用控制面板里的添加新硬件向导来加载。
    如果你有 Microsoft Visual C++ 5.0 或更新的版本,你可以打开工作空间文件%DRIVERWORKS%\examples\nt\hello\hello.dsw ,然后在Visual C++环境中编译。编译 WDM 驱动程序,请用 HELLOWDM 例子。
如果你想从命令行编译,请按下面的方法设置工作目录,然后运行 Build程序编译:


cd\ProgramFiles\Numega\DriverStudio\DriverWorks\ examples\nt\hello
build


    请查看输出文件“ build.log ”(或“ buildchk.log ”或“ bldfre.log ”)看是否有错误。


在Windows 98和Windows Me 中装载驱动程序
  首先拷贝HELLOWDM.INF文件到系统文件夹。然后打开控制面板,运行添加新硬件向导。在添加新硬件向导的第一步中,选择从“列表中选择硬件”,注 意HELLOWDM在其他硬件中。当询问制造商时,选择从磁盘安装,定位到INF文件所在的目录。如果你在安装时运行了DriverMonitor,你将 会看到驱动程序弹出的消息。安装完成后,打开控制面板中的系统图标,安装的设备会出现在设备管理器中。


在Windows NT, Windows 2000, 和 Windows XP中加载驱动程序
  对于Windows 2000 和 Windows XP 中的WDM 驱动程序,方法与前面介绍的类似。
  对于Windows NT ,Windows 2000 和 Windows XP上的非WDM 驱动程序,运行 DriverMonitor 证实你的驱动程序工作正常。请注意 HELLO.SYS 将被创建在.\I386\*目录,此出的*取决于你的编译环境是 checked 还是 free。
  当你从 DriverMonitor 装载 HELLO.SYS 时,你应该在窗口中看到确认信息,然后是驱动程序发出的HELLO消息。
注意:在 Windows NT 下装载设备驱动程序,你需要以管理员帐户登录。
如果你没有足够的权限安装内核模式驱动程序,DriverMonitor 会提示错误消息。


    在从 DriverMonitor 退出前,请卸载驱动程序。

eping 2008-11-22 20:51
忘记DDK 吧,用WDK !下载地址:
阅读(689) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-03-19 13:40:41

驱动是否都要用DDK写 http://www.china-askpro.com/msg39/qa63.shtml 编号: QA003863 建立日期: 2001年2月11日 最后修改日期: 2006年3月17日 所属类别: C/C++ - DDK与硬件设备 本问题涉及的操作系统 win9x 本问题涉及的编程工具 C++builder & vc 遇到的问题 我是一个想写驱动的程序,在Win9x 中的驱动是否都要用DDK写?怎样安装?在那些环境下运行?(ma jn) 驱动编写可以分多种情况,下面分别讨论: 1、串口通讯。 Windows自身带有串口通讯的API,所以一般串口通讯不需要编写单独的驱动程序,只需要调用系统功能就可以了。VB带有 MSCOMM控件(QA000388 "MSComm无法在中文Windows 95下传递二进制数据"),而VC++可以参考QA000162 "在VC中如何开发串囗",Delphi可以参考QA002595 "在Delphi中怎样

chinaunix网友2010-03-19 13:39:21

转载 用Driver Studio工具包开发WDM型的USB设备驱动程序(转) 收藏   转载地址 http://hi.baidu.com/fire4work/blog/item/8170e71c87a61e8286d6b631.html 前文所提及的WDM驱动程序开发方法,笔者都曾尝试过。个人认为用DriverStudio开发工具包来开发USB驱动程序行之有效。其中的 Driver Wizard是创建WDM驱动程序框架的一个很好的工具,后文将介绍用它来创建USB设备驱动程序的基本框架。   1、搭建开发平台   由于利用 DriverStudio 开发WDM驱动程序在搭建开发平台的过程中对软件的安装顺序要求颇高,在开发过程中我也曾因为安装顺序的颠倒而失败。在实践中总结了以下的安装步骤,有必要在此作以介绍。   ①在已装了Windows 2000 操作系统的机子上安装 Microsoft Visual C++6.0。 ②安装 Win2000 DDK 。③安装 NuMega DriverStudio 2.0 ( or 2.6 ) 驱动程序开发工具包。它包

chinaunix网友2010-03-19 13:38:24

用BCB开发控制面板程序 http://school.cnd8.com/c/jiaocheng/9167.htm 前不久,Inprise公司(原Borland公司)正式公布了Delphi 5.0版,其开发向导中支持了“控制面板程序(CPL)”框架的生成,利用它可以快速、方便地开发CPL程序。那么是否能在现有的Borland C++ Builder 中开发CPL程序呢?      CPL程序是动态链接库(DLL)的一种变形,只不过扩展名为.cpl、入口函数为 CPlApplet()而不是DllEntryPoint()罢了(并不是不要DllEntryPoint(),不然不能编译)。我们只需在BCB4.0 中选择“FileNew...”打开开发向导,选择“DLL”生成一个DLL框架,并在其中加入一个函数CPlApplet()就可以了。为了快速地说明问题,笔者先给出一个最简单的例子程序,然后再来解说。      #include    #include   #include   #pragma