阅读:1457回复:2
求教:为什么上层的class driver不发读数据的SRB给我的stream minidriver?
我在给一块视频捕获卡写一个stream minidriver的驱动,现在在做captrue部分,使用AMcap.exe测试,初始化一切正常,上层class driver可以打开我的capture流,并且可以在打开后调用我的StrMiniReceiveStreamDataPacket函数发一个SRB下来,问题在于当我使用完这个SRB并且返回以后,class driver就再也不发别的SRB下来了,也就是说不再调用我的StrMiniReceiveStreamDataPacket函数了。
我试用了各种方法,打开或关闭class driver的同步,在下层给SRB排队,考虑了中断级别等等,但上层就是不发SRB下来。 唯一可行的就是采用TestCap中的定时器触发的方式,可以保证上层不断的传SRB给minidriver,但我不想使用定时器,为什么使用定时器就行,不用就不行呢,请问各位大侠是否遇到此类情况,如何解决? |
|
沙发#
发布于:2003-08-08 08:36
这要看你以前的 SRB COMMAND 处理的对不对。
比如 SRB_GET_STREAM_INFO ,这个 SRB cmd 很重要。 |
|
|
板凳#
发布于:2003-08-08 09:52
首先感谢你的答复。
我的驱动是在TestCap的基础上改的,好多函数都是用的TestCap的源码。现在可以打开capture流,也可以发送第一个SRB下来,但是当这个SRB完成后class driver就不再复用(reuse)这个SRB了。也不发新的SRB下来。 需要说明的是不是SRB超时了,也不是数据格式不对,因为如果采用TestCap使用的定时器的方式就是可行的。很奇怪的说。为什么使用定时器class driver就可以复用那个SRB,不用就不行呢? |
|