Citrix Virtual Apps and Desktops

Citrix ICA®仮想チャネル

警告:

レジストリを誤って編集すると、オペレーティングシステムの再インストールが必要になる深刻な問題が発生する可能性があります。Citrixは、レジストリエディターの誤った使用によって生じる問題を解決できることを保証できません。レジストリエディターはご自身の責任において使用してください。編集する前に、必ずレジストリをバックアップしてください。

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つ以上を削除することで、特定のクライアント機能を無効にできます。たとえば、Client Clipboardを削除したい場合は、Clipboardという単語を削除します。

このリストには、クライアント仮想ドライバーファイルとそのそれぞれの機能が含まれています。Citrix Virtual AppsおよびWindows向けCitrix Workspaceアプリはこれらのファイルを使用します。これらはダイナミックリンクライブラリ(ユーザーモード)の形式であり、汎用USB仮想チャネルで説明されている汎用USBを除き、Windowsドライバー(カーネルモード)ではありません。

  • vd3dn.dll – デスクトップコンポジションリダイレクトに使用されるDirect3D仮想チャネル
  • vdcamN.dll – 双方向オーディオ
  • vdcdm30n.dll – クライアントドライブマッピング
  • vdcom30N.dll - クライアントCOMポートマッピング
  • vdcpm30N.dll – クライアントプリンターマッピング
  • vdctln.dll – ICAコントロールチャネル
  • vddvc0n.dll – 動的仮想チャネル
  • vdeuemn.dll - エンドユーザーエクスペリエンス監視
  • vdgusbn.dll – 汎用USB仮想チャネル
  • vdkbhook.dll – 透過的なキーパススルー
  • vdlfpn.dll – UDPライクなトランスポートを介したFramehawkディスプレイチャネル
  • vdmmn.dll – マルチメディアサポート
  • vdmrvc.dll – モバイルレシーバー仮想チャネル
  • vdmtchn.dll - マルチタッチサポート
  • vdscardn.dll – スマートカードサポート
  • vdsens.dll – センサー仮想チャネル
  • vdspl30n.dll – クライアントUPD
  • vdsspin.dll – Kerberos
  • vdtuin.dll – 透過UI
  • vdtw30n.dll – クライアントThinwire
  • vdtwin.dll – シームレス
  • vdtwn.dll – Twain

一部の仮想チャネルは他のファイルにコンパイルされます。たとえば、Clipboard Mappingは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、ワークステーションの場合はPicaShell)は一部の仮想チャネルをロードします。一部の仮想チャネルはWindowsサービスとしてホストされます。

シェルによってロードされる仮想チャネルモジュールの例:

  • EUEM
  • Twain
  • Clipboard
  • Multimedia
  • Seamless session sharing
  • Time Zone

一部はカーネルモードとしてロードされます。例:

  • CtxDvcs.sys – 動的仮想チャネル
  • Icausbb.sys – 汎用USBリダイレクト
  • Picadm.sys – クライアントドライブマッピング
  • Picaser.sys – COMポートリダイレクト
  • Picapar.sys – LPTポートリダイレクト

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

ctxgfx.exeは、ワークステーションベースのセッションとターミナルサーバーベースのセッションの両方でグラフィック仮想チャネルをホストします。Ctxgfxは、対応するドライバー(RDSHの場合はIcardd.dll、ワークステーションの場合はvdod.dllおよびvidd.dll)と対話するプラットフォーム固有のモジュールをホストします。

XenDesktop® 3D Pro展開の場合、VDA上の対応するGPUにOEMグラフィックドライバーがインストールされます。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 Location and Sensor Virtual Channel Service
  • Citrix MultiTouch Redirection Service
  • Citrix Print Manager Service
  • Citrix Smartcard Service
  • Citrix Audio Redirection Service(Citrix Virtual Desktops™のみ)
  • Citrix ICA Status Channel Service

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

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

仮想チャネル接続

この概要では、仮想チャネルを使用したクライアントとサーバー間のデータ交換について説明します。

  1. クライアントはCitrix Virtual Apps and Desktopsサーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
  2. サーバー側アプリケーションが起動し、仮想チャネルへのハンドルを取得し、オプションでチャネルに関する追加情報をクエリします。
  3. クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法でデータを渡します。

    • サーバーアプリケーションがクライアントに送信するデータを持っている場合、データはすぐにクライアントに送信されます。クライアントがデータを受信すると、WinStationドライバーはICAストリームから仮想チャネルデータをデマルチプレックスし、すぐにクライアント仮想ドライバーに渡します。
    • クライアント仮想ドライバーがサーバーに送信するデータを持っている場合、データはWinStationドライバーが次にポーリングするときに送信されます。サーバーがデータを受信すると、仮想チャネルアプリケーションがそれを読み取るまでキューに入れられます。データが受信されたことをサーバー仮想チャネルアプリケーションに通知する方法はありません。
  4. サーバー仮想チャネルアプリケーションが完了すると、仮想チャネルを閉じ、割り当てられたリソースを解放します。

Virtual Channel SDKを使用した独自の仮想チャネルの作成

注:

Citrix SDKは、Citrix Developerポータル(https://developer.cloud.com)で入手できます。

Virtual Channel SDKを使用して仮想チャネルを作成するには、中級レベルのプログラミング知識が必要です。この方法を使用して、クライアントとサーバー間の主要な通信パスを提供します。たとえば、セッション内のプロセスで使用するために、スキャナーなどのデバイスのクライアント側での使用を実装する場合などです。

注:

  • Virtual Channel SDKは、仮想チャネルのサーバー側を記述するためにWFAPI SDKを必要とします。

  • Citrix Virtual Apps and Desktopsのセキュリティが強化されたため、ICAセッションで開くことが許可されている仮想チャネルを指定する必要があります。詳細については、「仮想チャネル許可リストポリシー設定」を参照してください。

ICAクライアントオブジェクトSDKを使用した独自の仮想チャネルの作成

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

重要:

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

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

Citrixが提供するほとんどの仮想チャネルは、ICAセッション内(パススルーセッションとも呼ばれます)でCitrix Workspaceアプリ for Windowsを使用する場合、変更なしで動作します。クライアントを複数のホップで使用する場合には考慮事項があります。

次の機能は、シングルホップまたはマルチホップで同じように動作します。

  • クライアントCOMポートマッピング
  • クライアントドライブマッピング
  • クライアントプリンターマッピング
  • クライアントUPD
  • エンドユーザーエクスペリエンス監視
  • 汎用USB
  • Kerberos
  • マルチメディアサポート
  • スマートカードサポート
  • 透明キーパススルー
  • Twain

レイテンシーの固有の性質、および各ホップで実行される圧縮と解凍、レンダリングなどの要因により、クライアントが経由する追加のホップごとにパフォーマンスが影響を受ける可能性があります。影響を受ける領域は次のとおりです。

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

重要:

デフォルトでは、パススルーセッションで実行されているクライアントインスタンスによってマッピングされたクライアントドライブは、接続しているクライアントのクライアントドライブに制限されます。

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

Citrixが提供するほとんどの仮想チャネルは、Citrix Virtual Desktopsサーバー上のICAセッション内(パススルーセッションとも呼ばれます)でCitrix Workspaceアプリ for Windowsを使用する場合、変更なしで動作します。

具体的には、Citrix Virtual Desktopsサーバーには、picaPassthruHookを実行するVDAフックがあります。このフックにより、クライアントはCPSサーバーで実行されていると認識し、クライアントを従来のパススルーモードにします。

次の従来の仮想チャネルとその機能をサポートしています。

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

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

仮想チャネルの計画、開発、および実装において、使用のセキュリティ確保は重要な部分です。このドキュメント全体に、セキュリティの特定の領域へのいくつかの参照があります。

ベストプラクティス

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

仮想チャネル機能を使用するスクリプトを作成する際は、次のガイドラインを念頭に置いてください。

仮想チャネルの命名:

最大32個の仮想チャネルを作成できます。32個のチャネルのうち17個は、特別な目的のために予約されています。

  • 仮想チャネル名は7文字以内である必要があります。

  • 最初の3文字はベンダー名に、次の4文字はチャネルタイプに予約されています。たとえば、CTXAUDはCitrixオーディオ仮想チャネルを表します。

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

ダブルホップサポート:

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

関連項目

  • ICA Virtual Channel SDK
  • Citrix Developer Networkは、Citrix SDKの使用に関するすべての技術リソースとディスカッションの拠点です。このネットワークでは、SDK、サンプルコードとスクリプト、拡張機能とプラグイン、およびSDKドキュメントにアクセスできます。また、各Citrix SDKに関する技術的なディスカッションが行われるCitrix Developer Networkフォーラムも含まれています。