Rick Parrish wrote:
This email is directed mostly to Herve and anyone else familiar with SERIAL.SYS and how it works.
Two years ago I implemented a small (5 kilobyte) WDM driver that "wrapped" SERIAL.SYS. It's an ugly hack that (almost) works. What I did was "hook" the interrupt service routine by directly modifying the IDT. It works most of the time but occassionally I get BSOD (and I don't know why).
The driver installed ISR reads the MSR (modem status register) of the UART. The RDTSC instruction is used to generate a timestamp of when the MSR changed. Both pieces of data are stored in a FIFO - on every interrupt. A user mode program can later retrieve the information at regular time intervals.
Hint: using the CTS, DCD, and DSR pins on a standard RS232 port, you can create a Poor Man's 3 Channel Logic Analyzer. Other applications include packet radio interface for amateur radio.
What I'd like to do is merge the functionality directly into SERIAL.SYS (eg. work with the OS instead of around it). The extra functionality would be exposed through IOCTL or some other means but would not break ordinary serial COMM functionality.
Disclaimer: I'm not a veteran author of kernel mode drivers.
This is a relatively obscure application so if you want to reply off-list, that's perfectly fine by me.
Here are my questions:
- how robust is the current SERIAL.SYS driver (I see a few "FIXME"s in
the comments) ? 2. does ReactOS support or require code-signing of drivers? (probably not yet) 3. Can I run the "Genuine" Reactos SERIAL.SYS on "Genuine" Windows 2K/XP? I think so (setting WFP aside). 4. is anyone in the ReactOS community interested in such a driver extension as described above? (probably not)
Also, if anyone would like to see the logic analyzer program and related driver - please send me an email.
Regards, Rick
Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev
Besides what Hervé wrote, have a look at Microsoft's serial.sys driver in the WDK/DDK sample source code. It's the working driver used in XP+, and you can easily modify it to test your changes on it.