ddnewbie
驱动牛犊
驱动牛犊
  • 注册日期2003-07-25
  • 最后登录2009-04-13
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:1195回复:3

输出缓冲区映射问题

楼主#
更多 发布于:2004-04-01 15:16
遇到一个问题如下:
应用程序中
USHORT CommBufOut[]
DeviceIoControl(m_9054Device,PCI9054_IOCTL_806_DmaRead,NULL,NULL,
CommBufOut,(CommBuf_Size/2)*sizeof(USHORT),&nOutput,
NULL);

驱动程序Serial_PCI9054_IOCTL_806_DmaRead_Handler(KIrp I)中
m_CurrentTransfer->Initiate(this,
&m_Dma,
I.Mdl(),
FromDeviceToMemory,
LinkTo(OnDmaReady),
&m_Buffer
)
现在只要执行这段传输(m_CurrentTransfer)的初始化,就会黑屏
重启。我想应该是驱动程序中I.Mdl()和应用程序中CommBufOut没有对应好吧?mdl本身是用来描述用户模式虚拟缓冲区,虽然同时含有物理地址。但是为了访问用户模式缓冲区,还必须怎么做?
驱动程序m_CurrentTransfer->Initiate的第三个参数必须是memory类,这如何和应用程序输出缓冲区指针对应?
盼各位大虾出招,分好说!



[编辑 -  4/1/04 by  ddnewbie]

最新喜欢:

yjx2003yjx200...
[img]D:gs.jpg[/img]
ddnewbie
驱动牛犊
驱动牛犊
  • 注册日期2003-07-25
  • 最后登录2009-04-13
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-01 15:19
先顶一下,这个问题困扰我很长时间了。 :( :( :(
[img]D:gs.jpg[/img]
yjx2003
驱动牛犊
驱动牛犊
  • 注册日期2004-06-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-19 19:58
我也遇到相同的问题

顶一下
请向您的朋友推荐《名人传记》电子期刊 http://list.cn99.com/cgi-bin/getlsts?listname=zhuanji
aiwadgj
驱动老牛
驱动老牛
  • 注册日期2004-11-13
  • 最后登录2020-12-24
  • 粉丝0
  • 关注0
  • 积分119分
  • 威望84点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-04-19 21:06
你试试啊,,不一定管用。。呵呵。。。你把那个Initiate函数修改为。

m_CurrentTransfer->Initiate((KDevice*)this,
&m_Dma,
I.Mdl(),
FromDeviceToMemory,
(DMAREADY_CALLBACK)OnDmaReady,
NULL,
NULL,
FALSE
);

如果有编译错误,,相应的改改,,在运行试试。。。

酒也在沉溺,何时麻醉我抑郁。过去了的一切会平息。。。。。。。
游客

返回顶部