使用Windows虛擬設備驅動程式(VxD)之2

來源:互聯網
上載者:User

八、VxD初始化

VMM初始化一個VxD時做下列工作:

1、裝載實模式初始化段並調用實模式初始化過程。該過程可以完成阻止裝載VxD,阻止啟動Windows,指定裝置執行個體資料和在記憶體中選擇頁面給

裝置專用的工作。

2、裝載VxD其它段到32位平坦記憶體模式的保護模式記憶體,並丟棄實模式初始化段。

3、發送Sys_Critical_Init訊息到裝置控制過程。禁止硬體中斷,所以VxD應該儘可能地用較少的時間完成自身初始化。

4、發送Device_Init訊息到裝置控制過程。允許硬體中斷,所以必須準備讓VxD管理來自裝置的中斷。

5、發送Init_Complete訊息到裝置控制過程。

6、丟棄初始化代碼和資料區段,釋放其它被使用的記憶體。VxD不能在處理完Init_Complete訊息以後試圖存取這些段中的過程和資料。

在初始化過程中的任何時刻,VxD都可以設定進位標誌返回到VMM以阻止裝載VxD。部分VMM服務,例如初始化資訊服務只在初始化過程中有效。

九、實模式初始化

任何靜態裝置驅動程式都可以提供實模式初始化過程以在Windows切換到保護模式之前執行初始化任務。VMM裝載VxD時調用該過程,該過程檢查

有關的Windows環境,包括註冊表和初始設定檔案中的有關設定以判斷是否應該裝載該VxD。該過程也可以給Windows返回資訊以為每個虛擬機器的實

例指定實體記憶體頁保留給裝置專用和資料項目地址。要獲得關於實模式初始化的更多資訊,請參閱相關資料。

十、VxD服務

VxD可以提供服務功能(函數或過程——譯者注)給VMM和其它VxD使用。這些服務讓其它VxD可以直接存取該VxD的特徵,允許測試和修改該VxD的功能和能力。

VxD不能和Windows DLL一樣引出函數,代之的是VMM通過INT 20H提供到VxD服務的動態連結,該中斷處理過程使用服務編號判斷支援服務的

VxD,該中斷處理過程也使用服務編號查詢在VxD服務表中的服務地址。

下面的內容講述怎樣在VxD中定義服務,聲明VxD服務表以及從一個VxD向另一個VxD中引入服務。

1、定義服務

VxD使用BeginProc和EndProc宏以及Service和Async_Service選項定義服務。宏標記服務過程代碼的開始和結束,選項標識該過程是一個服務。

下面的執行個體給出了VSAMPLED_Get_Version服務的定義:

BeginProc VSAMPLED_Get_Version, Service

mov ax, 030Ah

clc

ret

EndProc VSAMPLED_Get_Version

Async_Service選項標識該服務可以被非同步呼叫,也就是說在處理中斷的過程中調用。非同步服務必須是可重新進入的,而且不能調用VMM和不是非同步服

務的VxD服務。

VMM和標準VxD對服務使用兩種呼叫慣例:基於寄存器的呼叫慣例和基於32位C語言的呼叫慣例。這兩種呼叫慣例有不同的服務名格式,參數傳遞

和傳回值方法以及寄存器保護。

對於基於寄存器的服務,服務名不應該以底線(_)開頭,所有的參數通過寄存器傳遞,結果也通過寄存器返回,服務保護所有不顯式用於返回

值的寄存器。

對於基於C語言的服務,服務名必須以底線(_)開頭,所有的參數通過堆棧中的32位值傳遞,結果(如果存在)通過EAX寄存器(32位值)

或者EAX和EDX寄存器(64位值)返回,服務保護EBX、ES、FS和GS寄存器以及ESI和EDI寄存器,只有標誌寄存器和EAX、EBX、EDX寄存器被修改。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.