新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 模塊化的設備驅動程序設計方法

        模塊化的設備驅動程序設計方法

        作者: 時間:2012-05-15 來源:網絡 收藏

        NTSTATUSDriverEntry(INPDRIVER_OBJECT

        }

        4應用程序與驅動程序之間的同步

        一般在程序中用中斷服務例程來訪問和操作硬件設備,它利用應用程序傳遞過來的數據進行中斷操作。為了保證外界設備正常工作,在驅動程序中一定要有一個緩沖區來存儲一定數量的數據。例如在數控加工中,讓機床切一個圓,必須保證機床在切這個圓時的動作連續,如果沒有一個緩沖區存儲一定數量的數據,就有可能出現驅動程序等待應用程序傳遞數據,從而造成機床的暫時停頓。然而如果在驅動程序中開一個緩沖區來存儲數據,也會產生一個問題:應用程序傳遞的數據與這些數據的執行之間有一定的時間差,導致應用程序不知道設備正在進行什么操作。為了解決這個問題,也就是要保證應用程序與驅動程序之間的同步。有了這個同步信號,可以讓應用程序了解設備正在進行何種操作。解決同步問題可以用Event對象。

        具體:在驅動程序中創建內核的Event對象,但是又因為驅動程序和應用程序分別運行于核心層和用戶層,因此他們之間要看到對方定義的事件相對比較困難,必須要有一個專門的事件名存放空間。這里有一個命名可以使用戶層和核心層都可看到Event對象,事件命名應為L\BaseNamedObjects\xxx形式。

        在核心層用IoCreateNotificationEvent創建一個Event對象,用KeSetEvent把Event對象設置為Signal。用戶層用OpenEvent創建Event對象,這個Event對象名一定要與在核心層創建的Event對象名一樣,然后用戶層用WaitForSingleObject等待Event對象的狀態為Signal,一旦Event對象的狀態為Signal,讓應用程序訪問一次驅動程序,從而可以讓應用程序知道設備正在進行的操作,保證應用程序與驅動程序之間的同步。

        5程序的安裝

        程序的安裝可以分為:手動安裝、非標準驅動程序的最終用戶安裝和標準驅動程序的最終用戶安裝。這里主要介紹前兩種

        5.1手動安裝

        主要用于驅動程序的開發過程中,主要執行以下的基本步驟:

        (1)把編譯好的*.sys文件拷貝到系統的%SystemRoot%\system32\drivers目錄下。

        (2)在注冊表中加入合適的項:

        (3)使用控制面板中的Device應用小程序啟動驅動程序。

        5.2非標準驅動程序的最終用戶安裝

        主要是使用下面一些Win32API調用建立自己的安裝程序:

        (1)CopyFile把驅動程序文件(包括一些自己定義的參數文件)拷貝到指定的目錄。

        (2)RegCreateKeyEx和RegSetValueEx在Registry中建立驅動程序需要的鍵和值。

        (3)CreateService和StartService創建和啟動驅動程序。

        (4)OpenService和DeleteService來卸載驅動程序。

        6結論

        通過的方法介紹了驅動程序的寫法、驅動程序的開發環境和安裝,給讀者一個清晰的驅動程序的開發過程,有助于初學者快速抓住驅動程序開發的框架。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乌苏市| 游戏| 咸宁市| 成安县| 泸水县| 堆龙德庆县| 平远县| 高邮市| 菏泽市| 大冶市| 莲花县| 汝州市| 逊克县| 井研县| 石门县| 文登市| 锦州市| 白山市| 鹿泉市| 犍为县| 定南县| 德惠市| 台湾省| 合江县| 龙江县| 昭通市| 潜山县| 高雄市| 靖宇县| 叙永县| 公主岭市| 白银市| 阳谷县| 桃园县| 怀安县| 新乡县| 宁陵县| 巴东县| 济源市| 江永县| 江陵县|