Citrix ICA仮想チャネル

警告

レジストリエディターの編集を誤ると、深刻な問題が発生する可能性があり、Windowsの再インストールが必要になる場合もあります。レジストリエディターの誤用による障害に対して、シトリックスでは一切責任を負いません。レジストリエディターは、お客様の責任と判断の範囲でご使用ください。また、レジストリファイルのバックアップを作成してから、レジストリを編集してください。

ICA仮想チャネルとは何か

Citrix WorkspaceアプリとCitrix Virtual Apps and Desktopsサーバー間の機能および通信の大部分は、仮想チャネル経由で実行されます。仮想チャネルはCitrix Virtual Apps and Desktopsサーバーを使用したリモートコンピューティング環境に不可欠な要素です。仮想チャネルは次の用途に使用されます:

  • オーディオ
  • COMポート
  • ディスク
  • グラフィック
  • LPTポート
  • プリンター
  • スマートカード
  • サードパーティのカスタム仮想チャネル
  • ビデオ

Citrix Virtual Apps and DesktopsサーバーおよびCitrix Workspaceアプリの新しいバージョンとともに、追加機能を提供する新しい仮想チャネルが随時リリースされます。

仮想チャネル

仮想チャネルは、サーバー側のアプリケーションと通信するクライアント側の仮想ドライバーで構成されます。Citrix Virtual Apps and Desktopsには、さまざまな仮想チャネルが含まれています。提供されている各種ソフトウェア開発キット(SDK)のいずれかを使用して、ユーザーやサードパーティベンダーが独自の仮想チャネルを作成できるように設計されています。

仮想チャネルによって、さまざまなタスクを安全な方法で実行できます。たとえば、Citrix Virtual Appsサーバー上で動作するアプリケーションとクライアント側デバイス間の通信や、アプリケーションとクライアント側環境間の通信などです。

クライアント側では、仮想チャネルは仮想ドライバーに対応します。各仮想ドライバーは、特定の機能を提供します。通常の動作に必要な仮想ドライバーやオプションの仮想ドライバーもあります。仮想ドライバーは、プレゼンテーション層のプロトコルレベルで動作します。Windows Station(WinStation)プロトコル層で提供されたチャネルを多重化することにより、いつでも複数のプロトコルをアクティブにできます。

以下の機能は、次のレジストリパスのVirtualDriverレジストリ値に含まれています:

HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0

または

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0 (64ビット)

  • Thinwire3.0(必須)
  • ClientDrive
  • ClentPrinterQueue
  • ClentPrinterPort
  • Clipboard
  • ClientComm
  • ClientAudio
  • LicenseHandler(必須)
  • TWI(必須)
  • SmartCard
  • ICACTL(必須)
  • SSPI
  • TwainRdr
  • UserEXperience
  • Vd3d

注:

レジストリキーからこれらの1つまたは複数の値を削除することによって、特定のクライアント機能を無効にできます。たとえば、クライアントクリップボードを削除する場合は、Clipboardという単語を削除します。

この一覧には、クライアント仮想ドライバーファイルと対応する機能が含まれています。Citrix Virtual AppsおよびWindows向けCitrix Workspaceアプリはこれらのファイルを使用します。これらはWindowsドライバー(カーネルモード)形式ではなく、ダイナミックリンクライブラリ(ユーザーモード)形式のファイルです。ただし、汎用USB仮想チャネルで説明する汎用USBは例外です。

  • vd3dn.dll – デスクトップコンポジションのリダイレクトに使用されるDirect3D仮想チャネル
  • vdcamN.dll – 双方向オーディオ
  • vdcdm30n.dll – クライアント側ドライブのマッピング
  • vdcom30N.dll - クライアント側COMポートのマッピング
  • vdcpm30N.dll – クライアント側プリンターのマッピング
  • vdctln.dll – ICAコントロールチャネル
  • vddvc0n.dll – 動的仮想チャネル
  • vdeuemn.dll - EUEM(End User Experience Monitoring:エンドユーザー状況監視)
  • vdflash2.dll(vdflash.dll)– Flash仮想チャネル
  • vdgusbn.dll – 汎用USB仮想チャネル
  • vdkbhook.dll – 透過的なキーのパススルー
  • vdlfpn.dll – UDP経由のFramehawkディスプレイチャネル(転送など)
  • vdmmn.dll – マルチメディアのサポート
  • vdmrvc.dll – Mobile Receiver仮想チャネル
  • vdmtchn.dll - マルチタッチのサポート
  • vdscardn.dll – スマートカードのサポート
  • vdsens.dll – センサー仮想チャネル
  • vdspl30n.dll – クライアントのUPD
  • vdsspin.dll – Kerberos
  • vdtuin.dll – 透過的なUI
  • vdtw30n.dll – クライアントのThinwire
  • vdtwin.dll – シームレス
  • vdtwn.dll – Twain

一部の仮想チャネルは、他のファイルにコンパイルされています。たとえば、クリップボードマッピング機能はwfica32.exeで利用できます。

64ビット環境との互換性

Windows向けCitrix Workspaceアプリは64ビット環境との互換性があります。32ビット用にコンパイルされた大半のバイナリのように、これらのクライアントファイルには、64ビットでコンパイル版があります:

  • brapi64.dll
  • confmgr.dll
  • ctxlogging.dll
  • ctxmui.dll
  • icaconf.exe
  • icaconfs.dll
  • icafile.dll
  • pnipcn64.dll
  • pnsson.dll
  • ssoncom.exe
  • ssonstub.dll
  • vdkbhook64.dll

汎用USB仮想チャネル

汎用USB仮想チャネルの実装では、仮想チャネルドライバーvdgusbn.dllとともに2つのカーネルモードドライバーが使用されます。

  • ctxusbm.sys
  • ctxusbr.sys

ICA仮想チャネルの動作

Wfshell.exeは、サーバーにユーザーモードの仮想チャネルサポートを読み込み、PicaShell.exeはワークステーションVDAを読み込みます。たとえば、EUEM、Twain、タイムゾーン、クリップボード、マルチメディア、シームレスなセッション共有などです。

その他は、以下の例のようにカーネルモードとして読み込まれます:

  • ctxDvcs.sys – 動的仮想チャネル
  • icausbb.sys – 汎用USBリダイレクト
  • icardd.dll(従来はvdtw30.dll) – セッションごとのターミナルサーバーのグラフィックリダイレクトドライバー
  • picadm.sys – クライアント側ドライブのマッピング
  • vd3dk.sys – セッションごとのワークステーションのDirect 3D仮想チャネルおよびWDDディスプレイドライバー
  • picaser.sys – COMポートリダイレクト
  • picapar.sys – LPTポートリダイレクト

サーバー側のグラフィック仮想チャネル

XenApp 7.0およびXenDesktop7.0以降では、ctxgfx.exeはワークステーションとターミナルサーバーの両方でセッションごとにグラフィック仮想チャネルをホストします。ctxgfxは、対応するドライバー(RDSHの場合はIcardd.dll、ワークステーションの場合はvd3dk.sys)と通信するプラットフォーム固有のモジュールをホストします。

XenDesktop 3D Pro展開では、OEMグラフィックドライバーはVDAの対応するGPUにインストールされています。ctxgfxは、OEMグラフィックドライバーと通信するための専用のアダプターモジュールを読み込みます。

Windowsサービスでの専用チャネルのホスト

Citrix Virtual Apps and Desktopsサーバーでは、さまざまなチャネルがWindowsサービスとしてホストされています。これによって、サーバー上の単一セッションおよび複数セッションで複数アプリケーションの1対多の運用が可能になります。以下はこうしたサービスの例です:

  • Citrix Device Redirector Service
  • Citrix Dynamic Virtual Channel Service
  • Citrix End User Experience Monitoring Service
  • Citrix HDX MediaStream for Flash Service
  • Citrix Location and Sensor Virtual Channel Service
  • Citrix MultiTouch Redirection Service
  • Citrix Print Manager Service
  • Citrix Smartcard Service
  • Citrix Audio Redirection Service(Citrix Virtual Desktopsのみ)

Windowsオーディオサービスを使用してCitrix Virtual Appsでオーディオ仮想チャネルがホストされます。

サーバー側では、すべてのクライアント仮想チャネルはWinStationドライバー(Wdica.sys)経由でルーティングされます。クライアント側では、wfica32.exeに組み込まれた対応するWinStationドライバーがクライアント仮想チャネルをポーリングします。この図は、仮想チャネルクライアント-サーバー間接続を示しています。

仮想チャネル接続

これは、仮想チャネルを使用したクライアント-サーバー間のデータ交換処理の概要を示します。

  1. クライアントがCitrix Virtual Apps and Desktopsサーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
  2. サーバー側アプリケーションが起動し、仮想チャネルのハンドルを取得して、必要に応じて仮想チャネルに関する情報を問い合わせます。
  3. クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法でデータを渡します:

    • サーバー側アプリケーションにクライアントへの送信データがある場合は、そのデータが直ちにクライアントに送信されます。クライアントがこのデータを受け取ると、WinStationドライバーがICAストリームから仮想チャネルデータを逆多重化し、それを直ちにクライアント仮想ドライバーに渡します。
    • クライアント仮想ドライバーにサーバーへの送信データがある場合は、WinStationドライバーが次回ポーリングを行ったときにそのデータが送信されます。サーバーがこのデータを受信すると、そのデータは仮想チャネルアプリケーションが読み込むまでキューに保持されます。サーバーがデータを受け取ったことは、サーバーの仮想チャネルアプリケーションに通知されません。
  4. サーバーの仮想チャネルアプリケーションが読み取りを完了すると、アプリケーションは仮想チャネルを終了し、割り当てられているすべてのリソースが解放されます。

仮想チャネルSDKを使って独自の仮想チャネルを作成する

仮想チャネルSDKを使って仮想チャネルを作成するには、プログラミング知識が必要です。この方法で、クライアントとサーバー間の主要な通信パスを提供します。例として、クライアント側であるデバイス(スキャナーなど)をセッション内のプロセスとともに使用する機能を実装する場合などがあります。

注:

  • 仮想チャネルSDKでは、WFAPI SDKで仮想チャネルのサーバー側を作成する必要があります。

  • Citrix Virtual Apps and DesktopsおよびWindows向けCitrix Workspaceアプリではセキュリティが強化されているため、カスタム仮想チャネルのインストール時に追加手順が必要になります。

ICAクライアントオブジェクトSDKを使って独自の仮想チャネルを作成する

ICAクライアントオブジェクト(ICO)を使用した仮想チャネルの作成は、仮想チャネルSDKを使用する場合より簡単です。プログラム内でCreateChannelsメソッドを使って名前付きオブジェクトを作成します。

重要:

Citrix Receiver for Windowsバージョン10.00以降(およびWindows向けCitrix Workspaceアプリ)ではセキュリティが強化されているため、ICO仮想チャネルの作成時に追加手順が必要になります。

詳しくは、Client Object API Specification Programmer’s Guideを参照してください。

仮想チャネルのパススルー機能

Citrixから提供される仮想チャネルの大部分は、ICAセッション内またはより一般にパススルーセッションと呼ばれるセッション内でWindows向けCitrix Workspaceアプリを使用する場合でも変更なしで動作しますが、マルチホップ構成でクライアントを使用する場合はいくつか注意すべき点があります。

以下の機能は、シングルホップ構成でもマルチホップ構成でも同様に動作します:

  • クライアント側COMポートのマッピング
  • クライアント側ドライブのマッピング
  • クライアント側プリンターのマッピング
  • クライアントのUPD
  • EUEM(End User Experience Monitoring:エンドユーザー状況監視)
  • 汎用USB
  • kerberos
  • マルチメディアのサポート
  • スマートカードのサポート
  • 透過的なキーのパススルー
  • Twain

各ホップで実行される圧縮、展開、レンダリングなどの処理に本質的に伴う遅延やその他の要因により、一部の機能ではクライアントが経由するホップが増えるとパフォーマンスが影響を受ける可能性があります。以下は影響を受ける機能です:

  • 双方向オーディオ
  • ファイル転送
  • 汎用USBリダイレクト
  • シームレス
  • Thinwire

重要:

デフォルトでは、パススルーセッション内で動作するクライアントのインスタンスによってマップされるクライアントドライブは、接続元クライアントドライブに制限されます。

Citrix Virtual DesktopsセッションとCitrix Virtual Appsセッション間の仮想チャネルのパススルー機能

多くのCitrix製品は、Windows向けCitrix WorkspaceアプリがCitrix Virtual Desktopsサーバー上のICAセッション内(一般的にはパススルーセッションとして知られている)で使用されている場合、操作が変更されることなく動作する仮想チャネルを提供しています。

具体的には、Citrix Virtual Desktopsサーバー上でpicaPassthruHookを実行するVDA Hookがあります。これによって、クライアントをCPSサーバー上で動作していると信じさせ、一般的なパススルーモードへと設定します。

以下の標準的な仮想チャネルおよびその機能がサポートされています:

  • クライアント
  • クライアント側COMポートのマッピング
  • クライアント側ドライブのマッピング
  • クライアント側プリンターのマッピング
  • 汎用USB(パフォーマンスにより制限あり)
  • マルチメディアのサポート
  • スマートカードのサポート
  • SSON
  • 透過的なキーのパススルー

セキュリティとICA仮想チャネル

使用環境でのセキュリティ確保は、仮想チャネルのプランニング、開発、実装における重要な要素です。この文書には、特定分野のセキュリティに関する参照情報が記載しています。

ベストプラクティス

以下に、仮想チャネルの使用時に留意すべき点をいくつか示します:

仮想チャネルは接続時および再接続時に開き、ログオフ時および切断時に閉じます。

仮想チャネル機能を使用するスクリプトを作成する場合は、以下の指針に従います。

仮想チャネルの名前付け:

仮想チャネルは最大で32個作成できます。そのうち17個は、特定の用途に予約されています。

  • 仮想チャネルには、7文字以下の名前を付ける必要があります。

  • 最初の3文字はベンダー名、それ以降の4文字はチャネルの種類を表します。たとえば、CTXAUDはCitrixのオーディオ仮想チャネルを表します。

仮想チャネルは、ASCII文字からなる7文字以下の名前で参照されます。ICAプロトコルの以前のバージョンでは仮想チャネルに番号が付けられていましたが、現在のバージョンではASCII名に基づいて動的に番号が付けられるため、実装が簡単になっています。社内でのみ使用する独自の仮想チャネルを開発する場合、仮想チャネルには既存の仮想チャネル名と異なる任意の7文字の名前を付けることができます。仮想チャネル名では、ASCII文字の大文字、小文字、数字だけを使用できます。独自の仮想チャネルを追加する場合は、既存の命名規則に従います。あらかじめ定義されているいくつかの仮想チャネルがあります。これらの仮想チャネルはすべて、OEM識別子CTXから始まる名前を持ち、Citrixによってのみ使用されます。

ダブルホップのサポート:

仮想チャネル ダブルホップがサポートされているか。
オーディオ いいえ
Webブラウザーコンテンツのリダイレクト はい
CDM はい
CEIP いいえ
クリップボード はい
Continuum(MRVC) いいえ
コントロールVC はい
Flashリダイレクト いいえ
HTML5ビデオリダイレクト(v1) はい
キーボード、マウス はい
マルチタッチ いいえ
NSAPVC いいえ
印刷 はい
SensVC いいえ
スマートカード はい
Twain はい
USB VC はい
WAYCOMデバイス(USB VC使用のK2M) はい
Webカメラビデオ圧縮 はい
Windows Mediaリダイレクト はい

関連項目

  • ICA仮想チャネルSDK
  • Citrix Developer Networkには、Citrix SDKに関するあらゆる技術的なリソースおよび解説が集約されています。このネットワークでは、SDK、サンプルコード、スクリプト、拡張機能、プラグインや、SDKドキュメントにアクセスできます。また、Citrix Developer Networkフォーラムでは、各Citrix SDKに関する技術的な議論を参照できます。