vxd程序設計入門_第1頁
已閱讀1頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、VxD程序設計入門VxD的初始化和結束VxD程序分為兩種:靜態(tài)的和動態(tài)的。每種的加載方法都不同,接受到的初始化和結束的控制消息也不同。靜態(tài)VxD:下列情況下,VMM加載一個靜態(tài)VxD:一個實模式常駐程序通過調用中斷2FH,1605H來調用此VxD。此VxD在注冊表中的如下位置有定義:HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDkeyStaticVxD=VxD帶路徑文件名此VxD

2、在system.ini中的[386enh]行下有定義:[386enh]section:device=VxD帶路徑文件名在開發(fā)的時候,我建議你從system.ini載入VxD程序,因為這樣如果你的VxD程序有錯而導致Windows不能啟動的話,你可以在Dos下修改system.ini,而如果你使用的注冊表載入的辦法,就無法修改了。當VMM加載你的靜態(tài)VxD程序時,你的VxD程序會按以下順序接收到三個系統(tǒng)控制消息:Sys_Critical_

3、InitVMM在轉入到保護模式后,開放中斷前發(fā)出這個控制消息。大多數(shù)VxD程序到不要用到這個消息,除非:你的VxD程序要接管一些其他VxD程序或者保護模式程序要用到的中斷。既然你處理這個消息的時候這個中斷還沒有打開,你就可以確定在你接管這個中斷的時候此中斷不會被調用。你的VxD程序為其他的VxD程序提供了一些VxD服務。例如,一些在你的VxD程序后加載的VxD程序在處理Device_Init控制消息時需要調用一些你的VxD服務,既然Sy

4、s_Critical_Init控制消息在Device_Init消息之前被發(fā)送,所以你應該在Sys_Critical_Init消息發(fā)送時初始化你的程序。如果你要對這消息進行處理,你應該盡可能快的做完初始化工作,以免太長的執(zhí)行時間導致的硬中斷丟失。(記?。褐袛噙€沒打開)Device_InitVMM在開放中斷后發(fā)送此信息。大多數(shù)VxD程序都在得到這個消息時初始化。因為中斷都開放了,所以耗時的操作也可以在這里執(zhí)行而不必怕會導致硬中斷的丟失。你可

5、以在這時進行初始化(如果你需要的話)。Init_Complete在所有的VxD程序處理完Device_Init消息之后VMM釋放初始化段(ICODE和RCODE段類)之前,VMM發(fā)出這個控制消息。只有少數(shù)幾個VxD要處理這個消息。你的VxD程序在成功地初始化后,必須將返回標志清零,反之,必須在返回之前把返回標志設為出錯信息。如果你的VxD不需要初始化,你就不必對這些消比如:即插即用設備。盡管如此,你可以從你的Win32程序中加載卸載它,

6、也可以把它看作是你的程序的一個到ring0的擴展。上一節(jié)我們提到的例子是一個靜態(tài)的VxD,你可以把它轉換成一個動態(tài)的VxD,只要在.def文件中VxD標記的后面加上關鍵字DYNAMIC。VxDFIRSTVxDDYNAMIC這就是你把一個靜態(tài)VxD轉換成一個動態(tài)的VxD所要做的一切。一個動態(tài)的VxD可以按以下的方法被加載:把它放到你的Windows目錄下的SYSTEMIOSUBSYS目錄中。在這個目錄里的VxD會被輸入輸出監(jiān)視器(ios)

7、加載。這些VxD必須支持層設備驅動。所以用這種方法加載你的動態(tài)VxD并不是一個好辦法。用VxD加載服務。VxDLDR是一個可以加載動態(tài)VxD的靜態(tài)VxD。你可以在其他VxD里面或者在16位代碼里面調用它的服務。用Win32應用程序里的CreateFileAPI。你在調用CreateFile時,你的動態(tài)VxD要以下面的格式填寫:.VxD完整路徑名例如,如果你要加載一個在當前目錄下名為FirstVxD的動態(tài)VxD,你需要做如下的工作:.da

8、taVxDNamedb“.FirstVxD.VxD“0.......datahDevicedd......code.....invokeCreateFileaddrVxDName0000FILE_FLAG__ON_CLOSE0movhDeviceeax......invokeCloseHlehDevice......FILE_FLAG__ON_CLOSE這個標志用來說明該VxD在CreateFile返回的句柄關閉時被卸載。如果你用Cre

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論