どのプロセスがシリアル ポートを使用しているかを確認するにはどうすればよいですか?
-
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. 。シリアル ポートを開くために使用したプロセスをクリックし、下部ペインを調べて、どのハンドルがシリアル ポートであるかを確認します。検索中にポートを開いたり閉じたりすることができ、ファイル ハンドルが表示されたり消えたり、緑または赤で強調表示されます。もちろん、これは複数のシリアル ポートがある場合、または診断しようとしているシリアル ポートが何らかの謎のプロセスによって常にロックされているわけではない場合にのみ可能です。