Ⅰ 如何構造一個簡單的USB過濾驅動程序
一、基本原理抄 我們知道,WDM(和KDM)是分層的,在構造設備棧時,IO管理器可以使一個設備對象附加到另外一個初始驅動程序創建的設備對象上。與初始設備對象相關的驅動程序決定的IRP,也將被發送到附加的設備對象相關的驅動程序上。
Ⅱ 怎麼用代碼實現WDM文件過濾驅動安裝
為了讓這個驅動被系統載入,必須創建一個inf文件。由於是使用現成的例子,因此這一步也可以省下來。直接右鍵點擊例子中的inf文件,在彈出的菜單中選擇「安裝」即可。
這里要注意的是,inf中的StartType參數,它可以控制驅動被載入的方式:
SERVICE_AUTO_START (2) 安全模式下不會自動載入 SERVICE_BOOT_START (0) 在系統安全模式下啟動時 驅動也會自動載入
SERVICE_DEMAND_START(3) 則驅動不會自動載入
因為是測試,我使用SERVICE_DEMAND_START,即由手動載入驅動。例子是miniFilter驅動,因此可以在命令提示行中用「fltmc load 驅動名稱」來載入,相應的卸載是「fltmc unload」。如果是其它驅動,則用"net start 驅動名稱"來載入,相應的卸載是"net stop 驅動名稱"。注意驅動名稱不是文件名,而是inf中[Settings]的ServiceName值。驅動要發布時,也可以通過CreateService & StartService API來動態安裝。
Inf文件的寫法,可以參考例子,或者拿現成的改一改。下面的是摘自驅動開發網的
XiangXiangRen整理的Inf文件,改起來比較方便,謝謝XiangXiangRen