檔案系統驅動編程基礎篇之1——我們的準備

來源:互聯網
上載者:User

一、導言

在四個月漫長的征戰後,終於在國慶節的今天完成了基礎篇系列。本文寫作的初衷很簡單,就是給平靜的池水中加入一點波瀾,如果大家在閱讀後感受到一點生氣,激起探索未知的熱情,筆者也會感到由衷的喜悅。

本系列文章為業餘編程愛好者而寫,僅僅作為初學者的一個借鑒,真正的精華存在於參考資料*中。知識的積累將經曆從薄到厚,再從厚到薄的反覆過程,為了打下牢固的基礎,請讀者務必在閱讀本文的基礎上花費必要的時間完成參考資料。

二、基本架構

為了保證效能,彙編與c成為作業系統編寫的慣用語言,Windows家族的前輩都不例外,唯獨Vista那龐大的身軀,讓人不禁疑惑微軟究竟如何才能誕下比恐龍還大的怪物。與此相反,WinPE作為維護型作業系統可以被一個32M的隨身碟所容納。不管外觀上的諸多差異,功能上的強弱區別,我們所關心的是它們的共性——即作業系統的核心。與作業系統密不可分的檔案系統,就成為我們研究核心的一條途徑。

Windows採用了基於物件模型(object-based model)的設計方式,各功能劃分為不同的組件,兩幅常見的架構圖如下:

我們把入口選定為Win32子系統(Win32 Subsystem),它是我們接觸最多,也最熟悉的一個子系統。硬體抽象層(HAL)及其以下部分目前不在我們關注的焦點內,我們將精力集中在系統執行層和核心層,它們具體的功能請參看資料2的第一章。

核心模式下除了屈指可數的幾個函數,一切都將是全新的——全新的思想、概念、模型、結構、函數,跨越的幅度不亞於從c語言編程遷移到c++語言,用c語言的思維來學習c++必然會產生阻礙。令人欣慰的是,這裡沒有特色之流的術語,絕大部分內容都符合人的記憶規律。你將很快掌握裝置對象、IRP、IO堆棧等基礎結構,同時你還發現以前很難記憶的PEB、TEB、_ETHREAD等一系列無詳細文檔甚至無文檔結構都已有跡可尋,如果你足夠勤奮,甚至會在一年左右的時間後就可以閱讀天書般的防火牆源碼。

讓我們先來完成必要的準備工作吧。

三、調試環境的構建

在使用者模式下編程,除了編譯器幾乎可以不需要其他協助工具輔助。想查看輸出?直接ShowMessage即可,核心模式下,如果不希望摔得筋折骨斷後才有所醒悟,你該在入門前就選好幾件寶物——注意它既不是聞西同志的西瓜刀,更不是單車鏈。

Microsoft Visual Studio 200x + Windows IFS Kit and DDK xxx + Compuware DriverStudio 3.x + VAssistX xxx + VMware

如果記憶力超強的讀者,也可以選擇C++Builder、Delphi + 外掛程式的形式,有些網站正在致力於推廣這方面的技術,對於新手而言,還是用原裝貨為上策。Windows IFS Kit and DDK是收費軟體,電驢上有試用版,依照資料6的說明完成安裝,注意選上xp和2000部分;Compuware公司已經改行不做DriverStudio,幸好出家前支援了vs2005,安裝完成後,根據資料5打上VisualStudio 2005 Integration fix補丁;VAssistX有試用限制,不巧有人發現不修改代碼而使用trial-reset_32清Armadillo殼,可以恢複試用時間,安全而可靠。VassistX增強了編譯器的文法提示、程式碼搜尋功能,大大提高了千行規模子程式的閱讀與書寫效率。VMware虛擬機器用於減少重啟的煩惱,提高調試的效率。

經過一陣忙碌後,一個已經設定好的編譯器出現了:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.