Hippo
驱动牛犊
驱动牛犊
  • 注册日期2002-12-10
  • 最后登录2002-12-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1447回复:3

急问!块设备驱动的引入

楼主#
更多 发布于:2002-12-11 10:05
现在刚刚开始学习wince的驱动开发,
进入PB,建立了platform以后,右边的catalog没有块设备驱动的东东,所以加不到platform里面,但是wince自带好多的这些驱动的,例如ramdisk,应该怎么把wince自带的驱动引入到工程中,一起编译出结果呢??

试了好多的platform,但是缺省都不加入这个ramdisk驱动,好像也没有编译过,用了BSP wizard,new了一个ramdisk类型驱动,然后选择的是wince下面的ramdisk驱动文件,也好像只把.c变成了.obj,但是没有最终生成.dll。郁闷!?????

工具环境:
win2000 professional
Platform Builder

最新喜欢:

Eric_PanEric_P...
joyfly
驱动小牛
驱动小牛
  • 注册日期2002-07-02
  • 最后登录2009-09-17
  • 粉丝0
  • 关注0
  • 积分319分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-11 13:59
你可以修改在C:\\Program Files\\Windows CE Platform Builder\\4.10\\cepb\\cec 目录下的storage.cec文件
参考该文件的内容,添加一个ComponentType:

ComponentType
(
Name(\"Ramdisk_driver\")
Description(\"Dens Child Feature\")
GUID( {F9D61780-9AA9-4FC7-A674-EEA308D07E6F} )
Vendor(\"your company\")
Group ( \"\\Device Drivers\" )

Implementations
(
Implementation
(
Name(\"Ramdisk1\")
Description(\"Ramdisk 1 driver\")
GUID( {DA2C55CB-FA0A-4CB8-B916-551165182E77} )
Vendor(\"your company\")
Date(\"10/21/02\")
BuildMethods
(
BuildMethod
(
Step( BSP )
CPU( \"DEFAULT\" )
Action(
\'#BUILD(SOURCES,\"$(_WINCEROOT)\\public\\COMMON\\OAK\\DRIVERS\\BLOCK\\RAMDISK\\DRIVER\")\' )

)
)
)
)
)
找到storage.cec文件里的第一个ComponentType 下,添加一句:
OptionalChildren({F9D61780-9AA9-4FC7-A674-EEA308D07E6F})

好了,现在storage.cec修改完毕了,在Files| Manage Catalog Features里,把storage.cec文件remove ,Refresh后,再把storage.cec重新import,再Refresh一次,你就可以在catalog|device driver | storage里找到ramdisk1了,把它Add to platform就可以了。


“ \'#BUILD(SOURCES,\"$(_WINCEROOT)\\public\\COMMON\\OAK\\DRIVERS\\BLOCK\\RAMDISK\\DRIVER\")\' ) ”就是编译命令,里面的路径就是你的RAMDISK源代码的路径,此路径下有个SOURCES文件,就是编译时要用到的文件。sources文件里“TARGETTYPE=LIBRARY”也就是说你编译出来的类型是.lib文件,如果要编译成DLL,就用TARGETTYPE=DYNLINK
它编译出来的.lib文件,放到了$(_WINCEROOT)\\public\\COMMON\\OAK\\LIB路径下相应的CPU和编译类型目录里



以上只是编译出该驱动,如果要把它加到你的image里,需要修改project.bib文件。
先找到你编译出来的ramdisk.dll文件,把它拷贝$(_FLATRELEASEDIR)路径下,也就是你的平台编译出来的RELEASE目录下。
打开project.bib文件,在MODULES下加上一行
ramdisk.dll $(_FLATRELEASEDIR)\\ramdisk.dll NK SH

好了,编译你的PLATFORM,里面就应该有RAMDISK.DLL了


以上只是DEMO怎么把Ramdisk驱动程序加如到CATALOG和platform里,并不保证ramdisk驱动能够WORK,因为它可能还需要加些注册表信息或者其他驱动程序的支持,如果你想把它跑起来,还需要参考帮助文档里BLOCK驱动程序的部分。

另外:
其实你“用了BSP wizard,new了一个ramdisk类型驱动”可能就已经把RAMDISK加进去了,只是怎么编译,编译出来的是什么东西,还有编译出来的文件放在哪里,是由该驱动目录下的sources文件决定的。sources文件的详细说明,PB的帮助文档里有。
www.cnemb.com
Hippo
驱动牛犊
驱动牛犊
  • 注册日期2002-12-10
  • 最后登录2002-12-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-11 17:54
感激涕零,竟然在两个地方都re了我......
Hippo
驱动牛犊
驱动牛犊
  • 注册日期2002-12-10
  • 最后登录2002-12-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-12 01:26
已经成功的编译好了ramdisk.dll和ceramdrv.exe
但是运行没有效果,使用的platform是Internet Appliance
没有修改注册表的信息,因为在remote registry editor 中没有HKEY_LOCAL_MACHINE\\System\\storage manager
是否因为没有这个注册表项,导致ramdisk无法加载?
游客

返回顶部