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

來源:互聯網
上載者:User

一、VxD介紹

本文介紹VxD的作用。如果Windows 95提供的標準VxD對你的硬體或者軟體不能提供100%的相容支援,你需要為你的硬體或者軟體(包括16位和32位軟體)建立VxD。如果你想讓Windows使用者使用你的硬體或者軟體的某些新特徵,你也可以建立VxD。

本文介紹如何寫VxD,講述了建立VxD所需的結構、過程和調用,還給出了建立和測試VxD的步驟。VxD可以是靜態或者動態裝載的,下面的內容主要講述靜態VxD,不過關于格式和功能的內容兩者都適用。

二、什麼是VxD

VxD是一個管理例如硬體裝置或者已安裝軟體等系統資源的32位可執行程式,使得幾個應用程式可以同時使用這些資源。Windows通過使用VxD允許基於Windows的應用程式實現多任務。VxD在與Windows的串連工作中處理中斷,並在不影響其它應用程式的執行的情況下為特定的應用程式執行I/O操作。大多數VxD管理硬體裝置,也有一些VxD管理或代替與之相關的軟體,例如ROM BIOS常式。VxD可以包含必須在相應裝置上執行的裝置相關代碼,也可以依靠其它軟體去執行這些對裝置的操作。任何情況下,VxD都會為每一個應用程式保留該裝置狀態的記錄,保證無論何時一個應用程式繼續執行該裝置均處於正確狀態。

一些VxD僅僅管理已安裝軟體,例如MS-DOS裝置驅動程式或者TSR程式,這樣的VxD通常包含模擬這些軟體或者保護這些軟體用於正在啟動並執行應用程式的資料的代碼。VxD有時還用於提高已安裝軟體的效能,Intel相容CPU執行32位的VxD比執行16位的MS-DOS裝置驅動程式或者TSR程式有更高的效率。

三、標準VxD

Windows包括多種VxD,用於支援公用硬體裝置和可安裝軟體。在某些情況下,可能需要修改VxD以提供新的特徵或者支援非標準硬體。

Windows提供許多不準備修改,但能夠輔助支援其他VxD的VxD。例如:許多VxD使用V86記憶體管理器(V86MMGR)和虛擬可程式化插斷控制器裝置(VPICD)提供的功能儲存V86模式記憶體和允許硬體插斷要求。要取得開發VxD的協助,Windows 95裝置驅動程式開發套件(DDK)包括了大量可用裝置驅動程式的原始碼。

四、建立VxD

你可以通過修改VxD例子程式或者自己手工建立來建立VxD。你可以用組合語言來寫VxD,也可以用進階語言(例如C語言)來寫一部分VxD。

要建立一個VxD,需要以下步驟:

1、閱讀硬體手冊中關於描述這種型號硬體VxD的章節。

2、寫出所需的控制過程,VxD服務和API函數。

3、建立為VxD標識適當模組名的模組定義檔案,並引出需要的裝置描述塊。

4、彙編串連VxD。

5、用調試版Windows 95測試VxD,要獲得更多關於調試VxD的資訊,請參閱相關資料(可以用Soft-ICE調試——譯者注)。

6、為VxD和相關檔案建立安裝檔案(INF檔案),通過修改註冊資訊和向Windows的SYSTEM目錄和相關目錄拷貝檔案來安裝VxD。

7、建立最終發行軟體包。

五、你需要怎樣開始

本文假定你是一位有經驗的組合語言程式員,而且熟悉Intel相容處理器的指令集和系統結構。在某些特殊情況下,你還應該懂得下列內容:

保護模式和虛擬8086(即V86——譯者注)模式。

平坦記憶體模式

中斷和異常處理

保護和特權級

段和頁式記憶體管理以及錯誤處理

輸入和輸出保護以及錯誤處理

本文也假定你已經熟練瞭解專門硬體的特徵和相應的ROM BIOS常式以及其他可安裝軟體。

六、寫一個VxD

許多情況下,寫一個VxD用來代替一個由Windows 95提供的標準VxD。然而,大多數情況下,寫一個VxD是用來支援新硬體裝置或者軟體的,在這

種情況下,通常手工建立一個VxD比修改已經存在的VxD要容易,原因是大多數VxD都是裝置相關的。然而,已存在VxD的原始碼需要儘可能地仔

細分析,原因是它們可能包含通用的格式和結構,以及說明怎樣使用VMM和VxD服務去實現有用的功能。

寫一個VxD需要下列步驟:

1、建立包含VxD各個段,VxD聲明,裝置控制過程,處理系統控制訊息過程的基本部分和API過程的基本部分的VxD架構。

2、加入實模式初始化過程(可選)。

3、完成處理初始化訊息的過程。這些過程應該能夠初始化控制塊,分配全域記憶體以及安裝中斷、I/O捕獲和頁錯誤回調過程。

4、完成處理不同中斷和錯誤的回調過程。

5、為服務加入服務表定義和聲明(可選)。

6、完成API過程(可選)

7、完成處理系統控制訊息的過程以建立和刪除虛擬機器。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.