• Viernes 15 de Noviembre de 2024, 10:35

Autor Tema:  Identificar Que Programa Accede A Un Com  (Leído 1332 veces)

Kyrylys

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Identificar Que Programa Accede A Un Com
« en: Viernes 21 de Septiembre de 2007, 11:19 »
0
Buenas:

Me gustaria saber si es posible hacer para hacer un programa que reconozca que proceso/programa accede a un puerto COM, para identificar los programas que puedan estar bloqueandolo.

Como se puede saber si un proceso tiene abierto un puerto de com, hay alguna funcion de la api de win32?

gracias


Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Identificar Que Programa Accede A Un Com
« Respuesta #1 en: Viernes 21 de Septiembre de 2007, 11:51 »
0
No conozco ninguna API para enumerar los handles de un proceso, que es lo que necesitarias para saber quien abrio un puerto con CreateFile.

Con el Process Explorer (o Handle, en si es lo mismo) es posible enumerar los handles ya que usa un modulo de modo Kernel (binario .sys comunmente llamados drivers). Si lo probas encontras un handle a \Device\Serial0 y este es el que corresponde al puerto COM.

¿Para que queres hacer esto?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Kyrylys

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Re: Identificar Que Programa Accede A Un Com
« Respuesta #2 en: Viernes 21 de Septiembre de 2007, 12:39 »
0
Estoy realizando un software que recibe datos de un puerto COM virtual de USB, sin embargo, en un equipo hemos descubierto que el puerto es bloqueado por alguna aplicacion al iniciarse el equipo y luego liberado, era para determinar que aplicación podia ser el causante del problema.

Realmente , mas que averiguarlo para este caso puntual, pretendiamos que la aplicacion pudiera decir algo estilo: error, el puerto de comunicaciones X esta siendo utilizado por "Hyperterminal" ; por ejemplo.

Muchas gracias por el process explorer, esto nos servirá por ahora, sin embargo, lo mas interesante seria el poder hacer que la aplicación lo viera... una pena


Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Identificar Que Programa Accede A Un Com
« Respuesta #3 en: Viernes 21 de Septiembre de 2007, 12:48 »
0
Existe una manera desde modo Usuario pero es usando funciones indocumentadas de la NTDLL.dll, eso quiere decir que no es muy recomendable su uso. Es preferible que identifiques manualmente el programa y lo desactives del inicio y que tu programa muestre un aviso de que no pudo abrir el puerto y que permita reintentar la apertura al usuario.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.