Comment puis-je déterminer quel processus utilise un port série?

La société pour laquelle je travaille fabrique du matériel qui communique à l'ordinateur via un port série. Des sociétés tierces écrivent des logiciels qui communiquent avec notre matériel.

Il y a des moments où je dois diagnostiquer notre matériel. Cependant, une application logicielle tierce se connecte au port série lorsque Windows démarre, bloquant toute autre connexion. Je ne connais pas le nom de cette application/service et ce n'est pas toujours le même.

Est-il un moyen de soit:

  • recherchez le nom/pid de l'application/service qui utilise actuellement un port série donné ou
  • voler la connexion du port série d'une autre application.

Vb.net de préférence, mais je vais prendre une réponse agnostique de la langue aussi.

24
demandé sur Grant 2008-09-03 21:46:21

3 réponses

Vous pouvez également utiliser L'outilprocess explorer de SysInternals pour rechercher des poignées ouvertes. Dans ce cas, vous souhaitez rechercher "série" car il utilise des noms de périphériques qui peuvent ne pas correspondre aux numéros de port com. (par exemple COM1 est \ Device\Serial0 sur mon système).

Si vous voulez prendre le contrôle du port série à partir d'une autre application, je pense que vous auriez besoin de la coopération du pilote.

20
répondu Rob Walker 2008-09-03 18:42:35

Comme Rob Walker a dit , Vous pouvez trouver qui utilise un port série en utilisant Process Explorer. La plupart du temps, en tapant Ctrl+F et la recherche de "série" vous montrera qui a un port série ouvert, mais je viens de rencontrer une situation où la poignée de mon port série "COM3" est apparue comme "\Device\VCP0". Cela peut être étrange car il fonctionnait sous VirtualBox avec un connecteur USB-série.

Si vous recherchez "serial" Et "device \ vcp" ne vous obtenez aucun résultat, vous pouvez être en mesure de comprendre comment les poignées de port série sont nommées en ouvrant un avec un programme connu. Dans Process Explorer, affichez le volet inférieur avec les poignées ouvertes de chaque processus en tapant Ctrl+L . Cliquez sur le processus que vous avez utilisé pour ouvrir le port série et regardez à travers le volet inférieur pour voir quelles poignées ressemblent à un port série. Vous pouvez ouvrir et fermer le port pendant que vous regardez, et le handle de fichier devrait apparaître et disparaître, ainsi que d'être mis en surbrillance en vert ou en rouge. Bien sûr, cela n'est possible que si vous avez plus d'un port série ou le port série que vous essayez de diagnostiquer n'est pas toujours verrouillé par un mystère processus.

7
répondu Don Kirkby 2017-05-23 11:55:15

Sysinternals a un grand nombre d'utilitaires que je trouve très utile et éducatif pour suivre ce que les processus font au système.

Ils ont un utilitaire qui fait exactement ce dont vous avez besoin appeléPortmon , et donnent quelques informations sur la façon dont cela fonctionne près du bas de la page. Cette information et quelques questions bien posées vous donneront probablement tout ce dont vous avez besoin pour l'implémenter vous-même si l'utilitaire ne suffit pas.

-Adam

3
répondu Adam Davis 2008-09-03 17:52:50