2008-09-03 24 views
23

私が働く会社は、シリアルポートを介してコンピュータと通信するハードウェアを作ります。サードパーティの企業は、当社のハードウェアと通信するソフトウェアを作成します。シリアルポートを使用しているプロセスを特定するにはどうすればよいですか?

ハードウェアの診断が必要な場合があります。ただし、サードパーティのソフトウェアアプリは、Windowsの起動時にシリアルポートに接続し、他の接続をブロックします。私はこのアプリケーション/サービスの名前を知らず、いつも同じものではありません。

のいずれかにどのような方法があります:

  • は現在、別のアプリケーションからシリアルポート接続を盗む与えられたシリアルポートまたは
  • を使用しているアプリ/サービスの名前/ PIDを検索を。

vb.netですが、言語にとらわれない回答もお勧めします。

答えて

20

あなたは開いているハンドルを検索するためのSysinternalsのもprocess explorerツールを使用することができます。この場合、comポート番号にマップされない可能性のあるデバイス名を使用するため、「シリアル」を検索することをお勧めします。 (例えば、私のシステムではCOM1は\ Device \ Serial0です)。

別のアプリからシリアルポートを制御したい場合は、ドライバの協力が必要だと思います。

+1

それは素晴らしいです。不思議なことに、私の関心を集めているものを除いて、私のWindows XP PC上で動作するように見えます。** Windowsの 'usbser.sys'ドライバを使ったUSBシリアルポートです。 –

+0

より多くの例外があります:シリアル・イーサネット・コンバータ。 (例:Moxa NPortコンバータでは '\ Device \ NPdrv ...'を使用) – bvdb

+0

私のUSBシリアルアダプタの名前は\ Device \ USBSER0000です – copa017

3

Sysinternalsは、システムに何が行われているかを追跡するのに非常に便利で教育的です。

これらは、Portmonと呼ばれるものを正確に実行するユーティリティーを持ち、ページの下部近くでどのように動作するかに関する情報を提供します。その情報といくつかのよく聞かれる質問は、ユーティリティが十分でない場合は、おそらくあなた自身でそれを実装するために必要なものすべてを与えるでしょう。

-Adam

+2

悲しいことに、PortMonは64ビットOSで動作しません。あなたはVMを実行しようとすることができますが、それは私のためのオプションではありません。 – topshot

7

Rob Walker saidとして、Process Explorerを使用してシリアルポートを使用しているユーザーを見つけることができます。ほとんどの場合、と入力して + Fと入力し、シリアルポートを開いている人が表示されますが、「COM3」シリアルポートのハンドルが「\ Device \ VCP0 "となる。これは、USB-to-serialコネクタを使ってVirtualBoxの下で動作していたため、奇妙なことかもしれません。

"serial"と "device \ vcp"を検索しても結果が得られない場合は、シリアルポートハンドルの名前を知ることができます。 Process Explorerで、Ctrl + Lと入力して、各プロセスの開いているハンドルの下のペインを表示します。シリアルポートを開くために使用したプロセスをクリックし、下のペインを見てシリアルポートのようなハンドルを確認します。探している間にポートを開いたり閉じたりすることができます。ファイルハンドルは緑色または赤色で強調表示されるだけでなく、表示され消えます。もちろん、これは複数のシリアルポートがある場合や、診断しようとしているシリアルポートがミステリープロセスによって必ずしもロックされていない場合にのみ可能です。

関連する問題