mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:3604回复:30

kernel stream minidriver开发讨论区

楼主#
更多 发布于:2002-08-15 18:25
本人近期被老板强迫写一个dvb接收卡,经过2个多月的奋战对stream driver已有一定的认识,前一阵子我在该论坛提出的问题应者寥寥。那些问题现在虽然都已经解决,可是我总感到还有很多的困惑。以后我将在这个贴子中将自己的开发经验写出来与大家共享。当然有很多困惑希望有朋友能帮助解释。 :)

最新喜欢:

WY.lslrtWY.lsl...
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-15 18:30
开发环境ntddk,win2000
参考程序98ddk下的bt848例程。这个程序是一个模拟电视接收卡的driver,其中的很多东西我们是不用理的。我们只要从中学他的driver架构就可以了!!
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
板凳#
发布于:2002-08-15 19:31
很好阿,来这里就是互通有无的。
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-16 11:35
ks driver 的表现方式:

由于ks driver的思想是使内核模式下的driver在用户模式下表现为stream filter,也就是说在用户模式中看到的stream driver其实就是基于com标准的一个或多个filter.
这些ks filter的使用跟directshow 的filter基本相同,他们可以在graphedit中添加并连接播放等操作。
ks driver的com接口标准是的我们在写驱动时不用再为用户写sdk说明书发愁了!

下一个贴子:基于ks driver的框架




[编辑 -  8/16/02 by  mike_wang]

[编辑 -  8/16/02 by  mike_wang]
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-19 09:21
http://www.driverdevelop.com/forum/viewthread.php?tid=13734#pid99765
很久前的贴子,没注意到你的回复,呵呵,加分了:)
当时的问题我还没解决,就是Pin Property的对话框的所有选项都灰掉了,我在跟踪跟踪,看看是怎么回事。这个你实现了吗?
还有,在graphedit中我的音频pin的Pin Property对话框怎么都是些视频的选项,而且也灰者,不知怎么回事了
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-19 09:48
*********
to guang
*********
我想你所说的应该是ks filter吧,我的ks filter以及属性接口都是自定义的。
ks filter 中的自定义property以及property page是通过给driver建立一个plug-in filter(一个com插件)来实现的,比较麻烦。
如果你用的property是ms已有接口,我没有用过。不过pin property的问题应该是出在hw_stream_information的配置上,比如pin的类等等。

顺便问个问题:driver 中的risc 指令程序的运行原理?
                  
sipu
驱动牛犊
驱动牛犊
  • 注册日期2002-05-13
  • 最后登录2005-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-19 18:44
想过不通过DirectShow而访问流驱动程序的数据没有?有没有什么好的建议供分享?
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-20 09:03
*********
to guang
*********
我想你所说的应该是ks filter吧,我的ks filter以及属性接口都是自定义的。
ks filter 中的自定义property以及property page是通过给driver建立一个plug-in filter(一个com插件)来实现的,比较麻烦。
如果你用的property是ms已有接口,我没有用过。不过pin property的问题应该是出在hw_stream_information的配置上,比如pin的类等等。

顺便问个问题:driver 中的risc 指令程序的运行原理?
                  


是这样啊,我用的是ms标准的接口,我看看先 :)
你说的risc指令是指桥芯片上的吗?不懂的说 :(
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-08-20 09:10
想过不通过DirectShow而访问流驱动程序的数据没有?有没有什么好的建议供分享?


流驱动就是给directshow用的,我想不出有什么别的方法,不用ms的大不了自己写filter,然后还是要拼成图运行的
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-08-20 11:36
********
to sipu
********
我与gung意见一样!
不过你可以通过将驱动写成一般的驱动程序,将数据写进一个缓冲区
在user mode下读取它,然后自己处理这些数据,好像在liux下的媒体播放时这样子实现的。不过很不方便,所有的工作都要你自己做!!不如ms的com标准好
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-08-20 11:48
*******
to gung
*******
我对risc指令程序了解很少,只知道他是用来控制芯片的DMA通道来获得数据的。可是置于他的原理就不是很了解。
你所用的卡的芯片是什么?
你用ms的接口应该是不用理risc的,他的接口已经实现了这些功能!
不过它的接口都是控制模拟电视信号的比如ITVTuner、crossbar等等
这些接口我是用不到的。
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-08-20 12:28
这样啊,没做过,不懂
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-08-21 13:44
目前我遇到的问题(难于解决),请大家看看,如有好的建议一定给分!!!!!!!!!!:]
(1)stream driver中的srb_paging_out的作用?
现象:如果我的驱动驱动两个设备(audio,video),删除设备是触发
srb_paging_out,可能会造成系统错误
(2)risc program 的基本原理,虽然我已经按照bt878的芯片的文档,将其写完,不过总感觉一头的露水!!!
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-08-21 14:10
目前我遇到的问题(难于解决),请大家看看,如有好的建议一定给分!!!!!!!!!!:]
(1)stream driver中的srb_paging_out的作用?
现象:如果我的驱动驱动两个设备(audio,video),删除设备是触发
srb_paging_out,可能会造成系统错误
 


我写的是minidriver,驱动中没有理会srb_paging_out,返回个STATUS_NOT_IMPLEMENTED了事,删除设备是响应SRB_UNINITIALIZE_DEVICE吧
另外,为什么要做成两个设备呢,一个设备也可以把,filter上带上两个pin就可以了嘛
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-08-21 14:48
**********
 to gung
*********
我写得也是minidriver啊!不过tuner是数字的。
不管你的filter是怎么样的如果你用的芯片是fusion 878,那么在你的卡肯定是两个设备,也就是有两个baseaddress,如果你要操作两个设备的寄存器,就必须要基于这些基地址啊!filter仅仅是在用户态表现的一种形式,控制硬件还是要遵从芯片的原理啊!
不过我感到奇怪的是ms的例程中的filter好像只装一个video设备,就能控制video and audio(有它的各个接口完成),它的audio基地只是怎么得到的?
///////////////////////////////////////
如果我忽略srb_paging_out,驱动删除后,无法关机了!!!???


[编辑 -  8/21/02 by  mike_wang]
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-08-21 15:10
我用的7146,只有一个基地址,情况不一样了 :(
关于无法关机我也偶尔遇到过,是因为忽略了srb_paging_out吗?可是绝大多数时候都是正常的,我还不知是为什么
那么你在srb_paging_out中都作了些什么,出什么错了呢?
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-08-22 10:44
**********
to gung
*********
srb_paging_out在这里我只是判断了一些寄存器的状态,如果寄存器处于应用中则屏蔽掉:
    问题:帮助中所说的The class driver sends this request to signal that it is about to page out the minidriver。
 这里的page out the minidriver什么意思????


//////////////////////////////////////////////////////
7146是个用来做什么的?没听说过!!
   :)
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-08-22 10:51
通常page out指系统将内存中不常用的页面保存到硬盘上的缓存文件中,不知这里是什么意思,我再查查看。
saa7146h,philips出的视频桥芯片,和878一样的。
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-08-22 10:54
呵呵

The class driver will page out the minidriver only if the minidriver turns on this feature. The minidriver enables this feature by setting the registry variable PageOutWhenUnopened to 1 in the device\'s INF file.

干掉它应该可以了吧
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-08-22 11:46
*********
gung
********
干掉他会有无法关机的现象的:(


//////////////////////////////////
说说你的DMA数据通道的控制吧!
上一页
游客

返回顶部