Citrix Virtual Apps and Desktops

シリアルポート

ほとんどの新しいPCには、内蔵のシリアル(COM)ポートがありません。USBコンバーターを使用すると、ポートを簡単に追加できます。シリアルポートに適したアプリケーションには、センサー、コントローラー、古いチェックリーダー、パッドなどがよく含まれます。一部のUSB仮想COMポートデバイスは、Windowsが提供するドライバー (usbser.sys) の代わりに、ベンダー固有のドライバーを使用します。これらのドライバーを使用すると、USBデバイスの仮想COMポートを、異なるUSBソケットに接続しても変更されないように強制できます。これは、デバイスマネージャー > ポート (COMとLPT) > プロパティ から、またはデバイスを制御するアプリケーションから行うことができます。

クライアントCOMポートマッピングを使用すると、ユーザーのエンドポイントのCOMポートに接続されたデバイスを仮想セッション中に使用できます。これらのマッピングは、他のネットワークマッピングと同様に使用できます。

各COMポートに対して、オペレーティングシステムのドライバーはCOM1やCOM2などのシンボリックリンク名を割り当てます。アプリケーションは、そのリンクを使用してポートにアクセスします。

重要:

デバイスがUSBを直接使用してエンドポイントに接続できるからといって、汎用USBリダイレクトを使用してリダイレクトできるとは限りません。一部のUSBデバイスは仮想COMポートとして機能し、アプリケーションは物理シリアルポートと同じ方法でアクセスできます。オペレーティングシステムはCOMポートを抽象化し、ファイル共有のように扱うことができます。仮想COMの一般的なプロトコルは、CDC ACMまたはMCTです。RS-485ポートを介して接続すると、アプリケーションがまったく機能しない場合があります。RS-485をCOMポートとして使用するには、RS-485-to-RS232コンバーターを入手してください。 重要:

一部のアプリケーションは、デバイス(たとえば、署名パッド)がクライアントワークステーションのCOM1またはCOM2に接続されている場合にのみ、一貫して認識します。

クライアントCOMポートをサーバーCOMポートにマッピングする

クライアントCOMポートをCitrix®セッションにマッピングするには、次の3つの方法があります。

  • Studioポリシー。ポリシーについて詳しくは、「ポートリダイレクトポリシー設定」を参照してください。
  • VDAコマンドプロンプト。
  • リモートデスクトップ(ターミナルサービス)構成ツール。
  1. クライアントCOMポートリダイレクトおよびクライアントCOMポートの自動接続Studioポリシーを有効にします。適用後、一部の情報はHDX™ Monitorで利用できます。

    HDXモニター画像

  2. クライアントCOMポートの自動接続でポートのマッピングに失敗した場合は、手動でポートをマッピングするか、ログオンスクリプトを使用できます。VDAにログオンし、コマンドプロンプトウィンドウで次のように入力します。

    NET USE COMX: \\CLIENT\COMZ:

    または

    NET USE COMX: \クライアント\クライアントポート:COMZ:

    X は VDA 上の COM ポート番号です (ポート 1 から 9 までがマッピングに利用可能です)。Z はマッピングしたいクライアント COM ポート番号です。

    操作が成功したことを確認するには、VDA コマンドプロンプトで「NET USE」と入力します。表示されるリストには、マップされたドライブ、LPT ポート、およびマップされた COM ポートが含まれます。

    Net use コマンドの画像

  3. この COM ポートを仮想デスクトップまたはアプリケーションで使用するには、ユーザーデバイスアプリケーションをインストールし、マップされた COM ポート名を指定します。たとえば、クライアント上の COM1 をサーバー上の COM3 にマップする場合、VDA に COM ポートデバイスアプリケーションをインストールし、セッション中に COM3 を指定します。このマップされた COM ポートは、ユーザーデバイス上の COM ポートと同様に使用します。

重要:

COM ポートマッピングは TAPI と互換性がありません。Windows Telephony Application Programming Interface (TAPI) デバイスをクライアント COM ポートにマップすることはできません。TAPI は、アプリケーションがデータ、FAX、音声通話の電話機能を制御するための標準的な方法を定義します。TAPI は、ダイヤル、応答、通話終了などのシグナリングを管理します。また、保留、転送、電話会議などの付加サービスも管理します。

トラブルシューティング

  1. Citrix を介さずに、エンドポイントから直接デバイスにアクセスできることを確認してください。ポートが VDA にマップされていない間は、Citrix セッションに接続されていません。デバイスに付属のトラブルシューティング手順に従い、まずローカルで動作することを確認してください。 デバイスがシリアル COM ポートに接続されると、ここに示されているハイブにレジストリキーが作成されます。 トラブルシューティングの画像

    この情報は、コマンドプロンプトで「chgport /query」を実行することでも確認できます。

    コマンドプロンプトからのトラブルシューティングの画像

    デバイスのトラブルシューティング手順が利用できない場合は、PuTTY セッションを開いてみてください。Session を選択し、Serial line で COM ポートを指定します。

    PuTTY セッションによるトラブルシューティングの画像

    ローカルコマンドウィンドウで MODE を実行できます。出力には、使用中のCOMポートと、PuTTYセッションで必要となるボーレート/パリティ/データビット/ストップビットが表示される場合があります。PuTTY接続が成功した場合は、Enterキーを押してデバイスからのフィードバックを確認します。入力した文字が画面に繰り返して表示されたり、応答があったりする場合があります。この手順が失敗した場合、仮想セッションからデバイスにアクセスできません。

  2. ローカルCOMポートをVDAにマップし (ポリシーまたは NET USE COMX: \\CLIENT\COMZ: を使用)、前の手順と同じPuTTYの手順を繰り返しますが、今回はVDAのPuTTYから行います。PuTTYがエラー「Unable to open connection to COM1. Unable to open serial port」を表示しない場合、別のデバイスがCOM1を使用している可能性があります。

  3. chgport /query を実行します。VDA上の組み込みWindowsシリアルドライバーが、\Device\Serial0をVDAのCOM1ポートに自動割り当てしている場合、次の手順を実行します。 A. VDAでCMDを開き、NET USE と入力します。

    B. VDA上で既存のマッピング (例: COM1) を削除します。

    NET USE COM1 /DELETE

    C. デバイスをVDAにマップします。

    NET USE COM1: \\CLIENT\COM3:

    D. VDA上のアプリケーションをCOM3に指定します。

    最後に、ローカルCOMポート (例: COM3) をVDA上の別のCOMポート (COM1以外、例えばCOM3) にマップしてみてください。アプリケーションがそれを指していることを確認してください: NET USE COM3: \\CLIENT\COM3

  4. ポートがマップされているのが確認できても、PuTTYは動作しているがデータが渡されない場合、競合状態である可能性があります。アプリケーションがマップされる前にポートに接続して開いてしまい、マッピングをロックしている可能性があります。次のいずれかを試してください:

    • 同じサーバーで公開されている2番目のアプリケーションを開きます。ポートがマップされるまで数秒待ち、その後、ポートを使用しようとする実際のアプリケーションを開きます。
    • Studioではなく、Active DirectoryのグループポリシーエディターからCOMポートリダイレクトポリシーを有効にします。これらのポリシーは「Client COM port redirection」と「Auto connect client COM ports」です。このように適用されたポリシーは、Studioポリシーよりも前に処理される可能性があり、COMポートが確実にマップされます。CitrixポリシーはVDAにプッシュされ、次の場所に保存されます: HKLN\SOFTWARE\Policies\Citrix \<user session ID\>

    • ユーザーにこのログオンスクリプトを使用するか、またはアプリケーションを公開する代わりに、まずVDA上のマッピングを削除し、仮想COMポートを再マップし、その後アプリケーションを起動する.batスクリプトを公開します:

    @echo off NET USE COM1 /delete NET USE COM2 /delete NET USE COM1: \\CLIENT\COM1: NET USE COM2: \\CLIENT\COM2: MODE COM1: BAUD=1200 (or whatever value needed) MODE COM2: BAUD=9600 PARITY=N Data=8 Stop=1 (or whatever value needed) START C:\Program Files\<Your Software Path>\<your_software.exe>

  5. SysinternalsのProcess Monitorは最後の手段です。VDAでこのツールを実行する際、COM3、picaser.sys、CdmRedirectorなどのオブジェクトを検索してフィルター処理しますが、特に<your_app>.exeを対象とします。エラーは「アクセス拒否」または類似の形で表示される場合があります。

シリアルポート