Windows 7 解剖 - 2:「XP Mode」について

2010/06/23

先日McAfee Blogでは、新たに強化された内部構造として、新軽量カーネル「MinWin」について取り上げました。今回はWindows 7の新機能である、仮想化とリモート・アプリケーションを組み合わせた「Windows XP Mode(XPM)」について紹介したいと思います。

まずWikipediaの解説を引用して、簡単にXPMを説明します。「XPMは『Windows Virtual PC』用の仮想マシンパッケージであり、ゲストOSとしてインストール/ライセンス取得済み『Windows XP SP3』が付属しています。必要なコンポーネントが総合的にインストールされており、XPM仮想化環境で作動中のアプリケーションはホスト環境で直接動いているように見え、Windows 7本来のデスクトップやスタートメニュー、ファイル・タイプ関連の設定を利用することができます。XPMアプリケーションは仮想化Windows XP内のターミナル・サービスセッション内で動き、Windows 7ホスト環境上のクライアントとリモートデスクトップ・プロトコル(RDP)を介して通信します。仮想マシンのWindows XP上で動くアプリケーションをRDPでWindows 7ホストにリダイレクトしているため、互換性の問題も発生しません」

正常にインストールできたXPMでは、「Enhanced Mode」、「Basic Mode」、「Virtual Applications Mode」の3種類のモードが使用可能です。Windows XPのデスクトップをそのまま表示して使う「Enhanced Mode」と「Basic Mode」は、通常のVirtual PCを使う場合と、見た目は全く変わらず、Virtual PCとWindows XP仮想マシンが表示されます。

以下は、「Enhanced Mode」および「Basic Mode」のスクリーンショットです。

一方、「Virtual Applications Mode」で実行した仮想アプリケーションは、通常のWindows 7アプリケーションと同様にWindows 7のデスクトップとスタートメニューと連携します。このモードでは、Virtual PCとWindows XP仮想マシンは表示されません。実際にはWindows XP仮想マシン上で動いている二つの仮想アプリケーションである「TCPView」と「Process Explorer」が、まるでWindows 7ホスト上で動いているかのように、Windows 7ホストのデスクトップに表示されます。このモードはVMware社の「Unity」機能に似ていますが、内部の仕組みは異なります。

以下は、「Virtual Applications Mode」のスクリーンショットです。

「Virtual Applications Mode」ではWindows XP仮想マシンの表示やアクセスが不可能であるため、仮想アプリケーションの状況を調べるには「TCPView」と「Process Explorer」を使用しなければなりません。これらが、調査したい仮想アプリケーションのショートカットが対応するWindows XP仮想マシンの「All Users」プロファイル内(\Documents and Settings\All Users\Start Menu\Programs)に作られることで、アプリケーションは自動的にWindows 7ホストへ発行されます。

「TCPView」の出力結果から、Windows 7ホストとWindows XP仮想マシンのリモートデスクトップサービスは直接接続されておらず、Windows XP仮想マシン上のゲストサービス(vmsrvc.exe)を使っていることが分かります。vmsrvc.exeは、ターミナルサービス(svchost.exeから実行されるtermsrv.dll)のモニタリングしている3389番ポートに、ローカル接続します。そしてゲストサービスは、VPCBus(Hyper-VのVMBusに相当する仮想的な通信バス)経由でVirtual PCホストプロセス(vpc.exe)とやり取りを行います。なおこの通信経路はホストとゲストを結ぶ専用チャネルであり、仮想マシン間のネットワークを使用しないため、高速かつ効率的なデータ交換が実行可能です。ホスト側ではVirtual PCホストプロセスが名前付きパイプサーバーとして機能すると共に、ほかのVirtual PCコンポーネントであるVmsal.exeが同じパイプのクライアントとして機能することで、ホスト上での仮想アプリケーション起動の仲介を行います。この通信チャネルは複数のコンポーネントを組み合わせることにより、Windows 7ホストとWindows XP仮想マシンを双方向に結び、仮想マシンに対するキー入力やマウス操作で変化するグラフィックス情報を一つにまとめ、Windows 7のデスクトップに遠隔表示するよう送信します。

以下のプロセスツリー構造は、「TCPView」と「Process Explorer」がいずれもWindows XP仮想マシンのRemoteAppセッション内で動いており、rdpinit.exe(RDPシェルのログオン・プロセス)の子プロセスであることを示しています。

結論として、XPMは、マイクロソフトの仮想化ソリューションに含まれる企業向け仮想化デスクトップ管理ソフトウエア「Microsoft Enterprise Desktop Virtualization(MED-V)」の構成アプリケーションといえるでしょう。同社の仮想化ソリューションには、「Server Virtualization(Hyper-V)」や「Application Virtualization(App-V)」(旧名称「SoftGrid」)、また「Windows Vista」のフォルダーリダイレクト/ユーザー・ローミング機能を実現する「Profile Virtualization」などがあります。

関連記事

※本ページの内容はMcAfee Blogの抄訳です。
原文:Windows 7 - XP Mode