最近因爲公司的要求,需要看windows 下面的driver,下面就我在這幾天看的幾點體會:
開發windows 驅動首先需要兩個開發工具:visual studio 、WDK
visual studio 是micro soft 提供的IDE 開發工具,WDK 主要包含一些我們開發所用的庫文件
驅動的入口函數:DriverEntry
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath)
{
… … … …
return STATUS_SUCCESS;
}
一:操作系統是如何安裝我們的驅動程序的呢??
1、我們用2012 的visuall新建一個WDF 的kenel 模式的driver 的時候,我們會自動生成一個.inf 文件,我們安裝驅動的時候,就是通過這個文件來指導OS進行安裝的,一般安裝在了(windows\system32\drivers子目錄下)目錄下面
2、這個.inf 裏面包括哪些內容呢??
設備類型、設備型號、廠商信息、程序版本號…。
對操作系統版本和CPU類型的要求…
源文件(.sys文件)的文件名和所在位置
安裝目標子目錄
在註冊表中添加哪些內容
硬件配置信息
安全配置信息
包括以上等的一些信息
二:設備驅動的加載過程:
OS查找到該設備的硬件鍵之後,再通過硬件鍵的Service子鍵查到該設備的服務鍵(HKLM\SYSTEM \CurrentControlSet\Services的某個子目錄)通過服務鍵的ImagePath子鍵的值就可以找到該設備所對應的驅動程序。OS掃描內存,看該驅動是否已被加載,如果沒有,則立即加載該驅動,並調用該驅動的“DiverEnry”回調函數。加載完畢之後,OS調用該驅動的“AddDevice”回調函數通知驅動程序有新的設備到來。
關於鍵值的尋找我們直接進入windows 的cmd 窗口下,輸入regedit 就是打來註冊表就可以找到了,不知道的可以自己去嘗試下
三:學習windows driver 的資料
1、學習windows driver 要多多光顧msdn 網站,上面提供了很多的最新的microsoft 動態:http://msdn.microsoft.com/en-us/library/ff557573%28vs.85%29.aspx
2、還有就是要多看microsoft 提供的wdlk document 的這個文檔,這裏面提供了很多的windows driver 的函數查詢方法,通過這個手冊可以找到windows driver 裏面調用的函數的意思,這個很重要,下載的地址是:http://msdn.microsoft.com/zh-cn/library/gg487458.aspx,這個裏面也提供了很多的windows上的driver開關的前人開發的文檔,感覺還是挺不錯的
3、要使用visual studio 進行經常的操作,多看,就慢慢熟悉了
我也只是看了幾天,知道的也不多,希望對剛學windows driver 開發的人有一點給的幫助