亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

羅云彬VxD教程--虛擬設備驅動程序初步

2019-11-17 05:34:09
字體:
來源:轉載
供稿:網友
在本教程里,我假定讀者對諸如虛8086模式,調頁,GDT,LDT,IDT之類的INTEL 80x86保護模式的操作比較熟悉。假如你不了解這些,那你要先在 http://developer.intel.com/design/pentium/manuals/閱讀INTEL的文檔。

內容:

Windows95是一個運行在最高級特權,第0層級別的多線程操作系統。所有的應用程序都運行在最低級特權,第3層級別上。這樣就限制了應用程序對系統的操作。它們不能使用cpu特權指令,不能直接訪問I/O端口,等等。你對gdi32,kernal32和user32這三個大的系統組件一定很熟悉。你肯定會認為這樣重要的代碼段一定是在第0層級別下運行的。但是實際上,它們和其他的應用程序一樣,是在第三層級別下運行的。這就是說它們并不比Windows計算器,或者掃雷游戲有更多的權限。系統的控制實權把握在虛擬級治理器(VMM) 和虛擬設備驅動程序(VxD)手中。
這一切都是由dos引起的。在Window 3.x的時代,在市場上有很多成功的dos軟件。Windows 3.x必須同時運行普通的Windows程序和dos程序,否則,它就會失去市場。
這個局面是很難處理的,因為dos程序和Windows程序有本質的不同。dos程序認為它們擁有系統的一切:鍵盤,cpu,內存,硬盤等等。dos程序不知道怎樣和其他程序合作,而Windows程序(從那時候起)是可靠的多任務合作系統。也就是每個Windows程序都必須通過GetMessage或PeekMessage來和其他程序進行交流。
解決辦法就是,在一個8086虛擬機上運行所有的dos程序,而在另一個叫做系統虛擬機的虛擬機上運行其他所有的Windows程序。Windows負責把cpu運算時間輪流的分給每個虛擬機。這樣,在Windows 3.x里。Windows程序之間用的是合作多任務,而虛擬機之間用的是優先級多任務。
什么是一個虛擬機?一個虛擬機是被軟件創建的一個假象。一個虛擬機和在它上面運行的程序交互,就像這個程序是在真正的機器上運行一樣。這樣,一個程序不知道也不關心自己是否是在虛擬機上運行。只要虛擬機準確的像一個真的機器一樣響應程序,我們就可以把它當成一個真正的機器。
你可以把虛擬機這種實機器和軟件之間的接口看作一種API。這種不平常的API由中斷,BIOS調用和I/O端口組成。假如Windows能夠以某種方法完美的模擬這個API,那么在虛擬機上運行的程序就會表現的和它們在實際器上運行時完全一樣。
這就是為什么會出現VMM和VxD的原因。為了協調和監視虛擬機(VMs),Windows需要一個程序來分配任務。這個程序就是虛擬機治理器(VMM)。

虛擬機治理器

VMM是一個32位的保護模式程序。它的主要任務是建立和維護一個支持虛擬機的框架。例如,它要創建,運行和結束一個虛擬機。VMM是眾多的系統VxD程序之一,它被放在你的系統目錄下的VMM32.VxD文件中。VMM本身是一個VxD程序,但它被當作一個監視其他VxD程序的監視器。讓我們來看一下Windows95的啟動次序:
  1. 加載io.sys。
  2. 執行config.sys和autoexec.bat。
  3. 調用win.com。
  4. win.com運行VMM32.VxD,VMM32.VxD實際上是個簡單的dos的exe文件。
  5. VMM32.VxD用xms驅動程序把VMM加載到擴展內存。
  6. VMM初始化自身及其它的默認VxD。
  7. VMM把機器轉入到保護模式并創建系統虛擬機。
  8. 最后被加載的虛擬外殼設備在系統虛擬機上通過運行krnl386.exe來啟動Windows。
  9. krnl386.exe加載所有的文件,最后是Windows95外殼。
正如你所看到的,VMM是第一個被加載到內存的VxD程序。它創建系統虛擬機并初始化其他的VxD程序。它也為這些VxD程序提供許多服務。
VMM和VxD的操作模式和真正的程序不同。在大多數時候,它們是潛伏的。當應用程序在系統中運行時,這些VxD程序沒有被激活。當某些需要它們處理的中斷/錯誤/事件發生時,它們才被喚醒。
VMM是不可重入的。這意味著VxD程序必須使它們的訪問和VMM服務同步。在有些情況下調用VMM服務是不安全的,比如VMM正在處理一個硬件中斷。在這段時間內,VMM是不答應重進入的。作為一個VxD編寫者,你必須對你的所作所為極度的小心。記住,你是在最高特權級別,第0層級別,假如你代碼有錯的話,誰也管不到。

虛擬設備驅動程序

虛擬設備驅動程序被簡稱為VxD。x 代表各種設備的名字,如虛擬鍵盤驅動程序(vkd),虛擬鼠標驅動程序(vmd)等等。VxD程序是硬件成功初始化的途徑。記得dos程序認為它們擁有系統的一切,當它們在虛擬機中運行時,Windows需要給它們一個實機器的替身。VxD程序就是這些替身。VxD程序通常虛擬一些硬件設備,所以,例如當一個dos程序認為它在同鍵盤通訊時,實際是虛擬鍵盤驅動程序在和dos程序通訊。一個VxD程序通常控制真正的硬件設備并對該設備在各個虛擬機之間的共享進行治理。

盡管如此,并不是說每個VxD程序必須和一個硬件設備相連。雖然VxD程序是用來虛擬硬件設備的,但是我們也可以把VxD程序看作是在第0級別的dll。例如,假如你需要做一些只有在第0級別才能做的工作,你就可以編一個VxD程序來為你完成這個工作。這樣,由于此VxD程序并沒有虛擬任何設備,你就可以把它僅僅看作是你的程序的擴展。
在我們更深入的討論VxD和創建我們的VxD程序之前,讓我先說一些有關于VxD的事情。
  • VxD程序是Windows 9x特有的,它在Windows NT下不能運行。所以假如你的程序是依靠VxD的,它就不能被移植到Windows NT平臺上去。
  • VxD是系統中權力最大的實體。由于它們可以對系統作任何事情,所以它們是極度危險的。一個惡意的/錯誤的VxD程序可以毀掉整個系統。對于惡意的/錯誤的VxD程序沒有任何的保護措施。
  • 通常的,不用VxD也有很多辦法能達到你的目的。在采用VxD的解決辦法之前一定要三思。假如用其他的可以在第三層級別實施的辦法,就使用這個辦法。
Windows 95下有兩種VxD:
  • 靜態VxD
  • 動態VxD
靜態VxD是那些從系統啟動就被加載,在系統關閉之前一直存在于內存中的VxD程序。這種VxD可以追溯至Windows 3.x的時代。動態VxD時只有Windows 9x下才有的。動態VxD程序可以在需要的時候被加載/卸載。這些程序大多數都是用來控制設置治理器和輸入輸出監視器加載的即插即用設備的。你可以在你的win32應用程序里加載或卸載動態VxD程序。

VxD程序之間的通訊

VxD程序,包括VMM,通過以下三種途徑在相互之間進行通訊:
  • 控制消息
  • 服務API
  • 回調

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲a级在线观看| 日韩精品视频在线免费观看| 国产精品夫妻激情| 国产精品免费久久久久久| 亚洲品质视频自拍网| 欧美老肥婆性猛交视频| 在线精品国产成人综合| 亚洲天堂av电影| 国产精品成人观看视频国产奇米| 亚洲欧美一区二区三区四区| 欧美日韩第一页| 国产免费久久av| 欧美精品在线视频观看| 日本欧美一级片| 久久免费国产视频| 亚洲欧美中文字幕在线一区| 欧美视频在线观看 亚洲欧| 日韩视频免费观看| 欧美成人在线网站| 日韩精品在线电影| 久久久电影免费观看完整版| 日本aⅴ大伊香蕉精品视频| 欧美日韩免费在线| 欧美一级高清免费| 日本老师69xxx| 激情成人在线视频| 在线成人中文字幕| 91国产精品视频在线| 亚洲精品国产综合区久久久久久久| 国a精品视频大全| 97碰碰碰免费色视频| 国产成人精品电影久久久| 国外视频精品毛片| 欧美日韩国产色| 97香蕉久久夜色精品国产| 久久视频国产精品免费视频在线| 亚洲剧情一区二区| 国产激情综合五月久久| 精品久久久久久久久久国产| 久久久国产精彩视频美女艺术照福利| 久久99国产精品久久久久久久久| 久久国产精品首页| 欧美精品在线网站| 久久久国产视频91| 一区二区三区四区视频| 日韩中文综合网| 日韩在线视频一区| 日韩精品在线观看一区| 亚洲精品少妇网址| 国产大片精品免费永久看nba| 国产精品a久久久久久| 日本视频久久久| xxx成人少妇69| 日韩av在线免费观看一区| 亚洲另类xxxx| 午夜精品久久久久久久白皮肤| 久久久精品一区二区| 91精品国产色综合| 精品无人区乱码1区2区3区在线| 91精品国产91久久久久久最新| 国产精品永久免费观看| 色久欧美在线视频观看| 色综合久久天天综线观看| 国产丝袜精品视频| 国产精品久久97| 精品久久久久久中文字幕大豆网| 国产成人高潮免费观看精品| 久久久久久久久久久人体| 亚洲激情视频在线观看| 在线观看欧美www| 国产亚洲精品综合一区91| 国内精品久久久久久| 都市激情亚洲色图| 国产+成+人+亚洲欧洲| 精品国产91久久久久久老师| 亚洲成色777777女色窝| 欧美剧在线观看| 久久精品人人做人人爽| 中文字幕亚洲综合久久筱田步美| 欧美精品电影在线| 亚洲曰本av电影| 久久影院在线观看| 精品香蕉一区二区三区| 欧洲日本亚洲国产区| 国产精品电影久久久久电影网| 高潮白浆女日韩av免费看| 日韩精品在线免费播放| 自拍偷拍亚洲区| 亚洲色在线视频| 国产精品一区二区久久久| 国产精品视频区1| 久久成人这里只有精品| 欧美日韩中文字幕在线视频| 欧美日韩一区二区三区在线免费观看| 欧美亚洲另类在线| 久久精品福利视频| 日韩男女性生活视频| 欧美性色19p| 国产精品视频永久免费播放| 亚洲精品视频网上网址在线观看| 欧美成人sm免费视频| 精品性高朝久久久久久久| 97色在线视频观看| 97久久久免费福利网址| 国产精品日韩av| 一色桃子一区二区| 日韩av在线免播放器| 亚洲第一视频在线观看| 亚洲精品日韩久久久| 色偷偷亚洲男人天堂| 久久精品久久久久| 欧美一区二区视频97| 国产精品日韩专区| 国产精品日韩电影| 亚洲精品影视在线观看| 国产精品福利片| 国产精品高潮呻吟久久av野狼| 国产精品国语对白| 亚洲理论片在线观看| 国产午夜精品视频免费不卡69堂| 国产精品海角社区在线观看| 欧美成人免费全部观看天天性色| 久久久噜久噜久久综合| 精品久久久久久久久国产字幕| 日韩av在线网页| 久久天天躁狠狠躁夜夜躁2014| 日本在线精品视频| 国内精品视频一区| 亚洲天堂视频在线观看| 热re91久久精品国99热蜜臀| 国产精品久在线观看| 最新91在线视频| 2021久久精品国产99国产精品| 久久久久一本一区二区青青蜜月| 日韩视频亚洲视频| 成人日韩av在线| 国内免费精品永久在线视频| 国产免费观看久久黄| 日韩视频免费在线| 亚洲欧美日韩中文在线| 日韩精品在线第一页| 国外色69视频在线观看| 国产免费一区二区三区在线能观看| 久久人人看视频| 不卡av在线播放| 久久6免费高清热精品| 国产在线精品成人一区二区三区| 国产精品久久久久久久av电影| 欧美精品videossex88| 欧美野外猛男的大粗鳮| 一本一本久久a久久精品综合小说| 国产精品午夜国产小视频| 日韩小视频在线| 久久久亚洲福利精品午夜| 国产精品久久久久久av下载红粉| 蜜臀久久99精品久久久久久宅男| 亚洲图中文字幕| 在线播放日韩欧美| 欧美日韩性生活视频| 亚洲欧美国产视频| 国产午夜精品全部视频播放| 国产精品三级美女白浆呻吟| 91手机视频在线观看| 中文欧美日本在线资源|