星期二, 3月 20, 2007

WDK

花了一些時間閱讀了WDK的文件。WDK全名是Windows Driver Kit。內部包含了一種新的驅動程式開發架構,針對現有WDM的開發方式進行修正,把很多不必要的細節隱藏起來,讓驅動程式開發者專心處理比較重要的事情,不必花一大堆時間研究如何和作業系統溝通,以解決WDM下隨便一個小Driver就要幾千行的情況。當然,WDK也可以拿來開發WDM driver,只是微軟建議寫新驅動程式還是使用新API比較好。

因為我沒有作業系統設計的基礎,所以讀起來有些地方有點陌生,比如Multi-processor safe、C++ & Driver Design這些問題我是從來沒處理過的。而有些地方不是陌生,是恐怖,比如Kernel mode driver的stack只有3個page,而且基本上「不鼓勵」C++,因為繼承、虛擬函數、RTTI、轉型、例外甚至浮點運算全都可能會爆。很多API都不能用,更甚者。如果Driver在記憶體paging關掉(什麼?paging會關掉orzorz)的時候存取不在記憶體裡的資料/方法(比如你的class會存取虛擬函數表vtpl,然後他剛好不在記憶體裡....),系統可能會整個癱瘓掉。

Web development和Driver development的世界剛好就是兩個極端,無限的記憶體,保證會動的API,模糊的型別檢查對照三頁的堆疊以及在黑暗的環境中除錯,不知道能不能適應成功?寫NDIS filter driver/miniport driver的事情看來頗有難度啊orz 全文連結

0 意見: