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アプリ製品の新しいバージョンでは、より多くの機能を提供するために、新しい仮想チャネルがリリースされることがあります。
仮想チャネル(/ja-jp/citrix-virtual-apps-desktops/2203-ltsr/media/ica-virtual-channels-1.png)
仮想チャネルは、サーバー側アプリケーションと通信するクライアント側仮想ドライバーで構成されています。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 (このコンポーネントは必須です)
- クライアントドライブ
- クライアントプリンターキュー
- クライアントプリンターポート
- クリップボード
- クライアント通信
- クライアントオーディオ
- LicenseHandler (このコンポーネントは必須です)
- TWI (必須)
- スマートカード
- ICACTL (必須コンポーネント)
- エスエスピーアイ
- トゥエインリーダー
- ユーザーエクスペリエンス
- Vd3d
注記:
レジストリキーからこれらの値の1つ以上を削除することで、特定のクライアント機能を無効にできます。たとえば、クライアントクリップボードを削除したい場合は、Clipboardという単語を削除します。
このリストには、クライアント仮想ドライバーファイルとそれぞれの機能が含まれています。Citrix Virtual AppsおよびWindows向けCitrix Workspaceアプリはこれらのファイルを使用します。これらはダイナミックリンクライブラリ(ユーザーモード)の形式であり、Generic USB仮想チャネルで説明されているGeneric 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 – クライアント ユーピーディー
- vdsspin.dll – Kerberos
- vdtuin.dll – 透過型ユーザーインターフェース
- vdtw30n.dll – クライアント シンワイヤー
- vdtwin.dll – Seamless
- vdtwn.dll – トゥエインインターフェース
一部の仮想チャネルは、他のファイルにコンパイルされています。たとえば、クリップボードマッピングはwfica32.exeで利用できます。
64ビット互換性
Windows向けCitrix Workspaceアプリは64ビット互換です。32ビット用にコンパイルされたほとんどのバイナリと同様に、これらのクライアントファイルには64ビット用にコンパイルされた同等のものがあります。
- brapi64.dll
- コンフィグマネージャー.dll
- CTXロギング.dll
- ctxmui.dll
- アイカコンフ.exe
- アイカコンフス.dll
- icafile.dll
- pnipcn64.dll
- pnsson.dll
- ソンコム.exe
- ソンスタブ.dll
- ブイディーケービーフック64.ディーエルエル
汎用USB仮想チャネル
汎用USB仮想チャネルの実装では、仮想チャネルドライバーvdgusbn.dllに加えて、2つのカーネルモードドライバーを使用します。
- シーティーユーエスビーエム.シス
- ctxusbr.sys
ICA仮想チャネルの仕組み
仮想チャネルは複数の方法でロードされます。シェル(サーバーの場合はWfShell、ワークステーションの場合はPicaShell)は一部の仮想チャネルをロードします。一部の仮想チャネルはWindowsサービスとしてホストされます。
シェルによってロードされる仮想チャネルモジュールの例:
- イーユーイーエム
- トゥエイン
- クリップボード
- マルチメディア
- シームレスセッション共有
- タイムゾーン
一部はカーネルモードとしてロードされます。例:
- CtxDvcs.sys – 動的仮想チャネル
- Icausbb.sys – 汎用USBデバイスのリダイレクト機能
- Picadm.sys – クライアントドライブマッピング
- Picaser.sys – シリアルポートリダイレクト
- Picapar.sys – LPTポートのリダイレクト
サーバー側のグラフィック仮想チャネル
XenApp 7.0およびXenDesktop 7.0以降、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 Virtual Apps のオーディオ仮想チャネルは、Windows Audio サービスを使用してホストされます。
サーバー側では、すべてのクライアント仮想チャネルは WinStation ドライバー (Wdica.sys) を介してルーティングされます。クライアント側では、wfica32.exe に組み込まれている対応する WinStation ドライバーがクライアント仮想チャネルをポーリングします。この図は、仮想チャネルのクライアント-サーバー接続を示しています。
仮想チャネル接続(/ja-jp/citrix-virtual-apps-desktops/2203-ltsr/media/virtual-channel-connection.png)
この概要には、仮想チャネルを使用したクライアント-サーバー間のデータ交換が含まれています。
- クライアントは Citrix Virtual Apps and Desktops サーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
- サーバー側アプリケーションが起動し、仮想チャネルへのハンドルを取得し、オプションでチャネルに関する追加情報を照会します。
-
クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法を使用してデータを渡します。
- サーバーアプリケーションがクライアントに送信するデータを持っている場合、データはすぐにクライアントに送信されます。クライアントがデータを受信すると、WinStation ドライバーは ICA ストリームから仮想チャネルデータを逆多重化し、すぐにクライアント仮想ドライバーに渡します。
- クライアント仮想ドライバーがサーバーに送信するデータを持っている場合、データは WinStation ドライバーが次にポーリングするときに送信されます。サーバーがデータを受信すると、仮想チャネルアプリケーションが読み取るまでキューに入れられます。サーバー仮想チャネルアプリケーションにデータが受信されたことを通知する方法はありません。
- サーバー仮想チャネルアプリケーションが完了すると、仮想チャネルを閉じ、割り当てられたリソースを解放します。
仮想チャネルSDKを使用して独自の仮想チャネルを作成する
注:
シトリックスSDKは、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以降(およびCitrix Workspaceアプリ for Windows)でセキュリティが強化されたため、ICO仮想チャネルを作成する際には追加の手順を実行する必要があります。
仮想チャネルのパススルー機能
Citrixが提供するほとんどの仮想チャネルは、ICAセッション内(パススルーセッションとも呼ばれます)でCitrix Workspaceアプリ for Windowsを使用する場合、変更なしで動作します。クライアントを複数のホップで使用する場合には考慮事項があります。
次の機能は、シングルホップまたはマルチホップで同じように動作します。
- クライアントCOMポートマッピング
- クライアントドライブマッピング
- クライアントプリンターマッピング
- クライアントUPD
- エンドユーザーエクスペリエンス監視
- 汎用USB
- ケルベロス
- マルチメディアサポート
- スマートカードサポート
- 透過的なキーパススルー
- トゥエイン
レイテンシーの固有の性質、および圧縮と解凍、各ホップで実行されるレンダリングなどの要因により、クライアントが経由するホップが増えるごとにパフォーマンスが影響を受ける可能性があります。影響を受ける領域は次のとおりです。
- 双方向オーディオ
- ファイル転送
- 汎用USBリダイレクト
- シームレス
- シンワイヤー
重要:
デフォルトでは、パススルーセッションで実行されているクライアントのインスタンスによってマップされたクライアントドライブは、接続しているクライアントのクライアントドライブに制限されます。
Citrix Virtual DesktopセッションとCitrix Virtual Appセッション間の仮想チャネルのパススルー機能
Citrix Virtual Desktopsサーバー上のICAセッション内でCitrix Workspaceアプリ for Windowsを使用する場合(パススルーセッションとも呼ばれます)、Citrixが提供するほとんどの仮想チャネルは変更されずに動作します。
具体的には、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 | はい |
| シーイーアイピー | いいえ |
| クリップボード | はい |
| コンティニュアム (エムアールブイシー) | いいえ |
| 制御仮想チャネル | はい |
| HTML5ビデオリダイレクト (v1) | はい |
| キーボード、マウス | はい |
| マルチタッチ | いいえ |
| エヌエスエーピーブイシー | いいえ |
| 印刷 | はい |
| センスブイシー | いいえ |
| スマートカード | はい |
| トウェイン | はい |
| ユーエスビー ブイシー | はい |
| WAYCOMデバイス - USB VCを使用するK2M | はい |
| Webカメラビデオ圧縮 | はい |
| ウィンドウズ メディア リダイレクト | はい |
関連項目
- ICA仮想チャネルSDK
- Citrix Developer Networkは、Citrix SDKの使用に関するすべての技術リソースとディスカッションの拠点です。このネットワークでは、SDK、サンプルコードとスクリプト、拡張機能とプラグイン、およびSDKドキュメントにアクセスできます。また、Citrix Developer Networkフォーラムも含まれており、各Citrix SDKに関する技術的なディスカッションが行われています。