阅读:3537回复:15
passthru的说明书!!!
1) During DriverEntry, the Passthru driver registers as a protocol and an Intermediate miniport driver.
1)在DriverEntry(驱动进入点,相当于动态链接库的DllMain)模块,passthru驱动将向系统注册一个protocol(协议)和一个intermedia miniport(中间层微[小]端口)驱动接口,既向上层的TDI(或叫做协议[传输]层)提供miniport接口,向下的真正面对物理连接的网络驱动层miniport层,提供protocol接口(到不如说是提供接口来继承NIC/WAN miniport)。 2) Later on, Ndis calls the Passthru protocol to bind to a physical adapter. 2)然后passthru将绑定到一个真正的物理的网卡上!就是过去常说的,在网上邻居的属性里常用的那种绑定。 3) In the context of BindAdapterHandler and after opening of the underlying physical adapter succeeds, the Passthru driver queries the reserved keyword "UpperBindings" to get a list of device names for the virtual adapters that this particular binding is to expose. 3)在BindAdapterHandler(绑定一个指向适配器的句柄指针)的关系表的之中,以及成功的打开下层的物理适配器的时候,passthru驱动通过访问保留关键字“UpperBindings”来取得详细的绑定向虚拟适配器的设备名列表。 4) For each device name, the Passthru driver calls NdisIMInitializeDeviceInstance. 4)得到设备名后,passthru驱动将调用NdisIMInitializeDeviceInstance(就是NDIS中间层设备驱动miniport初始化函数),调用来做什么用?当然是设置一个虚拟网络界面卡的I/O操作给已经绑底下层NIC驱动的中间层驱动(IM driver),并返回NDIS_STATUS类型的值通知执行结果。 5) In response, Ndis will call back Passthru miniport InitializeHandler entry point. 5)作为回应,NDIS将返回passthru的微端口初始化句柄的函数进入点。 6) After InitializeHandler successfully returns, ndis will take care of getting upper-layer protocols to bind to these newly created virtual adapters. 6)当初始化句柄成功返回的时候,NDIS把上层协议接口绑定到一个虚拟适配器, 7) All requests and sends coming from upper-layer protocols for the Passthru miniport driver are repackaged and sent down to ndis, to be passed to the physical adapter. 7)所有来自上层协议接口的请求和发送passthr驱动会把他们从新打包并向下发送到NDIS,使它们能够传送到物理的适配器。 8) All indications coming from bindings to the physical adapters are sent up as if they belong to virtual adapters. 8)所有的来自物理适配器的指示会向上发送到它们能够适用的虚拟适配器。 9) When Ndis asks the Passthru driver to close the binding between a physical adapter and Passthru protocol, the Passthru driver first calls NdisIMDeInitializeDeviceInstance for the virtual adapter representing that particular binding. 9)当NDIS通知passthru驱动将要关闭一个passthr协议接口与物理适配器之间的绑定的时候,passthru驱动会先调用NdisIMDeInitializeDeviceInstance 给虚拟适配器另一个明确的绑定。 10) Ndis in turn will close all the bindings between upper-layer protocols and virtual Passthru adapter. 10)NDIS关闭的时候也回关闭所有上层协议接口和虚拟适配器之间的绑定。 11) After all the bindings are closed, Ndis will call HaltHandler entry point in Passthru driver for the virtual adapter and returns back from NdisIMDeInitializeDeviceInstance. 11)当所有的绑定都已经关闭的时候,NDIS调用passthru的崩溃句柄(HaltHandler)进入点,并从NdisIMDeInitializeDeviceInstance函数中返回。 12) The Passthru protocol then closes the binding to the physical adapter and completes the unbind request issued in step 9. 12)passthru 协议关闭物理适配器的绑定,关于完成反绑定请求的方法已经在第9步里发布。 13) To add Power Management Capabilities 13)添加电源管理兼容性。 13.1 During initialization, the Passthru miniport should set the Attribute 'NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND' during the miniport initialization. 13.1)初始化的过程中,passthru微端口初始化过程回设置“NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND”属性。 13.2 When the Passthru miniport is requested to report its Plug and Play capabilities (OID_PNP_CAPABILITIES), the Passthru miniport must pass the request to the miniport below the Passthru protocol. If this request succeeds, then the Passthru miniport should return this buffer with a status of NDIS_STATUS_SUCCESS: 13.3)当passthru请求报告它的即插既用兼容性(OID_PNP_CAPABILITIES)的时候,passthru微端口必须通过passthru向下层协议接口传送请求,如果这个请求能成功,passthru将会返回保存NDIS_STATUS_SUCCESS状态的缓存。 NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp = NdisDeviceStateUnspecified; NDIS设备电源状态 唤醒小魔术包 NDIS设备状态未定义 NDIS_DEVICE_POWER_STATE MinPatternWakeUp = NdisDeviceStateUnspecified; NDIS设备电源状态 小型唤醒 NDIS设备状态未定义 NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp = NdisDeviceStateUnspecified NDIS设备电源状态 小连接唤醒 NDIS设备状态未定义 If the miniport below the Passthru protocol fails this request, then the status that was returned should be used to respond to the original request that was made to the Passthru miniport. 如果微端口不能成功完成请求,那就返回建立了的passthru微端口的标准请求状态。 13.3 The OID_PNP_SET_POWER and OID_PNP_QUERY_POWER should not be passed to the miniport below the Passthru protocol, as those miniports will receive independent requests from ndis. 13.3)passthru的协议接口将不会收到OID_PNP_SET_POWER和OID_PNP_QUERY_POWER消息,这些微端口将收到来自NDIS的要求定义/声明的请求。 13.4 When the Passthru is asked to go to standby, it should use the Passthru protocol's PnP Handler to block all new sends and requests, and wait for all outstanding sends and requests to complete. This should be done before returning from the PnP Handler. 13.4)当passthru已经要求转换到待命状态时,passthru协议接口会使用PnP句柄来拦截所有新的发送和请求,并等待所有非待命的发送和请求的完成,这些都会在返回PnP句柄的时候结束。 14) To Add LBFO (Load Balancing & Fail Over) 添加LBFO(装载负载平衡和容错处理) Goal: To add load-balancing capabilities to the Passthru driver. TCP/IP should see only one network card connected to it. This is the primary miniport. The second card is the secondary miniport of this primary miniport. All receives are performed by the primary miniport and all sends are done by the secondary miniport. All sends and related requests are passed to the secondary miniport. 目的:为passthru添加了负载平衡兼容性后,TCP/1P堆栈将只能见到一个网卡与它连接,这就是主微端口。第二块网卡变成了主微端口的辅助端口,所有的接收任务由主微端口执行,那么所有的发送任务就将由辅助微端口来完成。所有的发送和释放任务将移交给辅助微端口来完成。 14.1 During miniport initialization, the new Passthru miniport searches through the list of existing Passthru miniport instantiations to see if a miniport with the same bundle identifier exists. If so, it calls NdisMSetMiniportSecondary on the two structures. The already instantiated Passthru miniport is the primary miniport. 14.1在微端口初始化的时候,passthru微端口会在列表中查找所有存在的passthru微端口初始化并从中得到相同的微端口的绑定声明,如果有,它会分别在两个结构体中分别调用NdisMSetMiniportSecondary(设置辅助微端口)函数,即时完成的passthru微端口是主端口。 14.2 During run time all sends are routed to the secondary miniport, and all receives are sent to the primary miniport. 14.2)在运行的过程中所有的发送任务会被路由到辅助微端口,所有的接收任务发送到主端口。 14.3 All requests, sends, and receives should be completed on the handles that these actions were initiated on. 14.3)所有的请求、发送和接收任务将由他们初始化中的句秉来完成。 14.4 All requests should be passed on to the miniport below the Passthru miniport that they were requested on. 14.4)所有的请求会传送给它们所请求的passthru微端口。 Note: There is an exception to above rule : some requests to the primary Passthru miniport may be redirected to the secondary miniport. In such a case, when the request needs to be completed, it should use the handles present in the primary miniport's data structure. 注意:这些是违反规则的例外:有一些请求向主passthru主微端口请求有可能会被从定向到辅助微端口,在这个案例中,当一个请求需要被完成的时候,它必须使用主微端口的数据结构来提供句柄。 14.5 The user can change the bundle ID at run time. A NetEventReconfigure, with the new bundleID, is sent to the Passthru protocol's Protocol PnP Handler when this happens. 14.5)用户可以在运行当中改变捆绑ID,一个网络事件从配置,将会新建捆绑ID,并会在它发生的时候发送到passthru 协议接口的协议PnP句柄! 14.6 When the Passthru is reconfigured, it leaves the bundle that it is part of and could join a new bundle. Salient points follow. 14.6)当passthru被从新配置的后,他将离开原先的捆绑并加入到新的捆绑当中!跟着就突出指针??这不知道该怎么翻译~~ 14.7 To activate LBFO, ensure that '#ifdef __LBFO' is a valid statement (not commented out) in Passthru.h. Only when __LBFO is defined will the Passthru driver call the NdisMSetMiniportSecondary API. 14.7 要激活LBFO(负载平衡与容错处理),必须确认“ifdef __LBFO”声明在passthru.h中存在(千万别注释掉!!!)!!!只有在__LBFO被定义了,passthru驱动才回调用NdisMSetMiniportSecondary(设置辅助微端口)API。 14.8 The request handler and the request complete handler should have knowledge of the OIDs that are redirected so that those requests will be completed on the miniport handles they were requested on. 14.8)请求句柄和请求完成句柄会确认OIDs已经被从定向,所以这些请求回在他们请求时被完成! 哎~~~好乱啊!!我希望大家能帮这把他整理一下~~我的e-mail是:topdigital@hotmail.com 发一份给我吧!我也会把大家整理后发给我的passthru说明转发给所有参与整理的或要求转发的朋友!!谢谢~~~每人出份力帮助后进啊(好象有点假公济私~~呵呵)!我的QQ:12076827希望能和大家交流!!放心啦!虽然大家都是君子知交淡入水但我决不是那种在QQ上对人爱理不理的人啦!!加我啊!!!!期待交流!!孤军作战太苦闷!!哇~~~2点了!睡觉!明天起不来了!! |
|
|
沙发#
发布于:2001-10-15 22:15
里面有许多不完善和错误的地方!斑竹为什么不指正啊???难道偷懒~~~??
|
|
|
板凳#
发布于:2001-10-16 09:29
最近在忙转业的事情,哪有时间看这些东西?
而且passthru我从来就没有仔细读过,我哪里 知道你写东西什么地方有错误? |
|
|
地板#
发布于:2001-10-16 09:47
终于盼来斑竹的光临!!原来是这样!我看了斑竹的许多帖子,让我大开眼界!所以我非常期待我的问题都能在您有空的时候给个回应,哪怕是好和不好都可以!也很希望能跟你学点东西~~
|
|
|
地下室#
发布于:2001-10-16 15:52
难怪版竹老不回答问题,原来要退伍了。
chat* sigh1 chat* sigh2 chat* sigh3 chat* sigh4 |
|
|
5楼#
发布于:2001-10-16 15:56
看来都要开始找工作啦.
10月了,单位就要来了,又要开始写自荐书一类的东东,特ft。 |
|
|
6楼#
发布于:2001-10-16 16:18
sirroom 在这声明指针想干什么坏事: )
啊??不会是想跳到我们机子的ring0吧? 斑竹转业不是意味着发财??? 哇~~~~我看到有“¥$"这种东西向他凶猛的扑去~~~ 奇怪的是他竟然不叫救命~~~ |
|
|
7楼#
发布于:2001-10-16 18:25
斑竹满年限了吗?我估计你还没满年限,单位让你走吗?
我给你发了EMAIL,你收到了吗? |
|
8楼#
发布于:2001-10-16 22:09
没有满年限,军队新的政策规定,研究生一律不得转业,
很不幸的是我居然头脑发热到读了研究生(不过我的大多数 东西都是在研究生期间学会的),很幸运的是,我拒绝了 老板让我读博士和留校的要求,没有头脑发热到在国防 科大读博士,虽然我当时对陈火旺老师崇拜的不得了,但还是 忍痛离开了学校。失去了向陈老师学习和在他手下工作的机会。 jjs既然问我这么具体的问题,想必对军队非常了解。谋事在人, 成事在天,军队里但凡老爸不是中将或上将的,我想完全有把握 走人的硕士和博士不会太多,我老爸既不是中将也不是上将, 我当然没有什么把握了。但是努力还是要的,否则怎么能够 对得起当年在桔子洲头一起发下的誓言的兄弟们呢呢? 长沙没有多少好玩的地方,我也是一个不喜欢玩的人,但是我认为 凡去长沙的人,岳麓山可以不去,桔子洲一定要去,最好去的时候 是深秋,站在江边,体会一下当年老毛年轻的时候对天地间发出 的询问“问苍茫大地,谁主沉浮”的豪情,相信一定会让你热血 沸腾,抛弃一切低级趣味的东西的。 我总共只去过桔子洲两次,一次是本科毕业,一次是研究生毕业, 第一次是送战友,第二次是战友送我,都不是在深秋,但是我们 面对漫江碧透的江水,背诵老毛的这首词,真是情不自禁的 指点江山,挥斥方遒。现在想起来,仍然觉得激动不已。 不知道这是不是少年不知愁滋味,为赋新词强说愁,却道天凉 好个秋呢? |
|
|
9楼#
发布于:2001-10-16 23:09
HUYG:
研究生转业很困难,没有两三年恐怕很难成功。我想你请个病假,不上班,在外面折腾也可以。我们这有个国防科大研究生用了三年才转业。我想你不会比他顺利。 军地反差太大了!以至于留不住人,唉! 我给你发了EMAIL,你收到了吗?有空请回复。 GOOD LUCKY! |
|
10楼#
发布于:2001-10-17 00:29
which mail?
我最近没有收到关于driver的mail。 你在哪个单位,你们那里有nudter,看来一定也是 军队某个单位了。 我申明一点,我想走人可和待遇无关,实际上,我们 单位的待遇还可以。绝对不比这里的各位开发driver 的朋友们差,我不太清楚这里的各位在公司的兄弟们 月入多少k,不过我觉得和我们单位的实际收入相比 应该差不多,何况还有房子。我估计我走人之后至少 一两年内的收入会下降一点。不过我还不至于等米下 锅。 |
|
|
11楼#
发布于:2001-10-17 19:13
HUYG:
单位和空一所差不多,不过不是空军。你在几室啊? 几天前我在这个版里问你EMAIL地址,你回答之后,我就发了个邮件,怎麽回事?地址没错吧? 空一所实际收入那麽高,我的同学在空一所还叫苦,可气! |
|
12楼#
发布于:2001-10-17 21:26
真没想到这里竟是卧虎藏龙之地~~~能向这么多位军方的栋梁请教真是我人生中的一兴!!这时我也觉得有些后悔,你们都是军方的研究所的高才生,我却只是个刚刚毕业的高中生!没听父母的话好好准备考大学,天天沉迷编程,结果到现在没有什么成绩,眼看着自己的同学都马上要大二了~~后悔!不过我相信自己的能力,希望各位大虾能对我多多调教,非常希望能和你们叫朋友!如果你们来海南旅游的话别忘了提前通知我!!我的QQ和E-MAIL上面都有!在QQ里可以给我的手机发短消息!
|
|
|
13楼#
发布于:2001-10-17 23:24
TO TOP:
HUYG大侠是,我不是。惭愧! 你还没上大学,就有这样的水平,佩服! |
|
14楼#
发布于:2001-10-17 23:43
你们对于我来说都是大虾!斑竹简直是我的偶像~~~太酷了~~我会继续努力的~~
|
|
|
15楼#
发布于:2001-10-18 10:59
对了!有没哪位大虾知道winamp3。0里的声波峰值显示器是怎么直接写desktop的背景的??由于是题外话~~所以不敢发表新话题!怕斑竹和各位大虾不高兴!!
|
|
|