阅读:1195回复:3
输出缓冲区映射问题
遇到一个问题如下:
应用程序中 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] |
|
最新喜欢:yjx200...
|
沙发#
发布于:2004-04-01 15:19
先顶一下,这个问题困扰我很长时间了。 :( :( :(
|
|
|
板凳#
发布于:2005-04-19 19:58
我也遇到相同的问题
顶一下 |
|
|
地板#
发布于:2005-04-19 21:06
你试试啊,,不一定管用。。呵呵。。。你把那个Initiate函数修改为。
m_CurrentTransfer->Initiate((KDevice*)this, &m_Dma, I.Mdl(), FromDeviceToMemory, (DMAREADY_CALLBACK)OnDmaReady, NULL, NULL, FALSE ); 如果有编译错误,,相应的改改,,在运行试试。。。 |
|
|