pppoe驅動雙版本…source code included

來源:互聯網
上載者:User

[原創]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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.