windows驅動開發學習筆記

2021-07-06 04:11:10 字數 1630 閱讀 5265

編寫程式,是一件什麼一樣的事情?

是一件很奇妙的事情嗎?

它可以帶來什麼?

它能帶給人什麼感受?

它能帶給人創造和控制的慾望嗎?

每當乙個人在閱讀或者寫一段**時,腦子裡會怎麼想的?

腦子會想象那段**怎樣完成預定邏輯。

對於寫**或者維護**的人來說,體現能力的地方不在**本身,而是對下層開發平台的理解和駕馭能力。

怎麼樣子算熟練掌握windows驅動開發?

windows驅動是個什麼?

是什麼**?

一般的鍵盤滑鼠顯示器是怎麼驅動的?

驅動的英文名字是driver。

驅動是項重要和關鍵的**,在核心環境中執行,負責處理使用者程式請求。

作業系統在核心中提供了許多介面,使用者程式沒法使用,

但driver可以用那些介面來實現自己功能,和硬體互動。

比如u盤,在使用者程式,到read\write檔案就結束了,但核心還有許多事情要做。驅動程式是nt核心的補充。

核心很重要也很脆弱,能實現功能,也會出現藍屏。

所以不出藍屏首先,然後功能。

驅動安裝需對號入座,乙個裝置驅動對應乙個裝置id。

這個id是寫在裝置韌體裡的,作業系統根據這個id尋找匹配的驅動進行安裝。

可以檢視inf檔案,看看它是否支援自己的裝置,

可以通過裝置管理器檢視系統中裝置id,兩者匹配才行。

有兩個不同的windows,乙個是基於dos的win9x,

另乙個是參考dec的vms開發出的nt系統。

怎麼才能熟悉windows驅動開發呢?

要入門,得從基礎來,把基本功弄好。

先熟悉wdm/wdf的基本框架,寫一些簡單的驅動,

練習基礎,培養直覺和興趣。

wdf是驅動開發框架,它封裝了wdm,它實現在wdf1000.sys中。

基於wdf驅動開發,就是基於wdf框架,

根據框架定義好的要求來有序填充程式設計師自己的**。

wdf**和程式設計師的**結合在一起就是乙份完整的驅動**。

弄明白裡面的關係後,你可以更好的學習怎麼進行windows驅動開發。

搞清楚硬體驅動系統之間的關係,

所有連線到主機的外設由驅動程式驅動。

系統會列舉並嘗試安裝所有連線到系統匯流排(acpi/pci)上的裝置。

通過執行命令devmgmt.msc啟動裝置管理器來檢視裝置樹。

當乙個驅動**寫好了,除錯驅動**也很重要,

除錯為了驗證驅動的正確正常執行,同時為解決一些問題而做的工作。

針對問題現象,聯絡**邏輯來分析定位問題,思考用更好的邏輯解決問題。

怎麼根據硬體進行驅動開發?

核心跟硬體怎麼互動的?

核心可以讀寫裝置暫存器、讀寫裝置記憶體。

系統可以通過讀寫裝置暫存器的方式獲取裝置資訊、對裝置配置,

通過讀寫裝置記憶體進行io通訊。

對硬體操作是底層軟體的活兒,

系統實現大部分底層操作,提供介面給上層核心模組呼叫。

核心驅動會用到系統提供的這些介面。

驅動會有多個或多層,層層封裝,

使用者自定義的驅動模組要盡量簡潔清晰。

windows驅動開發學習

序言 很多人都對驅動開發有興趣,但往往找不到正確的學習方式.當然這跟驅動開發的本土化資 料少有關係.大多學的驅動開發資料都以英文為主,這樣讓很多驅動初學者很頭疼.本人從 事驅動開發時間不長也不短,大概也就3 4年時間.大多數人都認為會驅動開發的都是牛人,高手之類的.其實高手,牛人不是這樣定義的.我們...

Windows驅動開發學習3

驅動的 api 函式 1.rtlinitunicodestring 作用 初始化裝置名稱指標。void rtlinitunicodestring in out unicode string destinationstring,in pcwstr sourcestring 2.iocreatedevi...

Windows驅動開發

以ddk2600版本為例 無論是ddk驅動還是pnp驅動,都需要撰寫makefile檔案.使用nmake 來驅動執行.系統目錄預設有makefile檔案,裡面包括有安裝目錄下makefile.def檔案,這個裡面包含檔案makefile.inc,及每個即編譯檔案所在目錄的dirs檔案 makefil...