阅读:2095回复:12
看这样理解miniport和intermedia、TDI他们之间的关系对么?
miniport是网络驱动的最底层,又是直接访问NDIS和网卡的一层!它不能直接被应用程序调用!而是给NDIS和imtermedia或TDI提供接口让它们来调用!Intermedia层是一个中间的可要可不要的层!如果存在就是为了在NDIS miniport和TDI之间插一脚来管闲事的!比如截获、分配或翻译数据包!以达到欺上瞒下的效果!TDI是最上的一层!是为了直接给应用程序提供服务的接口而存在的!也就是小跑腿!其实靠山还是下面的大汉奸intermedia层和老傀儡miniport层!征求各路大虾的高见:
1、miniport是给谁提供接口?谁能直接掉用它(NDIS库、其他miniport、imtermedia、TDI、都可以)?(满分6分) 2、TDI可以直接调用miniport么?应用程序可以直接调用miniport么?(满分4分) 3、miniport、intermedia、TDI可以写在同一个驱动里么?一个miniport驱动是不是只能包含单一种类的网络接口(如:modem或网卡)(满分2分) 4、miniport、intermedia、TDI全都是ring0 PASSIVE_LEVEL的接口么?他们的工作原理和DLL一样么?都可以动态加载,而且win32提供了类似“loadlibrary”的用于他们的接口么?(满分4分) 5、他们存在于sys、vxd、drv里的时候有什么区别?分别面向谁的调用(系统、应用程序、其他驱动)?(满分4分) 希望大家能一起讨论点和理论有关的东西!这样能丰富和学习更多基础理论!这样对将来不同方面的开发都是非常有用的!因为有时候许多不奇怪的错误或不明白的难题,都是应为基础理论的漏洞引起的~~所以希望斑竹和各路大虾给于支持和指导!我知道你们都是好人~~不会一脚踢开我这条小虾米的!因为我让你们看到了你们的初学NDIS生涯~~ 哈哈~~~快来快来~~~ [top 编辑于 2001-09-27 15:30] |
|
最新喜欢:aventi...
|
沙发#
发布于:2001-09-28 11:46
俺只感觉你的问题这么多,分却这么少:-)。
|
|
|
板凳#
发布于:2001-09-28 17:05
靠,考试呢?
|
|
地板#
发布于:2001-09-30 01:01
中间驱动程序是那种典型的处于小端口驱动程序和传输协议驱动程序之间的驱动程序。由于它处于驱动程序层级的中间位置,所以中间驱动程序必须和上面的协议驱动程序和下面的小端口驱动程序都通讯:
在它的下端,一个中间驱动程序导出协议实体指针(ProtocolXxx函数),让NDIS调用来完成与底层小端口的通讯请求。对于一个下层小端口驱动程序来说,一个中间驱动程序就像一个协议驱动程序一样。在他的上端,一个中间驱动程序导出小端口实体指针(MiniportXxx函数),让NDIS调用来和一个或多个上面的协议驱动程序进行通讯。对于一个上面的协议驱动程序,一个中间驱动程序就像一个小端口驱 动程序虽然它给它的上端导出一个MiniportXxx函数子集,一个中间驱动程序事实上并不能管理一个物理NIC。替代的,它提供一个或多个虚拟适配卡,让上端的协议驱动程序可以绑定。对于一个协议驱动程序,一个通过中间驱动程序提供的虚拟适配卡就像一个物理NIC一样。当一个协议驱动程序向虚拟适配卡发送数据包或请求时,中间驱 动程序传播这些数据包和请求给下层小端口。当下层小端口表示接收到数据包或响应这个协议的请求信息,或表明状态,中间驱动程序传播同样的数据包,回复和状态给绑定在这个虚拟适配卡上的协议驱动程序。 |
|
地下室#
发布于:2001-10-03 14:20
首先谢谢~~楼上列位仁兄的回答!分是少了点,但大家也不都是为了分尔来(其实我也觉得太少了!先讨论吧!等这个贴子封贴后,我把它门分别分成几个新贴!到时候再把分还给你们~~~希望支持~~~~谢谢)真正的目的是为了帮助象我这样的后进与相互交流!zzysir的回答很精彩及完善!深入的讲述了NDIS三层之间的公共接口的关系(起码比ddk和其他参考讲三层间公共接口的部分讲得好!!鼓掌!!!),我想继续请问:是不是说Miniport、IM、TDI他们之间所提供的protocolxxx和miniportxxx都不是直接被他们的上下层调用的!而是给NDIS提供了接口,而且这些接口对上下层的驱动都是不透明的,他们如果想样掉用这些驱动的某些函数或模块是不可以直接调用的,而是通过调用NDISxxxx函数来达到调用的目的的,对么??如果是这样假设有两个在miniport层的驱动,他们所执行的工作是不同的,但是是面向同一连接的,那上层的驱动如果通过单一的NDIS接口怎么知道调用的是哪个驱动或达到调用专用驱动的目的呢?总之我现在对三层之间的关系还挺蒙,希望大家能救救我~~~斑竹啊~~我也知道您这位成年人不喜欢我用这种迷惑的眼神看着你~~但是没有我们谁来把您的学术成就和经验发扬光大啊??还是帮帮我吧~~我想了解的东西其实不复杂就是如下:
_____ |....|<---调用1.0-Win32 Application-调用3.0-------- |....|................|调用2......................| |....|................|............................| |....|................\/...........................| |....|-调用1.1--->Service Programing Interface<-3.1| |..N.|............TDI..........................| |..D.|<---调用1.2-ProtocolXXX Functions<-----3.2---| |..I.|................|调用2.......................| |..S.|................|............................| |....|................\/...........................| |....|-调用1.3--->MiniportXXX Functions<-----3.3-- | |....|............Intermedia Driver................| |....|<---调用1.4-ProtocolXXX Functions<---3.4---- | |....|................|调用2......................| |..L.|................|............................| |..i.|................\/...........................| |..b.|-调用1.5--->MiniportXXX Functions<---3.5-----| |....|............Mninport Driver..................| |....|..............|调用2........................| ----...............|..............................| ..|............_____\/___..........................| ...-调用1.6-->|..INT中断.|<-------------3.6--X---- ..............| _________|_____________________| ..............|................................|=| ..............|..............NIC...............|=|--NetWork ..............|_____........................___| ....................|_______________________|..| 3.6的调用是一定不能成立的!我画出来的目的是希望表达: 一个应用程序他要调用一个网卡的某个中断的意思,可是我不清楚他是通过那个路径来调用的!然后又是通过哪个路径返回的! [top 编辑于 2001-10-03 14:31] |
|
|
5楼#
发布于:2001-10-03 15:15
这是插图!!呵呵~~画得很烂~~
|
|
|
6楼#
发布于:2001-10-13 20:05
为什么都没人帮解答一下的?斑竹~~~我看到你了!还躲???什么??分少~??好啦~~~都给你了啦!!快回答啦~~还不教教我??收了分还不教书~~~55555555555555~~~~~~~~
|
|
|
7楼#
发布于:2001-10-13 21:22
如果一个WIN32要分别控制或得到一个IM和miniport驱动数据,是不是要把miniport->IM->TDI->Win32一层层的写上去??既win32 调用TDI,TDI调用IM,IM调用MP,然后MP处理完后再原路返回啊?能不能跳过TDI或TDI和IM直接调用和返回数据从IM或MP啊?就是上面的图要问的!如果可以该怎么实现~~谢谢~~我想可能又问了个冷门的问题!没人想理了~~我发现在这的斑竹和许多人都是军方的高手,比起你们我自叹不如,我看了斑竹的许多大作发现您有个偏爱,就是比较喜欢回答中等水平并赋有代码的问题,其实我也很想能提出这么有建设性的问题,可是毕竟我还没入门,我真的很希望能和大家站在差不多的高度探讨,我会努力的,我相信蚂蚁也会战胜大象,这有没和我一样初学的朋友啊?我的QQ:12076827 E-MAIL:topdigital@hotmail.com来一起探讨啊!
|
|
|
8楼#
发布于:2001-10-13 21:56
我在DDK里面看到一个叫Packet的例子,里面把把中间层驱动注册成Protocol,还用到了IoCreateDevice,这样Win32就可以调用了。他还有一个附带的Win32测试程序。由于我没有仔细看这个例子,所以这能说这些,据说NDIS里面最好不用IoCreateDevice,但是例子里面偏偏就有,真搞不明白。看到我要好好学习了!
|
|
9楼#
发布于:2001-10-13 22:10
这么晚了还在啊?我也看过那个列子!可是好象不是im驱动,他的帮助文件就是那个html文档明确指出是protocol driver!我也看代码而且也安装过使用过!它并不是im啊~~~也许我理解错了~~
|
|
|
10楼#
发布于:2001-10-13 22:36
我也是初学,我的理解也很肤浅,但是我觉得它从结构上看和一个完整的IM不同的只是没有注册暴露出一系列的MiniportXxx函数给上层调用。但是如果在这个地方可以用IoCreateDevice的话,我觉得在IM里面也可以。
我是菜鸟,说得不对请指出,谢谢。 |
|
11楼#
发布于:2003-05-27 18:28
阁下说:\"miniport是网络驱动的最底层,又是直接访问NDIS和网卡的一层!它不能直接被应用程序调用!\"
我就很奇怪了. 一篇论文是这样的: 基于NDIS Miniport的Windows 2000的安全软件设计 就是要写miniport driver(不是NIC driver),而应用层的界面就是来设置或控制miniport的呀? 这又如何解释呢?? |
|
|
12楼#
发布于:2003-05-27 18:43
阁下
说:\"Miniport、IM、TDI他们之间所提供的protocolxxx和miniportxxx都不是直接被他们的上下层调用的!而是给NDIS提供了接口\" 我支持这个观点! 而且这些接口对上下层的驱动都是不透明的 这一点我想,阁下没有说明白.对上层来说只有NDISxxxx函数 而miniportXXX是miniport对上NDIS的.miniport向NDIS注册了什么,上面才有对应的NDISxxx. 至于 可不可以直接调用的 我也不敢肯定! |
|
|