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。

參見

參考資料

拓展閱讀

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.