摘要: 介紹了Windows NT4.0內(nèi)核模式設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)中的一般性過(guò)程。通過(guò)提供一個(gè)最小化驅(qū)動(dòng)程序的核心代碼,解釋各組成部分的結(jié)構(gòu)功能和使用方法。在實(shí)踐中,結(jié)合自身的開(kāi)發(fā)需要,可編寫出具有實(shí)用價(jià)值的驅(qū)動(dòng)程序。
關(guān)鍵詞:Win32子系統(tǒng) 設(shè)備驅(qū)動(dòng) 系統(tǒng)注冊(cè)表 I/O請(qǐng)求包
Windows NT 以其安全、穩(wěn)定及界面友好等特性逐漸成為工業(yè)控制領(lǐng)域的前臺(tái)操作系統(tǒng)。面對(duì)工業(yè)控制中大量采用的串/并行通信及總線控制等技術(shù),要求用戶不斷開(kāi)發(fā)出滿足自身需要的硬件設(shè)備,同時(shí)又要求用戶應(yīng)用程序與這些硬件設(shè)備進(jìn)行通信,發(fā)送控制命令,讀取狀態(tài)信息等等。Windows NT出于安全性、穩(wěn)定性等考慮,不允許用戶應(yīng)用程序?qū)ξ锢碛布M(jìn)行直接訪問(wèn),這就需要使用設(shè)備驅(qū)動(dòng)程序跨越操作系統(tǒng)邊界對(duì)物理硬件進(jìn)行操作,并向上提供客戶應(yīng)用程序控制接口以供調(diào)用。
1 分層結(jié)構(gòu)與設(shè)備驅(qū)動(dòng)程序
Windows NT分層結(jié)構(gòu)(如圖1所示)包括運(yùn)行于用戶模式及內(nèi)核模式的各種部件,設(shè)備驅(qū)動(dòng)程序在圖1的左下角,處于內(nèi)核模式下I/O管理器之中。
2 驅(qū)動(dòng)程序工作方式
內(nèi)核模式驅(qū)動(dòng)程序與應(yīng)用程序之間的最大差別之一是驅(qū)動(dòng)程序的控制結(jié)構(gòu)。內(nèi)核模式驅(qū)動(dòng)程序沒(méi)有main或WinMain,而是由I/O管理器根據(jù)需要調(diào)用一個(gè)驅(qū)動(dòng)程序例程:
· 驅(qū)動(dòng)程序被裝入時(shí);
· 驅(qū)動(dòng)程序被卸出或系統(tǒng)關(guān)閉時(shí);
· 用戶程序發(fā)出I/O系統(tǒng)服務(wù)調(diào)用時(shí);
· 共享硬件資源對(duì)驅(qū)動(dòng)程序可用時(shí);
· 設(shè)備操作過(guò)程中的任何時(shí)候。
3 初始化過(guò)程
3.1 系統(tǒng)注冊(cè)表中有關(guān)設(shè)備驅(qū)動(dòng)程序的項(xiàng)目是系統(tǒng)加載設(shè)備驅(qū)動(dòng)程序的入口點(diǎn)
系統(tǒng)注冊(cè)表中用于系統(tǒng)加載設(shè)備驅(qū)動(dòng)程序的項(xiàng)目如下:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDriverName] 大功率電感廠家 |大電流電感工廠