> We are trying to give our USB CDCACM device the ability to auto install
> driver from usb mass storage device. We made a composite device with 3
> interface. 2 for CDCACM and 1 for mass storage. When the device connects to
> PC, the driver shall be installed from mass storage.
Which generic parent driver are you using? usbccgp.sys doesn't
support grouping by CDC union descriptors, and you say your CDC
function has two interfaces, so this seems like you're going to get
three child devices, which isn't what you want..
> However, when the device connencts to PC, Windows pops out an "Add
> Hardware Wizard" and it asks us to install driver for CDCACM device. The mass
> storage does not show up until we install the driver for CDCACM device
> manually. We cannot auto install driver for CDCACM from mass storage because
> it only shows up after we install CDCACM driver.
I don't think the child device creation order is guaranteed, so what
you're trying to do is likely never going to work.
Plus, even if the mass storage device did install first and start
working, it would have to have an Autorun that preinstalled the
drivers without user intervention, *and* this would have to happen
before Setup started looking for the CDC ACM drivers. So, not going
to work for that reason either.
Sorry for not mentioning it. We use IAD descriptor to group the two CDC
interfaces into one device.
> > However, when the device connencts to PC, Windows pops out an "Add
> > Hardware Wizard" and it asks us to install driver for CDCACM device. The mass
> > storage does not show up until we install the driver for CDCACM device
> > manually. We cannot auto install driver for CDCACM from mass storage because
> > it only shows up after we install CDCACM driver.
>
> I don't think the child device creation order is guaranteed, so what
> you're trying to do is likely never going to work.
>
> Plus, even if the mass storage device did install first and start
> working, it would have to have an Autorun that preinstalled the
> drivers without user intervention, *and* this would have to happen
> before Setup started looking for the CDC ACM drivers. So, not going
> to work for that reason either.
There must be some "hidden" order for child device creation :(
I am still wondering why I cannot have mass storage device without
installing CDC ACM drivers first. If I did not install CDC ACM drivers, the
mass storage should still be enumerated, shouldn't it?
> There must be some "hidden" order for child device creation :(
There "must" be? Why do you think that?
> I am still wondering why I cannot have mass storage device without
> installing CDC ACM drivers first. If I did not install CDC ACM drivers, the
> mass storage should still be enumerated, shouldn't it?
Sure, the mass storage PDO will be created by the generic parent
driver. But until you go through device installation for that device,
it's effectively like it doesn't exist.