pphust
驱动牛犊
驱动牛犊
  • 注册日期2005-01-06
  • 最后登录2006-09-13
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望7点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1298回复:9

驱动与应用程序的通信问题????

楼主#
更多 发布于:2005-03-09 16:30
我做的是DSP6205(自带存储器)的PCI驱动
问题:
要求驱动要给应用层提供的一个接口函数是:
WriteDeviceMem(hDevice, 0x80004000, 4,(DWORD *)&nDataCount);
其中, 0x80004000为数据写入的目标地址(属于DSP自带存储空间)。
现在想问IRP怎么携带0x80004000信息。并且把这个信息传给驱动程序?????】希望高人指点!!谢谢!!!


新手上路
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-09 16:35
应用程序发个DeviceIoControl
驱动程序处理IRP_MJ_DEVICE_CONTROL
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-09 16:55
应用程序发个DeviceIoControl
驱动程序处理IRP_MJ_DEVICE_CONTROL

这种方法最好了,这个例子克隆一个,简单快捷。
在交流中学习。。。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2005-03-09 20:22
READ,WRITE都可以,只要你驱动知道该如何做即可....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
aiwadgj
驱动老牛
驱动老牛
  • 注册日期2004-11-13
  • 最后登录2020-12-24
  • 粉丝0
  • 关注0
  • 积分119分
  • 威望84点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-03-09 21:49
我做的是DSP6205(自带存储器)的PCI驱动
问题:
要求驱动要给应用层提供的一个接口函数是:
WriteDeviceMem(hDevice, 0x80004000, 4,(DWORD *)&nDataCount);
其中, 0x80004000为数据写入的目标地址(属于DSP自带存储空间)。
现在想问IRP怎么携带0x80004000信息。并且把这个信息传给驱动程序?????】希望高人指点!!谢谢!!!


 


把应用程序的请求封状成irp这是io管理器做的事情,,,没有必要了解怎么打包成irp传递给驱动的。。。

io管理器打包irp的时候自然会将应用程序的请求都加到irp内(比如:是读啊还是写,,读写多少,,等等,,都打包成irp数据结构的一部分)
酒也在沉溺,何时麻醉我抑郁。过去了的一切会平息。。。。。。。
xbzjackey
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望34点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-11 15:31
大家都回答了
回答好的不要忘了给分哦。。。
makefriend8
驱动小牛
驱动小牛
  • 注册日期2003-08-01
  • 最后登录2014-06-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望111点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-11 21:27
恩。都回答的不错啊!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2005-03-11 23:30
pci设备,base addr会被os自动分配的,怎么能硬编码地址呢?你需要知道的是offset
在start_device的时候,进行内存映射,并记下映射后的base addr
app按offse写数据
hyb1394
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2005-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-14 23:26
用DeviceIocontrol()函数
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-16 11:29
张知识了,以前用过IOCTL,不知道还可以这样用,想传什么就传什么。

楼上说的对基地址怎么可以随便指定呢?
即便是你看到的,在别的系统和机器上可能不一样啊,
所以还是应该在StartDevice中获得系统分配的BaseAdd
游客

返回顶部