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/2507-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ビット用)
- シンワイヤー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 – 汎用ユーエスビー仮想チャネル
- vdkbhook.dll – 透過的なキーパススルー
- vdlfpn.dll – UDPライクなトランスポートを介したFramehawkディスプレイチャネル
- vdmmn.dll – マルチメディアサポート
- vdmrvc.dll – モバイルレシーバー仮想チャネル
- vdmtchn.dll - マルチタッチサポート
- vdscardn.dll – スマートカードサポート
- vdsens.dll – センサー仮想チャネル
- vdspl30n.dll – クライアントのユーザープロファイルディスク
- vdsspin.dll – ケルベロス認証プロトコル
- vdtuin.dll – 透過型ユーザーインターフェース
- vdtw30n.dll – クライアント シンワイヤー
- vdtwin.dll はシームレスです
- vdtwn.dll はツインです
一部の仮想チャネルは、他のファイルにコンパイルされています。たとえば、クリップボードマッピングはwfica32.exeで利用できます。
64ビット互換性
Windows向けCitrix Workspaceアプリは64ビット互換です。32ビット用にコンパイルされたほとんどのバイナリと同様に、これらのクライアントファイルには64ビット用にコンパイルされた同等のものがあります。
- brapi64.dll
- confmgr.dll
- コンテキストロギング.dll
- コンテキストエムユーアイ.dll
- アイシーエーコンフ.exe
- アイシーエーコンフス.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サービスとしてホストされます。
シェルによってロードされる仮想チャネルモジュールの例:
- イーユーイーエム
- トウェイン
- クリップボード
- マルチメディア
- シームレスセッション共有
- タイムゾーン
一部はカーネルモードとしてロードされます。例:
- 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 ICAステータスチャネルサービス
Citrix Virtual Apps のオーディオ仮想チャネルは、Windows Audio サービスを使用してホストされます。
サーバー側では、すべてのクライアント仮想チャネルはWinStationドライバー (Wdica.sys) を介してルーティングされます。クライアント側では、wfica32.exe に組み込まれている対応するWinStationドライバーが、クライアント仮想チャネルをポーリングします。この図は、仮想チャネルのクライアント-サーバー接続を示しています。
仮想チャネル接続の図(/ja-jp/citrix-virtual-apps-desktops/2507-ltsr/media/virtual-channel-connection.png)
この概要では、仮想チャネルを使用したクライアント-サーバー間のデータ交換について説明します。
- クライアントはCitrix Virtual Apps and Desktopsサーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
- サーバー側アプリケーションが起動し、仮想チャネルへのハンドルを取得し、必要に応じて、チャネルに関する追加情報を照会します。
-
クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法を使用してデータを渡します。
- サーバーアプリケーションがクライアントに送信するデータを持っている場合、データはすぐにクライアントに送信されます。クライアントがデータを受信すると、WinStationドライバーはICAストリームから仮想チャネルデータを逆多重化し、すぐにクライアント仮想ドライバーに渡します。
- クライアント仮想ドライバーがサーバーに送信するデータを持っている場合、データは、WinStationドライバーが次にポーリングするときに送信されます。サーバーがデータを受信すると、仮想チャネルアプリケーションが読み取るまでキューに入れられます。データが受信されたことをサーバー仮想チャネルアプリケーションに通知する方法はありません。
- サーバー仮想チャネルアプリケーションが完了すると、仮想チャネルを閉じ、割り当てられたリソースを解放します。
Virtual Channel SDK を使用して独自の仮想チャネルを作成する
注:
Citrix SDKは、https://developer.cloud.com のCitrix開発者ポータルで入手可能です。
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 DesktopセッションとCitrix Virtual Appセッション間の仮想チャネルのパススルー機能
Citrixが提供するほとんどの仮想チャネルは、Citrix Virtual Desktopsサーバー上のICAセッション内でWindows向けCitrix Workspaceアプリを使用する場合(パススルーセッションとも呼ばれます)に、変更されずに動作します。
具体的には、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仮想チャネルを使用) | はい |
| ウェブカメラビデオ圧縮 | はい |
| ウィンドウズメディア リダイレクト | はい |
関連項目
- ICA仮想チャネルSDK
- Citrix Developer Network は、Citrix SDK の使用に関するすべての技術リソースとディスカッションの拠点です。このネットワークでは、SDK、サンプルコードとスクリプト、拡張機能とプラグイン、および SDK ドキュメントにアクセスできます。また、Citrix Developer Network フォーラムも含まれており、各 Citrix SDK に関する技術的なディスカッションが行われています。