どのプロセスがシリアル ポートを使用しているかを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/42197

  •  09-06-2019
  •  | 
  •  

質問

私が働いている会社は、シリアル ポートを介してコンピュータと通信するハードウェアを製造しています。サードパーティ企業は、当社のハードウェアと通信するソフトウェアを作成します。

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

次のいずれかの方法はありますか?

  • 特定のシリアル ポートを現在使用しているアプリ/サービスの名前/pid を検索するか、
  • 別のアプリからシリアル ポート接続を盗みます。

できれば vb.net ですが、言語に依存しない回答も受け付けます。

役に立ちましたか?

解決

使用できます プロセスエクスプローラー 開いているハンドルを検索するためのツールも SysInternals から提供されています。この場合、COM ポート番号にマップされない可能性のあるデバイス名が使用されているため、「Serial」を検索する必要があります。(例えば。私のシステムでは COM1 は \Device\Serial0 です)。

他のアプリからシリアルポートの制御を奪いたい場合はドライバーの協力が必要になると思います。

他のヒント

として ロブ・ウォーカーは言った, を使用すると、誰がシリアル ポートを使用しているかを確認できます。 プロセスエクスプローラー. 。ほとんどの場合、入力するのは、 Ctrl+F 「serial」を検索すると、誰がシリアル ポートを開いているのかが表示されますが、「COM3」シリアル ポートのハンドルが「\Device\VCP0」として表示されるという状況に遭遇しました。USB-シリアルコネクタを備えたVirtualBox上で実行されていたため、奇妙である可能性があります。

「serial」と「device\vcp」を検索しても結果が得られない場合は、既知のプログラムでシリアル ポート ハンドルを開いて、シリアル ポート ハンドルの名前がどのように付けられているかを確認できる可能性があります。Process Explorer で、次のように入力して、各プロセスの開いたハンドルを含む下部ペインを表示します。 Ctrl+L. 。シリアル ポートを開くために使用したプロセスをクリックし、下部ペインを調べて、どのハンドルがシリアル ポートであるかを確認します。検索中にポートを開いたり閉じたりすることができ、ファイル ハンドルが表示されたり消えたり、緑または赤で強調表示されます。もちろん、これは複数のシリアル ポートがある場合、または診断しようとしているシリアル ポートが何らかの謎のプロセスによって常にロックされているわけではない場合にのみ可能です。

シスインターナル には、プロセスがシステムに対して何を行っているかを追跡するのに非常に便利で勉強になるユーティリティが多数含まれています。

彼らはあなたが必要なことを正確に行うユーティリティを持っています ポートモン, 、ページの下部近くにその仕組みに関する情報が記載されています。この情報といくつかのよくある質問は、ユーティリティだけでは不十分な場合に自分で実装するために必要なすべてをおそらく提供します。

-アダム

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top