WIN95下虛擬設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)開發(fā)
發(fā)布時(shí)間:2007/8/28 0:00:00 訪問次數(shù):848
摘 要: 介紹虛擬設(shè)備驅(qū)動(dòng)程序開發(fā)的基本知識(shí)以及VxDs與WIN32應(yīng)用程序通訊的幾種常用方法,并給出了用VtoolsD開發(fā)VxDs的具體實(shí)例。
關(guān)鍵詞: 虛擬設(shè)備 虛擬設(shè)備驅(qū)動(dòng)程序(VxDs)DDK VTOOLSD
Windows自面世以來,即以其強(qiáng)大而友好的圖形界面占據(jù)了操作系統(tǒng)(尤其是微機(jī)操作系統(tǒng))的霸主地位。但是由于Windows采取的保護(hù)措施屏蔽了系統(tǒng)的底層操作,對(duì)用戶而言,已不能象在DOS下一樣直接操縱使用系統(tǒng)的硬件資源如內(nèi)存、I/O端口、中斷及DMA等。這在很大程度上保證了操作系統(tǒng)的安全穩(wěn)定性能,但卻給廣大硬件及底層軟件開發(fā)人員帶來了困難。當(dāng)需要直接操縱控制具體的硬件設(shè)備時(shí),往往需要編寫設(shè)備驅(qū)動(dòng)程序。
1 VMM、VNMs和VxD
Win95操作系統(tǒng)支持多線程、多任務(wù)應(yīng)用,正是依靠虛擬機(jī)管理器VMM(Virtual Machine Manager)和虛擬設(shè)備驅(qū)動(dòng)程序VxDs(Virtual Device Drivers)一起來實(shí)現(xiàn)設(shè)備虛擬化,從而使多個(gè)應(yīng)用能夠同時(shí)執(zhí)行。設(shè)備的虛擬化是建立在虛擬機(jī)假想的基礎(chǔ)上的,假想認(rèn)為每一個(gè)VM都可以對(duì)所有的硬件設(shè)備(如內(nèi)存、I/O端口、中斷等)進(jìn)行獨(dú)占的控制,就如DOS下的應(yīng)用程序一樣。VxDs即為實(shí)現(xiàn)此假想而產(chǎn)生。
Windows中有兩種虛擬機(jī)VMs:DOS VM和System VM。每運(yùn)行一個(gè)DOS程序?qū)a(chǎn)生一個(gè)DOS VM,即不同的DOS程序運(yùn)行在各自的DOS VM中,而所有的Windows應(yīng)用程序(包括WIN16和WIN32應(yīng)用)都運(yùn)行于系統(tǒng)虛擬機(jī)中。每個(gè)VM有自己的地址空間、I/O端口、中斷向量表,VM為應(yīng)用提供內(nèi)存保護(hù)、虛擬內(nèi)存和權(quán)限檢查等,只是在WIN16中應(yīng)用程序運(yùn)行在同一地址空間中,而每個(gè)WIN312應(yīng)用程序都擁有自己的地址空間。所有的VM都接受VMM的統(tǒng)一調(diào)度管理,雖然VMM本身不是一VM,但卻充當(dāng)著激活VMs和VxDs的主要管理員(例如,VMM要處理在運(yùn)行VMs時(shí)的搶占時(shí)間片工作)。VMM是操作系統(tǒng)的核心,VMM提供單線程、搶先多任務(wù)處理。它是一個(gè)32位保護(hù)模式操作系統(tǒng),它的主要任務(wù)是產(chǎn)生、運(yùn)行、控制和終止虛擬機(jī)VMs,它讓多個(gè)VMs共享CPU的時(shí)間以使多應(yīng)用能同時(shí)運(yùn)行,其實(shí)VMM本身即是一些VxDs的集合,VMM不可重入。
VxDs在很大程序上支持Windows 3.X和Windows 9X,可以將它看作是運(yùn)行在系統(tǒng)特權(quán)級(jí)上的特殊的DLL,VxDs可直接操縱系統(tǒng)的硬件資源,甚至可以虛擬根本不存在的硬件,Windows利用虛擬設(shè)備來管理軟件及硬件設(shè)備以確保應(yīng)用程序不互相干擾。大多數(shù)虛擬設(shè)備用來管理硬件設(shè)備,有些虛擬設(shè)備也提供軟件服務(wù),而不對(duì)應(yīng)于具體的硬件設(shè)備。如1999年初猖狂蔓延的CIH病毒,之所以能破壞硬件資源(通過攻擊主板的Flash Memory,達(dá)到破壞硬件的目的),正是因?yàn)樗昧薞xD技術(shù),運(yùn)行在系統(tǒng)Ring 0級(jí)。
在Win3.X中VxDs是靜態(tài)裝載的,也就是說,當(dāng)Windows啟動(dòng)時(shí)要裝載所有要用的VxDs,它們將在Windows執(zhí)行生命期間一直處于活動(dòng)狀態(tài),Win9X(以及Windows for workgroups 3.11)在支持靜態(tài)VxDs的同時(shí)允許動(dòng)態(tài)裝載卸下VxDs。當(dāng)一應(yīng)用程序用CloseHandle()函數(shù)存取一VxD時(shí),系統(tǒng)會(huì)跟蹤每個(gè)VxD打開了多少句柄。當(dāng)應(yīng)用程序終止時(shí),它要調(diào)用函數(shù)CloseHandle()釋放這個(gè)VxD所打開的句柄。當(dāng)應(yīng)用程序終止時(shí),它要調(diào)用函數(shù)CloseHandle()釋放這個(gè)VxD的句柄,這樣即在需要時(shí)加載相應(yīng)的VxD、用完后卸下,提高了系統(tǒng)資源的利用率。當(dāng)然在進(jìn)程消亡時(shí),與其相聯(lián)的句柄會(huì)被自動(dòng)釋放。
VxD處理硬件設(shè)備時(shí)一個(gè)經(jīng)常用到的硬件資源就是硬件中斷,VxD處理硬件中斷時(shí),虛擬設(shè)備很少直接截取中斷,而是依賴虛擬可編程中斷控制器(VPICD),VPICD實(shí)現(xiàn)了物理可編程中斷控制器(PPIC)的虛擬化,VPICD發(fā)送硬件中斷信號(hào)給其他虛擬設(shè)備,并向虛擬設(shè)備提供請(qǐng)求中斷、模仿硬件中斷等服務(wù)。
2 VxD設(shè)計(jì)開發(fā)
2.1 開發(fā)工具
開發(fā)VxD需要專門的開發(fā)工具,目前應(yīng)用廣泛的工具主要有兩大類,一類是Microsoft提供的對(duì)應(yīng)于不同版本的Windows的DDK(Device Driver Kit),其中包含了開發(fā)VxD所需的各種類庫及匯編工具等。由于用DDK開發(fā)VxD大多使用匯編語言,所以開發(fā)起來相對(duì)比較困難。另一類是Vireo Software提供的Vtoolsd,VtoolsD開發(fā)包提供了對(duì)VxD編程的全線C++類庫支持,利用VtoolsD中的Quick VxD工具可以快速生成VxD的代碼框架,開發(fā)者可以在此基礎(chǔ)上根據(jù)各自的需要添加自己的代碼,使用VtoolsD可以不需要DDK。比較而言,使用VtoolsD要比使用DDK簡(jiǎn)單、快捷。另外,由于VxD運(yùn)行在Ring()級(jí),開發(fā)VxD
摘 要: 介紹虛擬設(shè)備驅(qū)動(dòng)程序開發(fā)的基本知識(shí)以及VxDs與WIN32應(yīng)用程序通訊的幾種常用方法,并給出了用VtoolsD開發(fā)VxDs的具體實(shí)例。
關(guān)鍵詞: 虛擬設(shè)備 虛擬設(shè)備驅(qū)動(dòng)程序(VxDs)DDK VTOOLSD
Windows自面世以來,即以其強(qiáng)大而友好的圖形界面占據(jù)了操作系統(tǒng)(尤其是微機(jī)操作系統(tǒng))的霸主地位。但是由于Windows采取的保護(hù)措施屏蔽了系統(tǒng)的底層操作,對(duì)用戶而言,已不能象在DOS下一樣直接操縱使用系統(tǒng)的硬件資源如內(nèi)存、I/O端口、中斷及DMA等。這在很大程度上保證了操作系統(tǒng)的安全穩(wěn)定性能,但卻給廣大硬件及底層軟件開發(fā)人員帶來了困難。當(dāng)需要直接操縱控制具體的硬件設(shè)備時(shí),往往需要編寫設(shè)備驅(qū)動(dòng)程序。
1 VMM、VNMs和VxD
Win95操作系統(tǒng)支持多線程、多任務(wù)應(yīng)用,正是依靠虛擬機(jī)管理器VMM(Virtual Machine Manager)和虛擬設(shè)備驅(qū)動(dòng)程序VxDs(Virtual Device Drivers)一起來實(shí)現(xiàn)設(shè)備虛擬化,從而使多個(gè)應(yīng)用能夠同時(shí)執(zhí)行。設(shè)備的虛擬化是建立在虛擬機(jī)假想的基礎(chǔ)上的,假想認(rèn)為每一個(gè)VM都可以對(duì)所有的硬件設(shè)備(如內(nèi)存、I/O端口、中斷等)進(jìn)行獨(dú)占的控制,就如DOS下的應(yīng)用程序一樣。VxDs即為實(shí)現(xiàn)此假想而產(chǎn)生。
Windows中有兩種虛擬機(jī)VMs:DOS VM和System VM。每運(yùn)行一個(gè)DOS程序?qū)a(chǎn)生一個(gè)DOS VM,即不同的DOS程序運(yùn)行在各自的DOS VM中,而所有的Windows應(yīng)用程序(包括WIN16和WIN32應(yīng)用)都運(yùn)行于系統(tǒng)虛擬機(jī)中。每個(gè)VM有自己的地址空間、I/O端口、中斷向量表,VM為應(yīng)用提供內(nèi)存保護(hù)、虛擬內(nèi)存和權(quán)限檢查等,只是在WIN16中應(yīng)用程序運(yùn)行在同一地址空間中,而每個(gè)WIN312應(yīng)用程序都擁有自己的地址空間。所有的VM都接受VMM的統(tǒng)一調(diào)度管理,雖然VMM本身不是一VM,但卻充當(dāng)著激活VMs和VxDs的主要管理員(例如,VMM要處理在運(yùn)行VMs時(shí)的搶占時(shí)間片工作)。VMM是操作系統(tǒng)的核心,VMM提供單線程、搶先多任務(wù)處理。它是一個(gè)32位保護(hù)模式操作系統(tǒng),它的主要任務(wù)是產(chǎn)生、運(yùn)行、控制和終止虛擬機(jī)VMs,它讓多個(gè)VMs共享CPU的時(shí)間以使多應(yīng)用能同時(shí)運(yùn)行,其實(shí)VMM本身即是一些VxDs的集合,VMM不可重入。
VxDs在很大程序上支持Windows 3.X和Windows 9X,可以將它看作是運(yùn)行在系統(tǒng)特權(quán)級(jí)上的特殊的DLL,VxDs可直接操縱系統(tǒng)的硬件資源,甚至可以虛擬根本不存在的硬件,Windows利用虛擬設(shè)備來管理軟件及硬件設(shè)備以確保應(yīng)用程序不互相干擾。大多數(shù)虛擬設(shè)備用來管理硬件設(shè)備,有些虛擬設(shè)備也提供軟件服務(wù),而不對(duì)應(yīng)于具體的硬件設(shè)備。如1999年初猖狂蔓延的CIH病毒,之所以能破壞硬件資源(通過攻擊主板的Flash Memory,達(dá)到破壞硬件的目的),正是因?yàn)樗昧薞xD技術(shù),運(yùn)行在系統(tǒng)Ring 0級(jí)。
在Win3.X中VxDs是靜態(tài)裝載的,也就是說,當(dāng)Windows啟動(dòng)時(shí)要裝載所有要用的VxDs,它們將在Windows執(zhí)行生命期間一直處于活動(dòng)狀態(tài),Win9X(以及Windows for workgroups 3.11)在支持靜態(tài)VxDs的同時(shí)允許動(dòng)態(tài)裝載卸下VxDs。當(dāng)一應(yīng)用程序用CloseHandle()函數(shù)存取一VxD時(shí),系統(tǒng)會(huì)跟蹤每個(gè)VxD打開了多少句柄。當(dāng)應(yīng)用程序終止時(shí),它要調(diào)用函數(shù)CloseHandle()釋放這個(gè)VxD所打開的句柄。當(dāng)應(yīng)用程序終止時(shí),它要調(diào)用函數(shù)CloseHandle()釋放這個(gè)VxD的句柄,這樣即在需要時(shí)加載相應(yīng)的VxD、用完后卸下,提高了系統(tǒng)資源的利用率。當(dāng)然在進(jìn)程消亡時(shí),與其相聯(lián)的句柄會(huì)被自動(dòng)釋放。
VxD處理硬件設(shè)備時(shí)一個(gè)經(jīng)常用到的硬件資源就是硬件中斷,VxD處理硬件中斷時(shí),虛擬設(shè)備很少直接截取中斷,而是依賴虛擬可編程中斷控制器(VPICD),VPICD實(shí)現(xiàn)了物理可編程中斷控制器(PPIC)的虛擬化,VPICD發(fā)送硬件中斷信號(hào)給其他虛擬設(shè)備,并向虛擬設(shè)備提供請(qǐng)求中斷、模仿硬件中斷等服務(wù)。
2 VxD設(shè)計(jì)開發(fā)
2.1 開發(fā)工具
開發(fā)VxD需要專門的開發(fā)工具,目前應(yīng)用廣泛的工具主要有兩大類,一類是Microsoft提供的對(duì)應(yīng)于不同版本的Windows的DDK(Device Driver Kit),其中包含了開發(fā)VxD所需的各種類庫及匯編工具等。由于用DDK開發(fā)VxD大多使用匯編語言,所以開發(fā)起來相對(duì)比較困難。另一類是Vireo Software提供的Vtoolsd,VtoolsD開發(fā)包提供了對(duì)VxD編程的全線C++類庫支持,利用VtoolsD中的Quick VxD工具可以快速生成VxD的代碼框架,開發(fā)者可以在此基礎(chǔ)上根據(jù)各自的需要添加自己的代碼,使用VtoolsD可以不需要DDK。比較而言,使用VtoolsD要比使用DDK簡(jiǎn)單、快捷。另外,由于VxD運(yùn)行在Ring()級(jí),開發(fā)VxD
熱門點(diǎn)擊
- HF-90H超小型跳頻短波電臺(tái)
- IrDA紅外通信在導(dǎo)航儀中的應(yīng)用
- 基于免費(fèi)軟件ns2的網(wǎng)絡(luò)仿真
- Myrinet系統(tǒng)軟件GM分析
- 擴(kuò)頻E2無線中繼器的設(shè)計(jì)
- IP電話及其在線纜調(diào)制解調(diào)系統(tǒng)上的應(yīng)用
- MHW7222A型放大器在校園CATV干線系
- WIN95下虛擬設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)開發(fā)
- Webchip智能Internet網(wǎng)絡(luò)接口芯
- 主叫號(hào)碼識(shí)別接收器HT9030及其應(yīng)用
推薦技術(shù)資料
- 超低功耗角度位置傳感器參數(shù)技術(shù)
- 四路輸出 DC/DC 降壓電源
- 降壓變換器和升降壓變換器優(yōu)特點(diǎn)
- 業(yè)界首創(chuàng)可在線編程電源模塊 m
- 可編程門陣列 (FPGA)智能 電源解決方案
- 高效先進(jìn)封裝工藝
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究