tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
阅读:5799回复:10

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

楼主#
更多 发布于:2004-08-26 23:21
第一次在这个板发帖.....
我这个人兴趣太广.........什么都想研究..呵呵....

这次放出的是实现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本身....我并没有进行全部的反汇编...都还只是半成品...加之对他们本身的熟悉程度还很不够...对他们的整体架构还不能理得很顺畅....所以...反汇编遇到了很多得阻力...使得他们都还只是半成品....这里就不放出来了..

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

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

最新喜欢:

wingmanwingma...
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
沙发#
发布于:2004-08-26 23:22
文件在这里....
好难发上来哦
附件名称/大小 下载次数 最后更新
2004-08-26_PPPOE.rar (863KB)  923
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-27 08:01
兄弟好样的,我顶!!!
mboma
驱动牛犊
驱动牛犊
  • 注册日期2003-02-21
  • 最后登录2010-03-11
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-27 10:10
顶顶!~ :)
chengxueyang
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2007-08-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-01 12:11
我也来顶
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2004-09-01 17:18
just learn and thanks a lot
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
6楼#
发布于:2004-09-02 04:39
呵呵...楼上...谢谢捧场呀.....

我这个人兴趣太广........
一会儿文件系统
一会儿网络接口...
现在又想研究usb了........

sign......
多而不精....
hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-13 17:23
兄弟你太强了,pfpf
hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-17 14:41
安装起来怎么工作不正常呢。。。
zzgzzzx
驱动牛犊
驱动牛犊
  • 注册日期2003-05-13
  • 最后登录2009-02-22
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2009-02-06 09:43
回 1楼(tiamo) 的帖子
兄弟,你好,我下载下来,怎么安装不了,提示未找到相应的组件,现在因为工作的需要,急需!盼回复
MSN:zzgzzzx@gmail.com
bmwbk
驱动中牛
驱动中牛
  • 注册日期2004-05-30
  • 最后登录2015-05-21
  • 粉丝1
  • 关注0
  • 积分160分
  • 威望2759点
  • 贡献值1点
  • 好评度34点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2010-05-26 18:13
顶,dddddddddddddddddd
DriverCoding Technologies, Inc. support@drivercoding.com http://www.drivercoding.com
游客

返回顶部