Citrix ICA® 仮想チャネル
警告:
レジストリを誤って編集すると、オペレーティングシステムの再インストールが必要になるような深刻な問題が発生する可能性があります。レジストリエディターの誤った使用によって生じる問題が解決されることを、Citrixは保証できません。レジストリエディターは自己責任で使用してください。編集する前に必ずレジストリをバックアップしてください。
ICA仮想チャネルとは何か?
Citrix Workspace™アプリとCitrix DaaS(旧Citrix Virtual Apps and Desktops™サービス)サーバー間の機能と通信の大部分は、仮想チャネルを介して行われます。仮想チャネルは、Citrix DaaSサーバーでのリモートコンピューティングエクスペリエンスに不可欠な要素です。仮想チャネルは、次の目的で使用されます。
-
オーディオ
-
COMポート
-
ディスク
-
グラフィック
-
LPTポート
-
プリンター
-
スマートカード
-
サードパーティ製のカスタム仮想チャネル
-
ビデオ
新しい仮想チャネルは、より多くの機能を提供するために、Citrix DaaS™およびCitrix Workspaceアプリ製品とともにリリースされることがあります。
仮想チャネルは、サーバー側のアプリケーションと通信するクライアント側の仮想ドライバーで構成されています。Citrix DaaSには、さまざまな仮想チャネルが同梱されています。これらは、提供されているソフトウェア開発キット (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アプリは、これらのファイルを使用します。これらは、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 – クライアントUPD
-
vdsspin.dll – ケルベロス
-
vdtuin.dll – 透過UI
-
vdtw30n.dll – クライアント Thinwire
-
vdtwin.dll – シームレス
-
vdtwn.dll – ツイン
一部の仮想チャネルは、他のファイルにコンパイルされています。たとえば、クリップボードマッピングは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
-
トゥエイン
-
クリップボード
-
マルチメディア
-
シームレスセッション共有
-
タイムゾーン
カーネルモードとしてロードされるものもあります。例:
-
CtxDvcs.sys – ダイナミック仮想チャネル
-
Icausbb.sys – 汎用USBリダイレクト
-
Picadm.sys – クライアントドライブマッピング
-
Picaser.sys – COMポートリダイレクト
-
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 DaaSサーバーでは、さまざまなチャネルがWindowsサービスとしてホストされます。このようなホスティングは、セッション内の複数のアプリケーションとサーバー上の複数のセッションに対して、1対多のセマンティクスを提供します。このようなサービスの例を次に示します。
-
Citrixデバイスリダイレクターサービス
-
Citrixダイナミック仮想チャネルサービス
-
Citrixエンドユーザーエクスペリエンス監視サービス
-
Citrix 位置情報およびセンサー仮想チャネルサービス
-
Citrix マルチタッチリダイレクトサービス
-
Citrix 印刷マネージャーサービス
-
Citrix スマートカードサービス
-
Citrix オーディオリダイレクトサービス (Citrix Virtual Desktops™ のみ)
-
Citrix ICA ステータスチャネルサービス
Citrix Virtual Apps のオーディオ仮想チャネルは、Windows Audio サービスを使用してホストされます。
サーバー側では、すべてのクライアント仮想チャネルは WinStation ドライバー (Wdica.sys) を介してルーティングされます。クライアント側では、wfica32.exe に組み込まれている対応する WinStation ドライバーがクライアント仮想チャネルをポーリングします。この画像は、仮想チャネルのクライアント-サーバー接続を示しています。
仮想チャネル接続の図(/en-us/citrix-daas/media/virtual-channel-connection.png)
この概要には、仮想チャネルを使用したクライアント-サーバー間のデータ交換が含まれています。
-
クライアントは Citrix DaaS サーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
-
サーバー側アプリケーションが起動し、仮想チャネルへのハンドルを取得し、オプションでチャネルに関する追加情報を照会します。
-
クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法を使用してデータを渡します。
-
サーバーアプリケーションがクライアントに送信するデータを持っている場合、データは直ちにクライアントに送信されます。クライアントがデータを受信すると、WinStation ドライバーは ICA ストリームから仮想チャネルデータを逆多重化し、直ちにクライアント仮想ドライバーに渡します。
-
クライアント仮想ドライバーがサーバーに送信するデータを持っている場合、データは WinStation ドライバーが次にポーリングしたときに送信されます。サーバーがデータを受信すると、仮想チャネルアプリケーションが読み取るまでキューに入れられます。データが受信されたことをサーバー仮想チャネルアプリケーションに通知する方法はありません。
-
-
サーバー仮想チャネルアプリケーションが完了すると、仮想チャネルを閉じ、割り当てられたすべてのリソースを解放します。
Virtual Channel SDKを使用した独自の仮想チャネルの作成
Virtual Channel SDKを使用して仮想チャネルを作成するには、中程度のプログラミング知識が必要です。この方法を使用して、クライアントとサーバー間の主要な通信パスを提供します。たとえば、スキャナーなどのクライアント側のデバイスの使用をセッション内のプロセスで使用するように実装する場合などです。
注:
-
Virtual Channel SDKは、仮想チャネルのサーバー側を記述するためにWFAPI SDKを必要とします。
-
Citrix DaaSのセキュリティが強化されたため、ICAセッションで開くことが許可される仮想チャネルを指定する必要があります。詳細については、「仮想チャネル許可リストポリシー設定」を参照してください。
ICA Client Object SDKを使用した独自の仮想チャネルの作成
ICA Client Object (ICO) を使用して仮想チャネルを作成する方が、Virtual Channel SDKを使用するよりも簡単です。ICOを使用するには、CreateChannelsメソッドを使用してプログラムで名前付きオブジェクトを作成します。
重要:
Citrix Receiver for Windowsバージョン10.00以降(およびCitrix Workspaceアプリ for Windows)でセキュリティが強化されたため、ICO仮想チャネルを作成する際には追加の手順が必要です。
詳細については、「Client Object API Specification Programmer’s Guide」を参照してください。
仮想チャネルのパススルー機能
Citrixが提供するほとんどの仮想チャネルは、ICAセッション(パススルーセッションとも呼ばれます)内でCitrix Workspaceアプリ for Windowsを使用する場合、変更なしで動作します。クライアントを余分なホップで使用する際には考慮事項があります。
以下の機能は、シングルホップまたはマルチホップで同じように動作します。
-
クライアントCOMポートマッピング
-
クライアントドライブマッピング
-
クライアントプリンターマッピング
-
クライアントUPD
-
エンドユーザーエクスペリエンス監視
-
汎用USB
-
ケルベロス
-
マルチメディアサポート
-
スマートカードサポート
-
透明なキーパススルー
-
トゥエイン
待ち時間の固有の性質、および各ホップで実行される圧縮、解凍、レンダリングなどの要因により、クライアントが経由するホップが増えるごとにパフォーマンスが影響を受ける可能性があります。影響を受ける領域は次のとおりです。
-
双方向オーディオ
-
ファイル転送
-
汎用USBリダイレクト
-
シームレス
-
シンワイヤー
重要:
デフォルトでは、パススルーセッションで実行されているクライアントのインスタンスによってマップされたクライアントドライブは、接続しているクライアントのクライアントドライブに制限されます。
Citrix Virtual DesktopセッションとCitrix Virtual Appセッション間の仮想チャネルのパススルー機能
Citrixが提供するほとんどの仮想チャネルは、Citrix Virtual Desktopsサーバー上のICAセッション(パススルーセッションとも呼ばれます)内でCitrix Workspace app 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 | いいえ |
| クリップボード | はい |
| コンティニュアム (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 SDKに関する技術的なディスカッションが行われるCitrix Developer Networkフォーラムも含まれています。