Citrix ICA仮想チャネル
警告:
レジストリエディターの使用を誤ると、深刻な問題が発生する可能性があり、オペレーティングシステムの再インストールが必要になる場合もあります。レジストリエディターの誤用による障害に対して、シトリックスでは一切責任を負いません。レジストリエディターは、お客様の責任と判断の範囲でご使用ください。また、レジストリファイルのバックアップを作成してから、レジストリを編集してください。
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
- クリップボード
- 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:エンドユーザー状況監視)
- 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、ワークステーションの場合PicaShell)によって読み込まれる仮想チャネルがあります。一部の仮想チャネルはWindowsサービスとしてホストされています。
以下は、シェルによって読み込まれる仮想チャネルモジュールの例です:
- EUEM
- Twain
- クリップボード
- マルチメディア
- シームレスなセッション共有
- タイムゾーン
以下の例のように、カーネルモードで読み込まれる場合もあります:
- ctxDvcs.sys – 動的仮想チャネル
- icausbb.sys – 汎用USBリダイレクト
- picadm.sys – クライアント側ドライブのマッピング
- picaser.sys – COMポートリダイレクト
- picapar.sys – LPTポートリダイレクト
サーバー側のグラフィック仮想チャネル
XenApp 7.0およびXenDesktop7.0以降では、ctxgfx.exe
はワークステーションとターミナルサーバーの両方でセッションごとにグラフィック仮想チャネルをホストします。Ctxgfx
は、対応するドライバー(RDSHの場合はIcardd.dll
、ワークステーションの場合はvdod.dll
とvidd.dll
)と通信するプラットフォーム固有のモジュールをホストします。
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 EUEM (End User Experience Monitoring:エンドユーザー状況監視)
- 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ドライバーがクライアント仮想チャネルをポーリングします。この図は、仮想チャネルクライアント-サーバー間接続を示しています。
これは、仮想チャネルを使用したクライアント-サーバー間のデータ交換処理の概要を示します。
- クライアントがCitrix Virtual Apps and Desktopsサーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
- サーバー側アプリケーションが起動し、仮想チャネルのハンドルを取得して、必要に応じて仮想チャネルに関する情報を問い合わせます。
-
クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法でデータを渡します:
- サーバー側アプリケーションにクライアントへの送信データがある場合は、そのデータが直ちにクライアントに送信されます。クライアントがこのデータを受け取ると、WinStationドライバーがICAストリームから仮想チャネルデータを逆多重化し、それを直ちにクライアント仮想ドライバーに渡します。
- クライアント仮想ドライバーにサーバーへの送信データがある場合は、WinStationドライバーが次回ポーリングを行ったときにそのデータが送信されます。サーバーがこのデータを受信すると、そのデータは仮想チャネルアプリケーションが読み込むまでキューに保持されます。サーバーがデータを受け取ったことは、サーバーの仮想チャネルアプリケーションに通知されません。
- サーバーの仮想チャネルアプリケーションが読み取りを完了すると、アプリケーションは仮想チャネルを終了し、割り当てられているすべてのリソースが解放されます。
仮想チャネルSDKを使って独自の仮想チャネルを作成する
注:
Citrix SDKは、Citrix Developerポータル(https://developer.cloud.com)で入手できます。
仮想チャネルSDKを使って仮想チャネルを作成するには、プログラミング知識が必要です。この方法で、クライアントとサーバー間の主要な通信パスを提供します。例として、クライアント側であるデバイス(スキャナーなど)をセッション内のプロセスとともに使用する機能を実装する場合などがあります。
注:
仮想チャネルSDKでは、WFAPI SDKで仮想チャネルのサーバー側を作成する必要があります。
Citrix Virtual Apps and Desktopsのセキュリティが強化されているため、ICAセッションで開くことができる仮想チャネルを指定する必要があります。詳しくは、「仮想チャネルの許可リストポリシー設定」を参照してください。
ICAクライアントオブジェクトSDKを使って独自の仮想チャネルを作成する
ICAクライアントオブジェクト(ICO)を使用した仮想チャネルの作成は、仮想チャネルSDKを使用する場合より簡単です。プログラム内でCreateChannelsメソッドを使って名前付きオブジェクトを作成し、ICOを使用します。
重要:
Citrix Receiver for Windowsバージョン10.00以降(およびWindows向けCitrix Workspaceアプリ)ではセキュリティが強化されているため、ICO仮想チャネルの作成時に追加手順が必要になります。
仮想チャネルのパススルー機能
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 | はい |
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に関する技術的な議論を参照できます。