VxD

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

VxD是在Microsoft Windows/386Windows 3.x的386增強模式及Windows 9x中使用的裝置驅動程式模型,並在一定程度上被Novell DOS 7英語DR-DOSOpenDOS 7.01英語OpenDOS 7.01以及DR-DOS 7.02英語DR-DOS 7.02(及更高版本)多工(TASKMGR)使用。[1]VxDs可以訪問核心和所有執行中處理程序的主記憶體,以及對硬體的原始訪問。

設計[編輯]

名稱「VxD」是「虛擬xxx驅動程式」(virtual xxx driver)的縮寫,其中「xxx」是一些硬體裝置的類別。它本身源於Windows 3.x中以vxxxd.386作為檔案名稱的大多數驅動程式,例如:vjoyd.386(操縱杆)、vmm.386(主記憶體管理器)。VxD在Windows 3.x下通常使用.386副檔名,在Windows 9x下則使用.vxd。為Windows 3.x編寫的VxD可以在Windows 9x下使用,反之不可。

歷史[編輯]

在Windows出現前,DOS應用程式直接與各種硬體通訊(回應中斷,讀取和寫入裝置主記憶體等)或通過DOS裝置驅動程式通訊。由於DOS不是多工架構,每個應用程式將在執行時對硬體進行獨占和完全的控制。雖然Windows應用程式通常不直接與硬體通訊,但它是Windows驅動程式的唯一方法,並且在Windows 3.x中的真實和標準模式中仍是如此。

Windows/386及之後的系統允許多個DOS應用程式在自己的DOS虛擬機器英語Virtual DOS machine中並行執行。為在這些虛擬機器之間共享物理資源,微軟引入了虛擬裝置驅動程式。這些驅動程式通過攔截對硬體的呼叫來解決與物理資源的使用衝突相關的問題。相較於實際裝置的機器埠,它表示經由作業系統管理的「虛擬」裝置。

過時[編輯]

儘管Windows 98引入了Windows Driver Model (WDM),VxD仍可在Windows 98和Windows Me上使用。VxD不能在Windows NT及後續版本中使用。從Windows 2000開始,基於Windows NT的作業系統也使用Windows Driver Model,而Windows NT 4和更低版本必須使用專門為它們編寫的驅動程式。在Windows 9x中使用VxD驅動程式而非WDM驅動程式將導致進階ACPI 狀態(例如休眠)不可用。

VxD不應與類似的名稱混淆。NTVDM專用的「VDD」(虛擬裝置驅動程式)在Windows NT「DOS Box」下仿真直接I/O的方法NTVDM VDD作為常規的32位元使用者模式DLL執行,並且必須依靠Win32 API(或另一個WDM驅動程式)代表16位元程式類比所需的I/O。

參見[編輯]

參考資料[編輯]

  1. ^ Paul, Matthias. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. MPDOSTIP (e-book) edition 3, release 157. 1997-07-30 [2014-09-06]. (原始內容存檔於2016-11-04) (德語). 

拓展閱讀[編輯]