Confusion about drivers for non-physical/virtual devices

I’m working on an audio driver that will add a new endpoint. Rather than a physical piece of hardware, I have a library that handles the details of transmitting data to the target device.

Because this isn’t a physical device that will be plugged in, I’m having trouble interpreting much of the documentation I’m reading for my particular scenario.

As an example, I originally thought that clicking an .INF file and choosing “Install” would cause a virtual device to show up in Device Manager. I was confusing drivers and devices. The docs repeatedly say something like “when you plug the device in, Plug and Play does …”.

Neither of the drivers I’m working on have any physical component like that (one is a virtual monitor driver, the other a virtual audio endpoint). So assuming I had finished drivers for both of these, and I installed both of them, what is the event that causes them to show up in Device Manager?

Right click on an inf will do two things 1) add the driver package to the driver store 2) evaluate all devices so see if they have a matching ID in your new INF. If there is a match, use the normal driver package ranking rules to see if the newly installed package should be installed. Since you are using virtual, or root enumerated, devices, these do not exist when step 2 is run so all that happens is the driver package is imported. To create the device run devcon install which will create the root enumerated virtual device and install the specified driver package.

@Doron_Holan said:
Right click on an inf will do two things

  1. add the driver package to the driver store
  2. evaluate all devices so see if they have a matching ID in your new INF. If there is a match, use the normal driver package ranking rules to see if the newly installed package should be installed.

Since you are using virtual, or root enumerated, devices, these do not exist when step 2 is run so all that happens is the driver package is imported. To create the device run devcon install which will create the root enumerated virtual device and install the specified driver package.

Doron, thanks so much for your explanation.