MS Toaster example - confusing roles of PNP manager and driver installer

This may be another newbie question, but… just as I thought I understood it all, I get a behaviour that questions my understanding. And this goes to the core.

I have developed a very simple virtual/software bus driver (no physical bus device) whose role was to plug/unplug various optional devices, under control of the application code. So, I thought that:

  1. when I install optional device driver (I used devcon for this), the driver gets installed, but no devices are created, as the bus driver hasn’t signalled to PNP manager about the presence of the device.
  2. when the bus driver, in response to software’s IOCTL request to add an optional device, creates another PDO and eventually calls WdfChildListAddOrUpdateChildDescriptionAsPresent, this would prompt PNP manager to look up the hardware id and create the device, at this point (not before).

However, what I’m observing is that device add callback is invoked already at step (1) and the optional device is fully operational, defeating the purpose of the bus driver controlling the lifecycle of optional devices. I wonder if this is because of the method of installation (devcon) or I just got it all wrong. I thought that the installation of the driver is simply setting up the driver/INF files, so that when the bus driver signals the presence of a new device, the PNP manager can look up through the database of INF files and load the most appropriate driver and only then create the device object. If devcon is doing more than just an installation and is causing this issue, what are other installation options that would result in the desired behaviour, ie. creation of the new device object only when requested?

When I tried to check what’s going on with the MS Toaster example, the behaviour was no different. When I used devcon to install WdfSimple toaster driver, it immediately showed up in the Device Manager as a fully operational device, so exactly the same thing I was experiencing with my own drivers. This casted a shadow of a doubt that my understanding of how PNP manager worked was correct. What’s the real story here?