pppoe驱动双版本...source code included

[原创]pppoe驱动双版本...source code included

第一次在这个板发帖.....
我这个人兴趣太广.........什么都想研究..呵呵....

这次放出的是实现pppoe的imd.....

两个版本....
一个是ndis wan miniport.......
一个是condis wan miniport......

ndis wan miniport的实现方法已经很普遍了....
hypppoe.mtppppoe等等都是这样作的....
可惜的是并不能找到一个完全测试过的真正能完美使用的源代码..
虽然我的这个绝对不能说是完美...也没有经过完全测试...
但是我自认为要比你们能找到的源代码来得详细.....
如果问这个东西是怎么实现的...我到哪里找的资料...
嗯...微软...raspppoe.sys....花点时间反编译一下...
一共才3xK的大小...稍微努力就能完全弄清楚它的架构...它使用的数据结构....我这里有完全反汇编的ida文件...一并放出来了...
呃...如果你要反汇编的话呢...推荐的是checked build版本的文件...里面的调试信息能让你更快的了解到函数的作用...能更快的了解到那些结构成员的含义......如果你能找到带type 信息的pdb文件....它就perfect了.....有了带type信息的pdb文件...那简直...毫无秘密可言了....这个就不多说了...看你自己的反汇编功力了..

condis miniport的版本实现上就简单了很多很多...因为ndproxy帮你完成了大部分的tapi操作...你要作的就是create delete activate deactivate vc而已....而且ndproxy使用的condis架构..能大幅度的减少代码..........condis版的驱动...我只用了一天还不到就全k.o.了.......这个代码参考了ms的coisdn的实现

顺便还附带一个用于创建连接的app...这个程序核心部分不是我完成的...codeproject上面找来的现成代码....呵呵.....

至于notify object....这个实在有些bt....偶对com了解程度只能算刚刚入门...atl完全没有研究过....mfc版的com到是还曾经跟踪看过它的DllGetClass等等函数的实现...它使用的inner class方式还算比较清楚....atl版...完全苦手....所以这个东西...实现方面...我可不敢多说....代码全面参考ms的mux里面的notify.....
而且它还有少许bug....有checked build版os的朋友能看到是什么bug......我也不想去改,现在的这个也能用(其实是不知道怎么改-_-b)........

相比下呢....condis的实现确实要简单非常的多...但是也少了许多的自主权利....ndproxy的实现方面也有不是很可取的地方...它用miniport的guid来标识一个tapi provider..这个本来没有什么错的...但是它对ras模块返回的信息方面缺少足够有效的部分...使得ras模块并不能很好的区分具体的line....这个的体现就是...先安装...拨号一次...然后卸载...再安装....这个时候ras模块就不能分清楚哪个是先安装的,哪个是后安装的了......ndproxy总是对ras模块返回先安装的设备信息....使得ras模块认为这个设备是不能正常工作的.....这个应该是ras模块跟ndproxy之间的交流问题造成的...用tapi的函数是能打开新的line device,并且能进行make call的..在sdk里面有个叫tapi browser的程序,可以用它进行验证...
还有一个问题就是condis并不能很好的支持pppoe的设备..而作为isdn标识返回MEDIA_SUBTYPE的oid的时候,ndproxy总是标识设备速度64k....我怎么改都没有反应...一气之下改成pppoe..结果速度是出来了...但是ras却不认得它了...并不把它认为是一个pppoe的设备...而认为它是一个generic的设备....划归到modem里面...这个实现是ndproxy的问题...在它的代码里面有一个判断设备类型的...唯独少了pppoe这个东西......
使用condis确实能少很多复杂的工作...但是得牺牲一部分...这个是必然得......

最后要说得就是....ndis wan miniport版本的是实现了incoming call模块的....但是没有那个环境我没有办法测试...vm不行...不管是作为server还是作为client...vm必然是rpc...倒数60妙....我试过无数的组合方式...我的+ms的,ms的+rmraspppoe的,都是一样....最后放弃了......所以condis版本的干脆就没有实现incoming call的模块.....

附件里面的是全部的源代码...以及checked版的程序,inf,使用的ndis版本分别是4.0跟5.0......

编译环境....我喜欢ide...而且用最新的ide...vs.net 2003
用2003的ifs.ddk
source file就别用了....我这个人太依赖ide了...完全没有高手用command line的觉悟(-.-b)..........那两个source完全无用..

编译方面....如果你用build的话...得作很多工作了....这个我无能为力......爱莫能助.....
如果你用ide的话...只用作小修改就ok....就那些h,lib文件的路径.....

还有要说的就是free build版的没有经过足够的测试......

另外的那个raspppoe.idb文件是ida的文件...是我完全反汇编ms的raspppoe.sys生成的,里面有比较详细的注释....可以一看....
ndproxy以及ndiswan以及ndis本身....我并没有进行全部的反汇编...都还只是半成品...加之对他们本身的熟悉程度还很不够...对他们的整体架构还不能理得很顺畅....所以...反汇编遇到了很多得阻力...使得他们都还只是半成品....这里就不放出来了..

最后最后了....祝大家好运.....

我这人废话很多....嘿嘿

文件在这里....
好难发上来哦



附件: 2004-08-26_PPPOE.rar (863 K) 下载次数:292

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值