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ビット用)
- シンワイヤー3.0(必須)
- クライアントドライブ
- クライアントプリンターキュー
- クライアントプリンターポート
- クリップボード
- クライアント通信
- クライアントオーディオ
- ライセンスハンドラー(必須)
- TWI(必須)
- スマートカード
- アイシーエーシーティーエル(必須)
- エスエスピーアイ
- トゥウェインリーダー
- ユーザーエクスペリエンス
- Vd3d
注:
レジストリキーからこれらの値の1つ以上を削除することで、特定のクライアント機能を無効にできます。たとえば、クライアントクリップボードを削除したい場合は、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 – Generic USB virtual channel
- vdkbhook.dll – 透明なキーパススルー
- vdlfpn.dll – UDPライクなトランスポートを介したFramehawkディスプレイチャネル
- vdmmn.dll – マルチメディアサポート
- vdmrvc.dll – モバイルレシーバー仮想チャネル
- vdmtchn.dll - マルチタッチサポート
- vdscardn.dll – スマートカードサポート
- vdsens.dll – センサー仮想チャネル
- vdspl30n.dll – Client UPD
- vdsspin.dll – ケルベロス認証プロトコル
- vdtuin.dll – 透明ユーザーインターフェース
- vdtw30n.dll – クライアント シンワイヤー
- vdtwin.dll – シームレス機能
- vdtwn.dll – Twain
一部の仮想チャネルは、他のファイルにコンパイルされます。例えば、クリップボードマッピングはwfica32.exeで利用できます。
64ビット互換性
Windows版Citrix Workspaceアプリは64ビット互換です。32ビット用にコンパイルされたほとんどのバイナリと同様に、これらのクライアントファイルには、64ビット用にコンパイルされた同等のものがあります。
- brapi64.dll
- confmgr.dll
- シーティーエックスロギング.dll
- ctxmui.dll
- アイカコンフ.exe
- アイカコンフス.dll
- icafile.dll
- pnipcn64.dll
- ピーエヌエスエスオーエヌ.dll
- エスエスオーエヌコム.exe
- エスエスオーエヌスタブ.ディーエルエル
- vdkbhook64.dll
汎用USB仮想チャネル
汎用USB仮想チャネルの実装では、仮想チャネルドライバーvdgusbn.dllに加えて、2つのカーネルモードドライバーを使用します。
- ctxusbm.sys
- ctxusbr.sys
ICA仮想チャネルの仕組み
仮想チャネルは複数の方法でロードされます。シェル(サーバーの場合はWfShell、ワークステーションの場合はPicaShell)が一部の仮想チャネルをロードします。一部の仮想チャネルはWindowsサービスとしてホストされます。
シェルによってロードされる仮想チャネルモジュールの例:
- イーユーイーエム
- トゥエイン
- クリップボード
- マルチメディア
- シームレスセッション共有
- タイムゾーン
一部はカーネルモードとしてロードされます。例:
- 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デバイスリダイレクターサービス
- Citrixダイナミック仮想チャネルサービス
- Citrixエンドユーザーエクスペリエンス監視サービス
- Citrix 位置情報およびセンサー仮想チャネルサービス
- Citrix マルチタッチリダイレクトサービス
- Citrix 印刷マネージャーサービス
- Citrix スマートカードサービス
- シトリックス オーディオ リダイレクト サービス (Citrix Virtual Desktops™ のみ)
- Citrix ICA ステータスチャネルサービス
Citrix Virtual Apps のオーディオ仮想チャネルは、Windows Audio サービスを使用してホストされます。
サーバー側では、すべてのクライアント仮想チャネルがWinStationドライバー (Wdica.sys) を介してルーティングされます。クライアント側では、wfica32.exe に組み込まれている対応するWinStationドライバーがクライアント仮想チャネルをポーリングします。この図は、仮想チャネルのクライアント-サーバー接続を示しています。
仮想チャネル接続(/ja-jp/citrix-virtual-apps-desktops/2407/media/virtual-channel-connection.png)
この概要には、仮想チャネルを使用したクライアント-サーバー間のデータ交換が含まれています。
- クライアントは Citrix Virtual Apps and Desktops サーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
- サーバー側アプリケーションが起動し、仮想チャネルへのハンドルを取得し、必要に応じてチャネルに関する追加情報を照会します。
-
クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法を使用してデータを渡します。
- サーバーアプリケーションがクライアントに送信するデータを持っている場合、データはすぐにクライアントに送信されます。クライアントがデータを受信すると、WinStationドライバーはICAストリームから仮想チャネルデータを逆多重化し、すぐにクライアント仮想ドライバーに渡します。
- クライアント仮想ドライバーがサーバーに送信するデータを持っている場合、データはWinStationドライバーが次にポーリングするときに送信されます。サーバーがデータを受信すると、仮想チャネルアプリケーションがそれを読み取るまでキューに入れられます。サーバー仮想チャネルアプリケーションにデータが受信されたことを通知する方法はありません。
- サーバー仮想チャネルアプリケーションが完了すると、仮想チャネルを閉じ、割り当てられたリソースを解放します。
Virtual Channel SDK を使用して独自の仮想チャネルを作成する
注:
Citrix SDK は、Citrix 開発者ポータル https://developer.cloud.com で入手できます。
Virtual Channel SDK を使用して仮想チャネルを作成するには、中程度のプログラミング知識が必要です。この方法を使用して、クライアントとサーバー間の主要な通信パスを提供します。たとえば、セッション内のプロセスで使用するために、スキャナーなどのデバイスのクライアント側での使用を実装する場合などです。
注:
Virtual Channel SDK は、仮想チャネルのサーバー側を記述するために WFAPI SDK を必要とします。
Citrix Virtual Apps and Desktops のセキュリティが強化されたため、ICA セッションで開くことを許可する仮想チャネルを指定する必要があります。詳細については、「仮想チャネル許可リストポリシー設定」を参照してください。
ICA Client Object SDK を使用して独自の仮想チャネルを作成する
ICA Client Object (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
- ケルベロス
- マルチメディア サポート
- スマートカード サポート
- 透明キーパススルー
- ツイン
待ち時間の固有の性質、および各ホップで実行される圧縮、解凍、レンダリングなどの要因により、クライアントが経由するホップが増えるたびにパフォーマンスが影響を受ける可能性があります。影響を受ける領域は次のとおりです。
- 双方向オーディオ
- ファイル転送
- 汎用 USB リダイレクト
- シームレス
- シンワイヤー
重要:
既定では、パススルーセッションで実行されているクライアントインスタンスによってマップされたクライアントドライブは、接続しているクライアントのクライアントドライブに制限されます。
Citrix Virtual DesktopsセッションとCitrix Virtual Appsセッション間の仮想チャネルのパススルー機能
Citrixが提供するほとんどの仮想チャネルは、Citrix Virtual Desktopsサーバー上のICAセッション内でCitrix Workspaceアプリ for Windowsを使用する場合(パススルーセッションとも呼ばれます)、変更されずに動作します。
具体的には、Citrix Virtual Desktopsサーバーには、picaPassthruHookを実行するVDAフックがあります。このフックにより、クライアントはCPSサーバー上で実行されていると認識し、クライアントを従来のパススルーモードにします。
以下の従来の仮想チャネルとその機能をサポートしています。
- クライアント
- クライアントCOMポートマッピング
- クライアントドライブマッピング
- クライアントプリンターマッピング
- 汎用USB (パフォーマンス上の理由により制限あり)
- マルチメディアサポート
- スマートカードサポート
- シングルサインオン
- 透過的なキーパススルー
セキュリティとICA仮想チャネル
使用状況のセキュリティ保護は、仮想チャネルの計画、開発、および実装における重要な部分です。このドキュメント全体にわたって、セキュリティの特定の領域に関するいくつかの参照があります。
ベストプラクティス
接続時および再接続時に仮想チャネルを開きます。ログオフ時および切断時に仮想チャネルを閉じます。
仮想チャネル機能を使用するスクリプトを作成する際は、以下のガイドラインを念頭に置いてください。
仮想チャネルの命名:
最大32個の仮想チャネルを作成できます。32個のチャネルのうち17個は、特別な目的のために予約されています。
-
仮想チャネル名は7文字以内である必要があります。
-
最初の3文字はベンダー名に、次の4文字はチャネルタイプに予約されています。たとえば、CTXAUDはCitrixオーディオ仮想チャネルを表します。
仮想チャネルは、7文字(またはそれ以下)のASCII名で参照されます。ICAプロトコルの以前のバージョンでは、仮想チャネルには番号が付けられていました。現在、番号はASCII名に基づいて動的に割り当てられるため、実装が容易になっています。内部使用のみを目的として仮想チャネルコードを開発しているユーザーは、既存の仮想チャネルと競合しない任意の7文字の名前を使用できます。数字と大文字・小文字のASCIIのみを使用してください。独自の仮想チャネルを追加する際は、既存の命名規則に従ってください。いくつかの事前定義されたチャネルがあります。事前定義されたチャネルはOEM識別子CTXで始まり、Citrixのみが使用できます。
ダブルホップのサポート:
| 仮想チャネル | ダブルホップはサポートされていますか? |
|---|---|
| オーディオ | いいえ |
| ブラウザコンテンツリダイレクト | いいえ |
| CDM | はい |
| シーイーアイピー | いいえ |
| クリップボード | はい |
| コンティニュアム (MRVC) | いいえ |
| コントロール VC | はい |
| HTML5ビデオリダイレクト (v1) | はい |
| キーボード、マウス | はい |
| マルチタッチ | いいえ |
| エヌエスエーピーブイシー | いいえ |
| 印刷 | はい |
| センスブイシー | いいえ |
| スマートカード | はい |
| ツウェイン | はい |
| USB仮想チャネル | はい |
| WAYCOMデバイス -K2M (USB仮想チャネルを使用) | はい |
| Webカメラのビデオ圧縮 | はい |
| ウィンドウズ メディア リダイレクト | はい |
関連項目
- ICA仮想チャネルSDK
- Citrix Developer Network は、Citrix SDKの使用に関するすべての技術リソースとディスカッションの拠点です。このネットワークでは、SDK、サンプルコードとスクリプト、拡張機能とプラグイン、およびSDKドキュメントにアクセスできます。また、Citrix Developer Networkフォーラムも含まれており、各Citrix SDKに関する技術的なディスカッションが行われています。