阅读:3661回复:30
kernel stream minidriver开发讨论区
本人近期被老板强迫写一个dvb接收卡,经过2个多月的奋战对stream driver已有一定的认识,前一阵子我在该论坛提出的问题应者寥寥。那些问题现在虽然都已经解决,可是我总感到还有很多的困惑。以后我将在这个贴子中将自己的开发经验写出来与大家共享。当然有很多困惑希望有朋友能帮助解释。 :)
|
|
最新喜欢:WY.lsl... |
沙发#
发布于:2002-08-15 18:30
开发环境ntddk,win2000
参考程序98ddk下的bt848例程。这个程序是一个模拟电视接收卡的driver,其中的很多东西我们是不用理的。我们只要从中学他的driver架构就可以了!! |
|
板凳#
发布于:2002-08-15 19:31
很好阿,来这里就是互通有无的。
|
|
地板#
发布于: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] |
|
地下室#
发布于:2002-08-19 09:21
http://www.driverdevelop.com/forum/viewthread.php?tid=13734#pid99765
很久前的贴子,没注意到你的回复,呵呵,加分了:) 当时的问题我还没解决,就是Pin Property的对话框的所有选项都灰掉了,我在跟踪跟踪,看看是怎么回事。这个你实现了吗? 还有,在graphedit中我的音频pin的Pin Property对话框怎么都是些视频的选项,而且也灰者,不知怎么回事了 |
|
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 指令程序的运行原理? |
|
6楼#
发布于:2002-08-19 18:44
想过不通过DirectShow而访问流驱动程序的数据没有?有没有什么好的建议供分享?
|
|
7楼#
发布于:2002-08-20 09:03
********* 是这样啊,我用的是ms标准的接口,我看看先 :) 你说的risc指令是指桥芯片上的吗?不懂的说 :( |
|
8楼#
发布于:2002-08-20 09:10
想过不通过DirectShow而访问流驱动程序的数据没有?有没有什么好的建议供分享? 流驱动就是给directshow用的,我想不出有什么别的方法,不用ms的大不了自己写filter,然后还是要拼成图运行的 |
|
9楼#
发布于:2002-08-20 11:36
********
to sipu ******** 我与gung意见一样! 不过你可以通过将驱动写成一般的驱动程序,将数据写进一个缓冲区 在user mode下读取它,然后自己处理这些数据,好像在liux下的媒体播放时这样子实现的。不过很不方便,所有的工作都要你自己做!!不如ms的com标准好 |
|
10楼#
发布于:2002-08-20 11:48
*******
to gung ******* 我对risc指令程序了解很少,只知道他是用来控制芯片的DMA通道来获得数据的。可是置于他的原理就不是很了解。 你所用的卡的芯片是什么? 你用ms的接口应该是不用理risc的,他的接口已经实现了这些功能! 不过它的接口都是控制模拟电视信号的比如ITVTuner、crossbar等等 这些接口我是用不到的。 |
|
11楼#
发布于:2002-08-20 12:28
这样啊,没做过,不懂
|
|
12楼#
发布于:2002-08-21 13:44
目前我遇到的问题(难于解决),请大家看看,如有好的建议一定给分!!!!!!!!!!:]
(1)stream driver中的srb_paging_out的作用? 现象:如果我的驱动驱动两个设备(audio,video),删除设备是触发 srb_paging_out,可能会造成系统错误 (2)risc program 的基本原理,虽然我已经按照bt878的芯片的文档,将其写完,不过总感觉一头的露水!!! |
|
13楼#
发布于:2002-08-21 14:10
目前我遇到的问题(难于解决),请大家看看,如有好的建议一定给分!!!!!!!!!!:] 我写的是minidriver,驱动中没有理会srb_paging_out,返回个STATUS_NOT_IMPLEMENTED了事,删除设备是响应SRB_UNINITIALIZE_DEVICE吧 另外,为什么要做成两个设备呢,一个设备也可以把,filter上带上两个pin就可以了嘛 |
|
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] |
|
15楼#
发布于:2002-08-21 15:10
我用的7146,只有一个基地址,情况不一样了 :(
关于无法关机我也偶尔遇到过,是因为忽略了srb_paging_out吗?可是绝大多数时候都是正常的,我还不知是为什么 那么你在srb_paging_out中都作了些什么,出什么错了呢? |
|
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是个用来做什么的?没听说过!! :) |
|
17楼#
发布于:2002-08-22 10:51
通常page out指系统将内存中不常用的页面保存到硬盘上的缓存文件中,不知这里是什么意思,我再查查看。
saa7146h,philips出的视频桥芯片,和878一样的。 |
|
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. 干掉它应该可以了吧 |
|
19楼#
发布于:2002-08-22 11:46
*********
gung ******** 干掉他会有无法关机的现象的:( ////////////////////////////////// 说说你的DMA数据通道的控制吧! |
|
上一页
下一页