TightVNC (1.3.10) serverのプロパティには、もともと「Enable direct access to display driver's mirror screen」という項目があって、とくに何もしなくともディスプレイドライバのミラースクリーン機能を活用して、描画内容が直接取得できるようになっているようです。
ところがミラースクリーン機能は、全てのディスプレイドライバでサポートされているわけではないらしく、ZoneScreenの仮想ディスプレイドライバもそのひとつだったようです。
それもそのはず、ZoneScreenの仮想ドライバは、もともとZoneScreenという「VNCとは全く互換性のない」リモートディスプレイ機能を実現するためのドライバで、ZoneScreen自身が画面をチャプチャできればミラースクリーン機能をサポートする必要はまったくありません。
ですがZoneScreen自体はWindowsのみしかサポートせず、X-Windowクライアントへ飛ばすことは出来ない。
ので、ZoneScreenの仮想ドライバを「ダミーの」仮想画面としてインストールし、実際の画面転送はTightVNCを使っていました。
これでもとりあえず使えます。そもそもミラースクリーン機能が有効であるかどうか、普段は気づくことが無いのでまったく気にしていませんでした。
ただ何となく、CPU全体に負荷がかかっているような気がしてはいましたが。
このことに気づいたのは、たまたまネットワークの調子が悪く、VNCの動作確認のためにサーバログを取るようにしたら、こんなメッセージが出ていたため。
----
VideoDriver.cpp: No 'Mirage Driver' or 'DemoForge Mirage Driver' found.
VideoDriver.cpp: vncVideoDriver::CheckVersion: can't create DC on ""
vncDesktop.cpp: ******** PLEASE INSTALL NEWER VERSION OF MIRAGE DRIVER! ********
----
ん?何か問題があるのだとしても、DemoForge Mirage Driverなんて聞いたことがないぞ、と調べたところ「Mirage Driver for TightVNC」なんてものが。
DemoForgeは、もともとデモや教育向けに、画面の動画キャプチャ(独自フォーマット/Flash/AVI)のソフトウエアを提供している会社で、DFMirage Driverはその副産物のようです。
面白いのは、DFMirage DriverのページでTightVNCを例として紹介していること。
これを知った上で、あらためて「tightvnc dfmirage」で検索してみると、ちゃんと日本語で書かれた紹介記事もあったようです。
DFMirageドライバをインストールし、あらためてTightVNCを起動すると、上記のエラーメッセージも無事消えて、代わりに
----
VideoDriver.cpp: Found display device "Mirage Driver": "\\.\DISPLAY7"
VideoDriver.cpp: DevNum:5
Name:\\.\DISPLAY7
String:Mirage Driver
----
と表示されるようになりました。
負荷も若干下がって快適になった…かな?
追記:
ZoneScreenのほうでもTightVNCサーバに独自のパッチを当てたものを提供しているようです(2010年10月)。
但しZoneScreen 1.1以降、WinXP以降の対応なので、Win2kでZoneScreen 1.0.7を未だに使っているウチでは使えないので試していません。
|