1、irp
irp(i/o request package),即輸入輸出請求包。上層應用程式與底層驅動程式通訊時,應用程式會發出i/o請求,作業系統將i/o請求轉化為相應的irp資料。不同型別的irp會傳遞給不同的派遣函式處理。
2、派遣函式
驅動中 處理irp請求的函式。處理完了之後,必須通過iocompleterequest結束irp。這樣,發起i/o請求的win32 api就會返回。
3、rendfile內部操作過程
(1)readfile呼叫ntdll中的ntreadfile,其中readfile是win32 api,而ntreadfile函式是native api.
(2)ntdll中的ntreadfile進入到核心模式,並呼叫系統服務中 的ntreadfile函式。
(3)系統服務函式ntreadfile建立irp_mj_write型別的irp,然後將這個irp傳送到驅動程式的派遣函式中。ntreadfile會去等待乙個時間,這是當前執行緒進入等待狀態。
(4)在派遣函式中,會將這個irp結束。這是會設定剛才等待的那個事件。睡眠的執行緒恢復。
在讀取很大的檔案時,readfile不會立即返回,而是等待一段時間。
Windows驅動開發
以ddk2600版本為例 無論是ddk驅動還是pnp驅動,都需要撰寫makefile檔案.使用nmake 來驅動執行.系統目錄預設有makefile檔案,裡面包括有安裝目錄下makefile.def檔案,這個裡面包含檔案makefile.inc,及每個即編譯檔案所在目錄的dirs檔案 makefil...
windows驅動開發
作者 豬頭三 個人 序言 很多人都對驅動開發有興趣,但往往找不到正確的學習方式.當然這跟驅動開發的本土化資 料少有關係.大多學的驅動開發資料都以英文為主,這樣讓很多驅動初學者很頭疼.本人從 事驅動開發時間不長也不短,大概也就3 4年時間.大多數人都認為會驅動開發的都是牛人,高手之類的.其實高手,牛人...
Windows驅動開發(一)
筆者學習驅動程式設計是從兩本書入門的。它們分別是 寒江獨釣 核心安全程式設計 和 windows驅動開發技術詳解 兩本書分別從不同的角度介紹了驅動程式的製作方法。在我理解,驅動程式可分為兩類三種 第一類 傳統型驅動 傳統型驅動的特點就是所有的irp都需要自己去處理,自己實現針對不同irp的派發函式。...