Serial COM Port Driver Not Working on Windows 8.1 RRS feed

  • Question

  • Hello,

    I am porting an existing Windows XP serial COM port driver to Windows 7/8/8.1.  I should state up front that I am primarily a Windows application developer with only minimal experience with Window's drivers.  To start, I followed the instructions to create a driver project in Visual Studio 2013 and merged in our source code.  I have the driver working on Windows 7 and 8, however it does not work on Windows 8.1.  The only difference being selecting the OS from the Configuration setting and compiling.

    The driver loads sucessfully, however no characters can be transferred using the applications Tera Term and Putty.  I wrote a small test application to get some more information and after a character is written and a read is done there are no characters to read.  Looking at the DebugView messages it gets to the call to WRITE_PORT_UCHAR, but it seems that no character is sent.  There is no return value from WRITE_PORT_UCHAR, so I don't know of the status from the write.

    I am using KMDF 1.13, which is for 8.1.  I ran Depends on the driver and there are no errors.

    Any help is appreciated.  Thanks! 


    Tuesday, June 3, 2014 8:23 PM

All replies

  • First if the driver is well written, then the Windows 7 driver should work on Windows 8 and 8.1.  Second, I would be looking at what is sent to the driver in the way of commands, with a change in the version, it more likely that the calls to the driver changed and the driver is messing up due to the difference.

    Don Burn Windows Filesystem and Driver Consulting Website: Blog:

    Tuesday, June 3, 2014 8:31 PM
  • to reiterate what don said, you should be able to build the driver once with a win7 build config and then load the same driver on 7, 8, and 8.1

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Tuesday, June 3, 2014 9:17 PM
  • Thanks for the replies.  I compared the logs between Win 7 and 8.1 a few days ago and did not see a difference.  I will take a closer look today.

    • Edited by T777 Wednesday, June 4, 2014 1:36 PM
    Wednesday, June 4, 2014 1:36 PM
  • I added in more logging and only saw one difference between Windows 7 and 8.1, which was a modem status ISR (Interrupt ID Reg is 0) on 8.1 that was not seen on Windows 7.  However, I don't think that this is the problem due to what I will explain below.

    I connected the 8.1 PC to a 7 PC and tramnsmitted a character from 8.1 to 7 and it worked.  I then tried to send a character from 7 to 8.1 and no character is received.  DebugView shows no activity whatsoever.  On doing this on two Win 7 PCs shows the receive ISR.  So, it looks like the problem is that on 8.1 there are no receive interrupts occurring.

    I then checked DebugView on an initialization routine that gets called when the application opens the COM port.  It reads the Interrupt Enable Register until bit 0 is 1.  The logs verify that this bit is 1, meaning that the received data interrupt is enabled.

    I'm not sure what else could be causing this lack of interrupts.  One thing I should add is that when I send a character from 8.1 to 7 I then see the characters sent from 7.  I looked through the write logs and code and other than enabling bit 0 in the IER, which is verified to be set, I cannot see what else is enabing the interrupt on a write.

    Is there anything else other than the IER bit that can prevent receive interrupts?  Or perhaps something else that I am missing.  I suppose that somewhere else the bit is being cleared, I will try and go down that path.  Any help is appreciated.


    • Edited by T777 Sunday, June 15, 2014 2:36 PM
    Friday, June 13, 2014 3:36 PM