28

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

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

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

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

vb.net が望ましいですが、言語にとらわれない回答も受け付けます。

4

3 に答える 3

22

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

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

于 2008-09-03T18:42:35.783 に答える
10

Rob Walker が言ったように、 Process Explorerを使用してシリアル ポートを使用しているユーザーを見つけることができます。ほとんどの場合、Ctrl+Fを入力して「シリアル」を検索すると、シリアル ポートが開いているユーザーが表示されますが、「COM3」シリアル ポートのハンドルが「\Device\VCP0」と表示される状況に遭遇しました。USB-to-serialコネクタのあるVirtualBoxで動いていたので変かもしれません。

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

于 2012-08-27T17:50:42.307 に答える
3

Sysinternalsには、プロセスがシステムに対して行っていることを追跡するのに非常に便利で教育的なユーティリティが多数あります。

Portmonと呼ばれるまさに必要なことを実行するユーティリティがあり、ページの下部近くでそれがどのように機能するかについての情報を提供します. この情報といくつかのよくある質問により、ユーティリティだけでは不十分な場合に、自分で実装するために必要なすべての情報が得られるでしょう。

-アダム

于 2008-09-03T17:52:50.507 に答える