Device installation on Vista failing when it used to work?

There is a hotfix for setupapi.dll, read the KB article and see if it applies to your machine

Comments (8)

  1. mattd says:

    Hi Doron,

    First I apologize for asking here, I realize this isn’t designed to post questions to.Secondly let me say that I really enjoy your blog and also all your presentations on WHDC. You clearly are a very bright guy, and I had a few questions for you. Let me say that I really appreciate you taking the time to respond since I am sure you are very busy. I have several questions. First off I am new to driver development and want to implement a virtual serial port driver. By this I mean I want to build a driver that can create virtual devices that would multiplex a physical serial port. Anyway question 1.) Is KMDF an appropriate framework to use in building this? and 2.) What type of driver would I build to accomplish this? Any help or guidance to where to get started or what I need to build would be of great help. Thanks Doron.

    matt davison

  2. Thanks 😉

    what do you mean by multiplexing a physical serial port?  allowing multiple applications to open the same physical serial port, each application opening a different COM port number?  If so, this becomes very problematic because each application will want to configure the com port (stop bits, baud rate, read char timeout, etc) and each application will potentially have different settings  that will conflict with each other, making it impossible to share the physical COM port.  Or do you want to consume the data from the serial port in your driver and multiplex the data to the applications?

    KMDF can be used to create a bus driver which will enumerate child devices.  Each child device can be a virtual serial port that you then use to fwd requests to the read serial port, but given w/out knowing how you plan to share the serial port, it is very hard to know of this is the correct solution.


  3. mattd says:


    Thanks for the quick response. I want to support two modes of operation. One mode will allow multiple apps to open and read from the serial port. The second mode will be entirely virtual where N number of ‘virtual’ COM ports can be created each with there own virtual settings. The second mode is entirely virtual, I am sorry I wasn’t more clear. So your saying I would create a KMDF Bus driver to do this? Would I be better of to create two differnent drivers for this. One driver that does the physical one way multiplexing, and another driver that creates the virtual COM ports via a bus driver? Thanks.


  4. you only need a bus driver if you want to dynamically create ports on the fly or you want to have the virtual ports be pnp chldren of the physical port (e.g. open device manager, view by connection and you see your ports as child devices of the real one).

    Why do you think the first mode will ever work generically?  Or are you targeting a specific set of apps that will be aware of this sharing?

    For the 2nd mode where everything is virtual, you do not need a bus driver.  rather you can install them as root enumerated devices, each port is its own device. your driver is the FDO for the device. what you do in the pure virtual mode is up to your driver.


  5. mattd says:


    The issue is two or more applications need to read from a barcode scanner on the COMM port, but the App A opens exclusively, the idea is to allow multiple apps to read from the scanner. Does that make sense?

  6. can you change the apps?  otherwise what i suggest is that you read all the data from the real com port and then duplicate that data in each virtual com port.  this way one application cannot suck out the other’s data…BUT, why would 2 applications consume the same barcode data at the same time?  that does not make much sense to me either…


  7. mattd says:


    This is what I want to build.

    I should have just said that in the beginning. Is KMDF is the best choice? Thanks.

  8. yes, KMDF is the best choice to start with, but regardless of what you use to build the driver, there are a tremendous number of technical problems that you will have to solve.

    good luck.