tangyu20020202
驱动牛犊
驱动牛犊
  • 注册日期2005-03-06
  • 最后登录2005-06-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1532回复:5

模仿《10分钟做一个USB驱动程序》做了一个驱动,可为什么不能用啊?急求救!

楼主#
更多 发布于:2005-03-26 16:32
我是个彻底的新手,在网上看到了一篇特别有名的文章叫《10分钟做一个USB驱动程序》,于是依样画葫芦做了一个,可出现了很多问题,也没得到文中说的结果。我把我的过程说一下,希望大侠们能帮我指出我的错误。谢谢!
我的系统Win2000server,先后安装了VC++ 6.0(windows默认路径)、win2000DDK(d:\\NTDDK)、driverstudio2.7(windows默认路径)。
我按文中所述,在driverstudio的tools中运行setDDKGo。在打开的VC++环境中打开工作区c:\\program files\\compuware\\driverstudio\\driverworks\\source\\VdwLibs.dsw,用工具栏中的\"Build with the DDK BUILD.EXE utility\"编译了VdwLibs.dsw得到了vdw_wdm.lib,应该到这就做好了准备工作了吧!?然后我就开始用driver wizard来生成代码了。
用driver wizard的过程与文中一模一样,甚至连名字、路径什么的都一样,在最后也用文中的那段代码替换了NTSTATUS TESTDevice::TEST_IOCTL_LED_Handler(KIrp I)。
代码生成后,我用VC++打开了Test_TEST.dsw工作区,编译运行,可出现了如下界面:
Test application Test_TEST starting...
EOORO opening device:(0)returned from CreateFile
Exiting...

我觉得是不是没安装这个驱动啊,我就把我的U盘插上,更新驱动程序,TEST.inf内容是:
;; TEST.inf

;; *********  PLEASE READ ***********
;; The wizard cannot create exact INF files for all buses and device types.
;; You may have to make changes to this file in order to get your device to
;; install. In particular, hardware IDs and logical configurations require
;; intervention.
;;
;; The Windows DDK documentation contains an excellent INF reference.

;--------- Version Section ---------------------------------------------------

[Version]
Signature=\"$Windows 95$\"
Provider=%ProviderName%

; If device fits one of the standard classes, use the name and GUID here,
; otherwise create your own device class and GUID as this example shows.

Class=NewDeviceClass
ClassGUID={ff646f80-8def-11d2-9449-00105a075f6b}

;--------- SourceDiskNames and SourceDiskFiles Section -----------------------

; These sections identify source disks and files for installation.  They are
; shown here as an example, but commented out.

;[SourceDisksNames]
;1 = \"Install Disk\",Disk1,,

;[SourceDisksFiles]
;TEST.sys = 1,,

;--------- ClassInstall/ClassInstall32 Section -------------------------------

; Not necessary if using a standard class

; 9X Style
[ClassInstall]
Addreg=Class_AddReg

; NT Style
[ClassInstall32]
Addreg=Class_AddReg

[Class_AddReg]
HKR,,,,%DeviceClassName%
HKR,,Icon,,\"-18\"

;--------- DestinationDirs Section -------------------------------------------

[DestinationDirs]
TEST_Files_Driver = 10,System32\\Drivers

;--------- Manufacturer and Models Sections ----------------------------------

[Manufacturer]
%MfgName%=Mfg0

[Mfg0]
%DeviceDesc%=TEST_DDI, USB\\VID_0DD8&PID_D201

;---------- DDInstall Sections -----------------------------------------------
; --------- Windows 9X -----------------

; Experimentation has shown that DDInstall root names greater than 19 characters
; cause problems in Windows 98

[TEST_DDI]
CopyFiles=TEST_Files_Driver
AddReg=TEST_9X_AddReg

[TEST_9X_AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,TEST.sys
HKR, \"Parameters\", \"BreakOnEntry\", 0x00010001, 0

; --------- Windows NT -----------------

[TEST_DDI.NT]
CopyFiles=TEST_Files_Driver
AddReg=TEST_NT_AddReg

[TEST_DDI.NT.Services]
Addservice = TEST, 0x00000002, TEST_AddService

[TEST_AddService]
DisplayName    = %SvcDesc%
ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER
StartType      = 3                  ; SERVICE_DEMAND_START
ErrorControl   = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary  = %10%\\System32\\Drivers\\TEST.sys

[TEST_NT_AddReg]
HKLM, \"System\\CurrentControlSet\\Services\\TEST\\Parameters\",\\
\"BreakOnEntry\", 0x00010001, 0


; --------- Files (common) -------------

[TEST_Files_Driver]
TEST.sys

;--------- Strings Section ---------------------------------------------------

[Strings]
ProviderName=\"我\"
MfgName=\"我\"
DeviceDesc=\"自制USB驱动\"
DeviceClassName=\"自制USB驱动\"
SvcDesc=\"自制USB驱动\"



选择我上面的代码生成的TEST.sys,装是装上了,可前面有个小黄问号,这是为什么啊?而且在“我的电脑”里也看不到我的U盘了!是这个驱动有问题吗?
然后我再打开Test_TEST.dsw编译运行,出现了下面的界面:
Test application Test_TEST starting...
Device found,handle open.
Usage:Test_TEST [r n][w n][i n]
r initiates a read of specified number of bytes
w initiates a write of specified number of bytes
i initiates an IO Control Code message with specified index value IO control code index
0 is code TEST_IOCTL_LED [222000]
Example:
Test_TEST r 32 w 32
read 32 bytes,then write 32 bytes
Exiting...

到底问题出在哪儿呢?怎么不出现预期的效果呢?不是说能控制LED灯的亮灭吗?什么操作都不能做,怎么控制LED灯的亮灭呢?
希望大侠们帮帮我,到底怎么才能让我自制的这个驱动正确安装,在“我的电脑”里对U盘进行操作,或是打开Test_TEST.dsw编译、运行Test_TEST.exe时能达到文章中说的那样控制LED灯的亮灭呢?真诚请教,万分感谢!

znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2005-03-27 12:52
这个需要硬件支持.

不同的硬件中的资源不一样.

那篇文章需要有本站以前的Zboard开发板才可以.不过现在没有卖了.

http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
tangyu20020202
驱动牛犊
驱动牛犊
  • 注册日期2005-03-06
  • 最后登录2005-06-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-27 14:26
哦,是这样啊,谢谢
我毕设的题目是做一个U盘驱动程序,那我具体应该怎样做呢?
用怎样的代码来生成一个能U盘驱动呢?让windows\"我的电脑\"下能看到U盘,能正常读写?
sfqj82
驱动小牛
驱动小牛
  • 注册日期2004-12-30
  • 最后登录2011-09-03
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-28 16:36
哦,是这样啊,谢谢
我毕设的题目是做一个U盘驱动程序,那我具体应该怎样做呢?
用怎样的代码来生成一个能U盘驱动呢?让windows\"我的电脑\"下能看到U盘,能正常读写?


新手可以利用DDK自带的例子,修改一下;
也可以用ds依葫芦化瓢,感觉很是比较简单。
可能刚开始时会有点困难,多试几次就应该OK了。
互相交流~共同进步!
tangyu20020202
驱动牛犊
驱动牛犊
  • 注册日期2005-03-06
  • 最后登录2005-06-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-30 23:04
首先谢谢您的回答
我怎么给你分啊,还是系统自动扣我的分给你啊?我是新来的:P什么都不懂.我的分也不多但还是肯给也希望给的,哈哈...
还有我对U盘驱动开发没有一个整体的把握,我都不知道这到底是干吗啊?但是我肯定会好好学,希望大侠们不吝赐教:)
象我上面提到的我的毕设的题目,您能给我一个具象的描述吗?
比如说:
是不是我用DS生成的代码就可以编译成一个U盘驱动,就象在Windows下自带的那个U盘驱动一样可以用啊?谢谢...
对新手来说,太抽象会迷茫的啊:(
junki
驱动牛犊
驱动牛犊
  • 注册日期2004-09-02
  • 最后登录2007-11-30
  • 粉丝0
  • 关注0
  • 积分124分
  • 威望13点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-13 09:32
去买一本周立功的USB设备驱动程序开发书籍
游客

返回顶部