シリアルポートを使用/予約するプロセスの検索

更新しました Nov 11, 2020

環境

オペレーティング・システム

  • Windows

VISAを通してシリアル(COM)ポートにアクセスしようとすると、VI_ERROR_RSRC_BUSYを返している、または他のリソースがビジーエラーとなるプログラムがあります。どのようなプロセスがCOMポートを使用しているのかを把握するにはどうすればよいですか?

シリアル(COM)ポートを使用しているプロセスを検索するには、次の手順を実行します。
 
  1. Process Explorerツールをダウンロードします。
     
  2. コントロール パネル>>デバイス マネージャーに移動します。デバイス マネージャーでポート(COMとLPT)に移動し、対象のシリアルポートを右クリックしてプロパティを選択します。

     
  3. 詳細タブを選択してプロパティフィールドをクリックし、サービスに変更します。ここに記載させている値を書き留めます。以下の例(NI USB-232)では、サービス値はNiSerUです。Process Explorerで検索する場合は、このフィールドの値に注目します。

     
  4. Process Explorerを開くと、下の画像に似た画面が表示されます。

     
  5. メニューのFind>>Find Handle or DLL...を選択します。新しいウィンドウがポップアップされ、デバイス マネージャー(この場合はNiSerU)から取得された値のハンドルまたはDLLサブストリングタイプのフィールドに表示されます。
     
  6. Searchをクリックすると、特定のハンドルを使用しているプロセスを示す結果が表示されます。たとえば、以下の検索では、USB-232はNIMax.exeで使用されている\Device\NiSerU1として表示されます。ここから、どのプロセスがシリアルポートリソースを使用しているかを知ることができます。