仮想デバイスドライバ

出典: フリー百科事典『ウィキペディア(Wikipedia)』

出典: フリー百科事典『ウィキペディア(Wikipedia)』

仮想デバイスドライバ (Virtual Device Driver, VxD)とはWindows 3.xからWindows 9x系までにおいて用いられたデバイスドライバの形式である。VxDとは仮想デバイスドライバの多くがVデバイスD(例えばマウスのドライバならVMOUSEDという具合)のように名付けられていたことに由来する。

Windows/386では、仮想DOSマシン (VDM) と呼ばれる仮想マシンが実装され、DOSアプリケーションを複数同時に実行可能となった。ところが、もともとシングルタスクOSだったDOSで動くアプリケーションには、ハードウェアデバイスを独占的に使用できることを当然想定して作られているものがある。その結果、そのままでは複数のDOSアプリケーション同士でデバイスの使用要求が衝突する可能性が懸念された。

そこで、VDMに対して、実際のデバイスに代わる仮想デバイスを提供するのが仮想デバイスドライバである。VDM内で、DOSアプリケーションがデバイスだと思って操作しているものは、仮想化されたデバイスである。仮想デバイスドライバは各VDMの要求を調停して実際のハードウェアを操作する。この「仮想デバイスを提供する」という点から仮想デバイスドライバと呼ばれるのである。VDMのインターフェイスとして16ビットコードと32ビットコードの混在が必要になるため、Linear Executable形式のファイルとなっている。

なお、DOSアプリケーションや16ビットWindowsアプリケーションばかりでなく、Win32アプリケーションでもInt 21hソフトウェア割り込みなど一部の仮想デバイスの操作は可能である。手順としては、CreateFile関数でVxDオブジェクトを作成し、得られたハンドルを基にDeviceIoControl関数を呼び出す。そのような例は、以下のように散見される。

Windows NT系はVxDに対応していない。Windows 2000Windows XPではWindows Driver Model (WDM) が用いられている。Windows Vistaでは、新しくWindows Driver Foundation (WDF) も導入されている。