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ビット用)
-
Thinwire3.0(必須)
-
ClientDrive
-
ClentPrinterQueue
-
ClentPrinterPort
-
クリップボード
-
ClientComm
-
ClientAudio
-
LicenseHandler (必須)
-
TWI (必須)
-
SmartCard
-
ICACTL (必須)
-
SSPI
-
TwainRdr
-
ユーザーエクスペリエンス
-
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 – モバイルReceiver仮想チャネル
-
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ポートリダイレクト
サーバー側のグラフィック仮想チャネル
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 オーディオリダイレクトサービス (Citrix Virtual Desktops™ のみ)
-
Citrix ICAステータスチャネルサービス
Citrix Virtual Apps のオーディオ仮想チャネルは、Windows Audioサービスを使用してホストされます。
サーバー側では、すべてのクライアント仮想チャネルは、WinStationドライバー (Wdica.sys) を介してルーティングされます。クライアント側では、wfica32.exe に組み込まれている対応するWinStationドライバーがクライアント仮想チャネルをポーリングします。この図は、仮想チャネルのクライアント-サーバー接続を示しています。
仮想チャネル接続(/en-us/citrix-virtual-apps-desktops/2411/media/virtual-channel-connection.png)
この概要には、仮想チャネルを使用したクライアント-サーバー間のデータ交換が含まれています。
-
クライアントは Citrix Virtual Apps and Desktops サーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
-
サーバー側アプリケーションが起動し、仮想チャネルへのハンドルを取得し、必要に応じてチャネルに関する追加情報を問い合わせます。
-
クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法を使用してデータを渡します。
-
サーバーアプリケーションがクライアントに送信するデータを持っている場合、データはすぐにクライアントに送信されます。クライアントがデータを受信すると、WinStationドライバーは仮想チャネルデータをICAストリームから逆多重化し、すぐにクライアント仮想ドライバーに渡します。
-
If the client virtual driver has data to send to the server, the data is sent the next time the WinStation driver polls it. When the server receives the data, it is queued until the virtual channel application reads it. There is no way to alert the server virtual channel application that data was received.
-
-
サーバー仮想チャネルアプリケーションが完了すると、仮想チャネルを閉じ、割り当てられたリソースを解放します。
Virtual Channel SDK を使用して独自の仮想チャネルを作成する
注:
Citrix SDK は、Citrix Developer ポータル (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 apps for Windows) でセキュリティが強化されたため、ICO 仮想チャネルを作成する際には追加の手順を実行する必要があります。
仮想チャネルのパススルー機能
Citrix が提供するほとんどの仮想チャネルは、ICA セッション内 (パススルーセッションとも呼ばれます) で Citrix Workspace app for Windows を使用する場合、変更なしで動作します。クライアントを複数のホップで使用する場合には考慮事項があります。
次の機能は、シングルホップまたはマルチホップで同じように動作します。
-
クライアント COM ポートマッピング
-
クライアントドライブマッピング
-
クライアントプリンターマッピング
-
クライアント UPD
-
エンドユーザーエクスペリエンス監視
-
汎用 USB
-
ケルベロス
-
マルチメディアサポート
-
スマートカードサポート
-
透明なキーパススルー
-
トウェイン
待ち時間の固有の性質、および各ホップで実行される圧縮、解凍、レンダリングなどの要因により、クライアントが経由するホップが増えるごとに、パフォーマンスが影響を受ける可能性があります。影響を受ける領域は次のとおりです。
-
双方向オーディオ
-
ファイル転送
-
汎用USBリダイレクト
-
シームレス
-
シンワイヤー
重要:
デフォルトでは、パススルーセッションで実行されているクライアントのインスタンスによってマップされたクライアントドライブは、接続しているクライアントのクライアントドライブに制限されます。
Citrix Virtual DesktopセッションとCitrix Virtual Appセッション間の仮想チャネルのパススルー機能
Citrixが提供するほとんどの仮想チャネルは、Citrix Virtual Desktopsサーバー上のICAセッション内 (パススルーセッションとも呼ばれます) でCitrix Workspaceアプリ 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 | いいえ |
| スマートカード | はい |
| トウェイン | はい |
| USB VC | はい |
| WAYCOM デバイス - K2M (USB VC を使用) | はい |
| Webカメラビデオ圧縮 | はい |
| Windows Mediaリダイレクト | はい |
参照
-
ICA仮想チャネルSDK
-
Citrix Developer Networkは、Citrix SDKの使用に関するすべての技術リソースと議論の場です。このネットワークでは、SDK、サンプルコードとスクリプト、拡張機能とプラグイン、およびSDKドキュメントにアクセスできます。また、各Citrix SDKに関する技術的な議論が行われるCitrix Developer Networkフォーラムも含まれています。