阅读:1402回复:3
HELP!关于DeviceIoControl驱动与用户程序交换数据
在我的驱动中,我将驱动部分的数据(为一个链表)输出到ouputbuffer缓冲中,让IO管理程序拷贝到用户区。可是,当拷贝数量较小时,没有问题。当数据量达到一定程度时,应该是3K不到(N个结构),就出现BSOD。无论我用METHOD_BUFFERED还是用METHOD_IN_DIRECT,都不行。
请大家帮我分析一下问题出在哪里了吗?在数据传输的时候,有时间限制吗?我发现遍历拷贝这个链表需要一定的时间。其实,数据量非常不大。 大家帮助分析下吧,感激万分。 |
|
|
沙发#
发布于:2007-01-09 13:33
是用systembuffer还是 userbuffer呢
|
|
|
板凳#
发布于:2007-01-09 13:39
引用第1楼WQXNETQIQI于2007-01-09 13:33发表的“”: 用的是systembuffer。 按照我的理解,不是IO管理程序负责把systembuffer拷贝到userbuffer吗? |
|
|
地板#
发布于:2007-01-09 14:04
问题已经解决:指针计算出错。
![]() 我程序里原来有一句:pthd = (thdata *)((thdata *)pthrd +sizeof(thdata)); 后来我把它改成了:pthd = (thdata *)((char *)pthd +sizeof(thdata)); 结果BSOD就消失了。真是不容易啊,自己太笨了,这个错误困惑了我好几天了。今天总算找到了根源。 谢谢大家! |
|
|