Subj : Serial port query
To   : Darin McBride
From : Vitus Jensen
Date : Wed Aug 09 2000 08:23 pm

Moin Darin!

06.08.2000, Darin McBride wrote a message to Vitus Jensen:

...
DM>>> Is there a way 1. to check the state of a port, 2. determine the
DM>>> application using it?

DM>>> By #1, I believe he means "determine if a comm port was in use".

DM>>> Any ideas whatsoever would be appreciated.  I believe #1 can be done
DM>>> by an attempt to open the port as a file in "DENY_ALL" mode - if it
DM>>> fails, someone is using it.  I don't believe #2 is possible.  If I
DM>>> could be corrected, that would be great.  :-)

VJ>> Get OS2UNDOC from hobbes and have a look at the DosQuerySysState API.
VJ>> It will return infos about all open files of a single or all
VJ>> processes.  There are problems when using it at certain fixpak
VJ>> levels (older Warp 3 fixpaks).

DM> Of course!  I forgot all about that.  I already use that call for a
DM> number of things, so one more is no biggie.  :-)  Unfortunately, I
DM> can't figure out how to trace back from the file to the process(es).

Use the brute force method?  See below.


DM> I've done some slight modifications to the sample programs given in
DM> the undoc INF file, and I get:

DM>     name: D:\BBS\MAIL\ECHO\FIDONET\BACKBONE\OS2PROG.SQD
DM>  opencnt: 1
DM>  sfn: e0
DM>  refcnt: 1
DM>  flags: 0
DM>  accmode: c2
DM>  filesize: 62315
DM>  volhnd: 264
DM>  attrib: 20 [A-----]

DM> Now, *I* know which process this is:

DM>     PID: 1736
DM>  PPID: 30
DM>  type: 3
DM>  state: 10
DM>  session id: 36
DM>  mod handle: 1be8 (D:\BBS\FLEET\FLTSTRT.EXE)
DM>  # of threads: 4
DM> [...]

DM> I just can't tell how to get from one to the other.
...

There is this lees-than-optimal solution but why not use it:

get a list of all running processes via DosQuerySysState
for every process ID
 get a list of all open files via DosQuerySysState
 for every open file
   check whether filename = COMx
   if identical
     dump process info (DosQuerySysState)

I don't think it would be too slow to be usable.

Bye,
  Vitus

---
* Origin: Of all the things I've lost, I miss my mind the most. (2:2474/424.1)