探索Windows的內部機,分析Windows各種系統機能的實現方式,並不那麼難。只要有一定的基礎就可以開始這方面的學習。以我的學習經曆來說,我覺得在開始深入學習Windows之前,最好有如下的基礎:
1. 熟練使用C語言 你至少要對C中的指標了如指掌,知道如何使用指標訪問數組。知道數組並不是僅可通過下標來訪問的。如果你看過很多遍《C缺陷和陷阱》並認為這本書很棒。那就太好了。
2. 一定的彙編基礎 瞭解基本的彙編語句,對x86架構的彙編指令有基本的瞭解。如果在學校認真學習過組合語言這門課,那麼就足夠了。在深入學習Windows時,你會遇到不少彙編代碼,很多時候你需要使用一些工具來反編譯一些東西,此時你彙編水平的高低就直接有影響了。
3. 對Windows API很熟悉 可以直接用API開發小規模的程式,瞭解Windows的訊息機制,至少要看過《Windows程式設計》(上、下),如果深入學習過《Windows核心編程》那就更好。
4. 掌握基本的資料結構 至少應該達到能很容易的用C實現一個雙向鏈表吧?基本上掌握了《資料結構》這門課,就差不多了。否則,學習中遇到的很多複雜結構,將會使你陷入雲霧裡,不知如何下手。
5. 學習過《作業系統》 對處理器調度、虛擬記憶體、I/O裝置管理有基本的認識。知道什麼是中斷,引入中斷的目的對CPU的工作方式有基本瞭解。這門課算是總的理論基礎課了。你對這門課的掌握程度將直接影響你的學習進度,尤其是你要看《Windows Internals 4th》這本書時。
6. 對物件導向有一定的瞭解
上面是一些基本的硬性要求,下面的是一些軟性要求:
1. 要經常問:為什嗎? 沒有質疑的精神,探索從何而言?
2. 要有耐心 學習是一個較長的過程,探索Windows內部時,有時確實讓人很有挫折感,這時千萬不要急躁,耐心才能保證你終有所成。
3. 要細心 這個。。。。不用說了吧?
4. 要多思考 不要把書中內容當作金科玉律。
5. 要多總結 這樣知識才能變成自己的。
當然,有一本好書,也是必須的。我推薦如下:
《Inside Windows 2000》或者《Windows Internals 4th》
《Undocumented Windows 2000 Secrets》
或許有人認為沒有必要探索Windows的內部機制,這個問題仁者見仁、智者見智,不過我相信你如果對Windows的內部機制有很深的瞭解,那麼你一定能寫出更高效、更能利用系統優勢的程式來。並且,當程式出現Bug時,我相信你更有把握解決它們。知其然,而不知其所以然的感覺,確實很糟J
上述僅是個人所見,不足之處還請多多指教。