Citrix ICA® 仮想チャネル

警告:

レジストリを誤って編集すると、オペレーティングシステムの再インストールが必要になるような深刻な問題が発生する可能性があります。レジストリエディターの誤った使用によって生じた問題が解決されることを、シトリックスは保証できません。レジストリエディターの使用は、お客様ご自身の責任において行ってください。編集する前に、必ずレジストリをバックアップしてください。

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 (必須)
  • スマートカード
  • ICACTL (Required)
  • SSPI
  • ツウェインRdr
  • ユーザーエクスペリエンス
  • 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 – Generic USB virtual channel
  • 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 – シームレスウィンドウ機能
  • vdtwn.dll – Twain

一部の仮想チャネルは、他のファイルにコンパイルされます。たとえば、クリップボードマッピングは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サービスとしてホストされます。

シェルによってロードされる仮想チャネルモジュール、例:

  • イーユーイーエム
  • トゥエイン
  • クリップボード
  • マルチメディア
  • シームレスセッション共有
  • タイムゾーン

いくつかはカーネルモードとしてロードされます。例:

  • 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/2411/media/virtual-channel-connection.png)

この概要には、仮想チャネルを使用したクライアント-サーバー間のデータ交換が含まれています。

  1. クライアントはCitrix Virtual Apps and Desktopsサーバーに接続します。クライアントは、サポートする仮想チャネルに関する情報をサーバーに渡します。
  2. サーバー側アプリケーションが起動し、仮想チャネルへのハンドルを取得し、オプションでチャネルに関する追加情報を照会します。
  3. クライアント仮想ドライバーとサーバー側アプリケーションは、次の2つの方法を使用してデータを渡します。

    • サーバーアプリケーションがクライアントに送信するデータを持っている場合、データはすぐにクライアントに送信されます。クライアントがデータを受信すると、WinStationドライバーはICAストリームから仮想チャネルデータを逆多重化し、すぐにクライアント仮想ドライバーに渡します。
    • クライアント仮想ドライバーがサーバーに送信するデータを持っている場合、データはWinStationドライバーが次にポーリングするときに送信されます。サーバーがデータを受信すると、仮想チャネルアプリケーションが読み取るまでキューに入れられます。データが受信されたことをサーバー仮想チャネルアプリケーションに通知する方法はありません。
  4. サーバー仮想チャネルアプリケーションが完了すると、仮想チャネルを閉じ、割り当てられたリソースを解放します。

Virtual Channel SDK を使用して独自の仮想チャネルを作成する

注:

シトリックス SDK は、シトリックス デベロッパー ポータル (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 DesktopsセッションとCitrix Virtual Appsセッション間の仮想チャネルのパススルー機能

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仮想チャネルを使用) はい
Webカメラ ビデオ圧縮 はい
Windows Media のリダイレクト機能 はい

関連項目

  • ICAバーチャルチャネルSDK
  • Citrix Developer Networkは、Citrix SDKの使用に関するすべての技術リソースとディスカッションの拠点です。このネットワークでは、SDK、サンプルコードとスクリプト、拡張機能とプラグイン、およびSDKドキュメントにアクセスできます。また、Citrix Developer Networkフォーラムも含まれており、各Citrix SDKに関する技術的なディスカッションが行われています。