wangbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-11
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2554回复:7

请高手指教!急!!

楼主#
更多 发布于:2001-06-11 15:30
各位大哥:
小弟在做一块视频卡,接收视频流,该视频流中包含IP包,老板要求写一驱动程序将该卡做成一个虚拟的网卡,小弟不知是做NDIS Miniport还是中间驱动?请高手指教!急!!
给点思路也行,多谢!
神仙?妖怪? 谢谢!
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2001-06-11 22:50
莫非你的驱动程序需要让tcp.sys能够让该卡发送数据吗?
如果只是简单的需要捕获卡得到的数据,那么没有必要
这么麻烦,只要做一般的pci驱动就行了。

如果你的确需要让协议层能够通过你的卡接受和发送
数据,我想你要根据你的卡来定了。

如果你的卡的确具有很多网卡的特性,那么写一个
miniport也是可以的,不过比较麻烦,另外我估计
你的卡并非网卡。所以我猜想用imd要好实现一些,
imd可以用来做一块仿真网卡,你可以直接在ddk带
的sample里面修改,不同的是,例如imd的protocol
是调用ndissend发送实际数据,你要改成对你的卡的
实际寄存器以及映射内存的操作,然后,比较惨的事情
是,如果真的是调用ndissend,那么miniport自然会
让ndis调用imd的protocol的sendcomplete以便让你
释放你的内存,这种情况下,你的sendcomplete要
在你的dpc里面调用了,接受的情况也是一样的。

这样做(imd)比较符合ms的建议,不过对程序员
来说要求也是很高的,需要对pci driver和imd有
很深的了解。

Good Luck!!!
不再回忆从前,我已经生活在幸福当中。
wangbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-11
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-11 23:37
多谢Huyg 兄指教!
   我们这块卡不是直接卖给最终用户,是捆绑到别人的系统上卖的,别人还要在这上面做进一步的开发,所以老板要求做的尽量规范一些,这不把我给害惨了。
   不好意思我没有说清楚,我的卡不但要处理IP包,还要处理视频流,把视频流送到应用层。所以在驱动程序里要有两个分支,我很怀疑做一个IMD虚拟成一个网卡能不能实现这些功能。
神仙?妖怪? 谢谢!
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
地板#
发布于:2001-06-13 09:19
有趣,不过可惜你还是没有说清楚你的设备。
所以我只能乱猜。

你用im还是可以实现,你要做的不过是在im的
driverentry里面iocreatedevice就行了,至于
其它的东西,例如isr,dpc等等,还不是一样的码?

我做过的im里面不但有网络代码,还有驱动加密
卡的代码,和你这个差不多把?
不再回忆从前,我已经生活在幸福当中。
wangbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-11
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-06-13 14:58
多谢Huyg 兄指教!
   你觉得是以PCI_WDM为蓝本,还是以passthru这样的IM 为蓝本修改,哪个更容易一些?
   另外,应用层是通过deviceiocontrol跟驱动程序交互提取视频数据,而IP包是通过NDIS,这就是我所说的两个数据流,这样的驱动工作起来会不会乱套呀??
   还有安装应该是按普通的PCI驱动程序一样吧?不会是在网络属性里添加服务吧?
    

[wangbo 编辑于 2001-06-13 17:27]
神仙?妖怪? 谢谢!
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2001-06-13 23:10
 做这样的东西我如此有兴趣,忍不住再re一篇。

无所谓在那里改,因为很显然,不论在哪里改,你的driver是一定
要改动很多地方的,以至于我甚至认为从头写也差不多,总之你要
管理一切,我认为这玩艺还是有些复杂的。

安装的时候,由于你要告诉系统你实现了一个im,所以估计
用添加服务也许要容易一些。


两个数据流是不会搞混的。

这玩艺我没有做过,现在只能猜想,不过我认为这是一件
很有趣的事情。
不再回忆从前,我已经生活在幸福当中。
wangbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-11
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-06-14 09:34
再傻傻一帖!
  我的WDM的PCI 驱动已经做好了,在做这个驱动的时候根本没有考虑把IP包从视频流里提取出来,IP包直接丢弃了。我想这样搞不知道行不行。
   稍稍修改原来的WDM驱动把IP包分析出来,再写一个imd,这个imd中只处理IP包,并修改为下层提供的protocol,让imd与我的WDM驱动程序交互,如果能做到这样的话我的工作量要少很多,因为PCI卡的WDM驱动已经做好了,工作得还很稳定。
   请大哥指教!
神仙?妖怪? 谢谢!
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2001-06-15 14:58
imd里面只需要实现一个miniport,但是却没有对应的protocol(
是个简单pasthru的)。
这个miniport调用的可不是象一般imd 里面protocol那样调用
ndissend了,而是调用你自己pci的send。
接受也是一样。
不再回忆从前,我已经生活在幸福当中。
游客

返回顶部