VxD是在Microsoft Windows/386、Windows 3.x的386增強模式及Windows 9x中使用的裝置驅動程式模型,並在一定程度上被Novell DOS 7、OpenDOS 7.01以及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虛擬機器中並行執行。為在這些虛擬機器之間共享物理資源,微軟引入了虛擬裝置驅動程式。這些驅動程式通過攔截對硬體的呼叫來解決與物理資源的使用衝突相關的問題。相較於實際裝置的機器埠,它表示經由作業系統管理的「虛擬」裝置。
過時
儘管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。
參見
- VXD (CONFIG.SYS directive)
- Windows Driver Model(WDM)
- Windows 9x的架構
參考資料
拓展閱讀
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.