4819|11

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何调用FMD_XXX函数,例如FMD_Init [复制链接]

各位高手:
如何在调用FMD_XXX函数?比如FMD_ReadSector,是不是用CreateFile调用?
具体需要如何配置?
请高手不吝赐教

最新回复

原来如此,微软为什么这么做,?害得我狂找这些函数在哪里被调用,原来这里已经做了一次转移。唉!eeworld真好。  详情 回复 发表于 2008-10-16 17:36
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
XXX_Init()
XXX_Deinit()
之类的,是device.exe调用的吧

XXX_Open()
XXX_Read()
XXX_Write()
分别是应用层调用
CreateFile()
ReadFile()
WriteFile()
后,系统自动会调用的
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
多谢楼上的..可是当我应用CreateFile的时候我应该传递什么参数进去?
比如CreateFile(TEXT("DSK1")...)之类的,是传递DSK1还是别的?
我指的是针对FMD_XXX函数.
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个要看你注册表相关项中index的值了,如果是1,就是DSK1了,一般都是1吧
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
非常感谢楼上的,我还想问一下,我用的是流接口驱动.
在.def文件中我导出了FMD_ReadSector函数,然后我在注册表中的prefix中该写什么?写DSK?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 redeg 的回复:
非常感谢楼上的,我还想问一下,我用的是流接口驱动.
在.def文件中我导出了FMD_ReadSector函数,然后我在注册表中的prefix中该写什么?写DSK?


驱动导出的函数都是比较死板的,好像你没有必要导出FMD_ReadSector
XXX_Init()
XXX_Deinit()


XXX_Open()
XXX_Read()
XXX_Write()
之类的函数才会导出,无论是单层还是多层驱动
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用楼主 redeg 的帖子:
各位高手:
如何在调用FMD_XXX函数?比如FMD_ReadSector,是不是用CreateFile调用?
具体需要如何配置?
请高手不吝赐教


eboot里有调用FMD_Init() 和FMD_ReadSector(),不过它是通过引用fmd的库调用的,lz可以看看你那里bsp里eboot的代码。

另外我也看了下我这的platform.reg,是有"Prefix"="DSK",不过搜了下bsp,找到了对应的sources,有定义DSK_Init/Open/Read.....不过没有找到这些函数定义,呵呵,不知道如何和FMD产生关系啦?能不能通过调用DSK来调到FMD,还请高人来解啊。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
很感谢楼上几位,我能保证楼上几位都有分.
FMD_ReadSector是用于读取FLASH数据的,我想读出整个FLASH的数据,类似于GHOST中的位拷贝,所以我想知道如何调用
FMD_ReadSector,另外,小弟最近在网上看见帖子说利用FMD_OEMIoControl能实现这样的功能,因为DeviceIoControl函数能调用到FMD_OEMIoControl,但是DeviceIoControl同样需要CreateFile函数返回的设备句柄作为参数,所以不知道如何使用createfile函数.还请各位高手帮忙.
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
CreateFile的调用是存储管理提供的API,对于设备来说会去判断你的第一个参数后面是否有“:”。
文件系统API调用的应该是Block层的驱动,对于你的驱动来说要看Block层Prefix是什么。
如果是DSK那你CreateFile的第一个参数就是“DSK1:”。还有就是如果在.def中做了类似如下的定义
DSK_XXX=FMD_XXX那么虽然你的执行函数都是以FMD开头的,但是在CreateFIle中要使用DSK。
在.def中导出的函数是可以调用的,你可以使用GetProAddress函数来获得函数的指针。具体应该是
GetProAddress(Handle,L“DSK_ReadSector”);函数返回第二个参数也就是要调用的函数的指针,
有了指针就可以调用函数了。
以上仅供参考。
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(初级)

10
 
不就是做成流接口的驱动,像调用别的流驱动一样调就可以了。
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

11
 
http://blog.eeworld.net/nanjianhui/archive/2008/03/19/2196466.aspx

这个去看看,呵呵,ms很合lz的意
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 8 楼 gsymichael 的回复:
CreateFile的调用是存储管理提供的API,对于设备来说会去判断你的第一个参数后面是否有“:”。
文件系统API调用的应该是Block层的驱动,对于你的驱动来说要看Block层Prefix是什么。
如果是DSK那你CreateFile的第一个参数就是“DSK1:”。还有就是如果在.def中做了类似如下的定义
DSK_XXX=FMD_XXX那么虽然你的执行函数都是以FMD开头的,但是在CreateFIle中要使用DSK。
在.def中导出的函数是可以调用的,你可以使用GetPro…

原来如此,微软为什么这么做,?害得我狂找这些函数在哪里被调用,原来这里已经做了一次转移。唉!eeworld真好。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表