We use the same PhysicalDeviceObject given as a parameter in the
AddDevice() handler.
Can you see one possible reason for this ?
Our driver is BDA driver with USB WDM lower edge. The strange thing is
that problem occurs only on Windows 2000 platform with USB composite
device. On Windows XP/Vista, or if the device exposes only one single
USB interface, the call to IoGetDeviceProperty() is successful.
Thanks for your help
Francois
> Our driver is BDA driver with USB WDM lower edge. The strange thing is
> that problem occurs only on Windows 2000 platform with USB composite
> device. On Windows XP/Vista, or if the device exposes only one single
> USB interface, the call to IoGetDeviceProperty() is successful.
Which property are you trying to pull?
--
Please do not send e-mail directly to this alias. this alias is for
newsgroup purposes only.
This posting is provided "AS IS" with no warranties, and confers no rights.
"francois" <fkanou...@yahoo.fr> wrote in message
news:9f7069d1-654f-4457...@d4g2000prg.googlegroups.com...
The parent driver is usbccgp.sys on Windows XP. On Windows 2000, it
should be usbhub.sys.
I can't see the reason why it is different, both devices are USB2.0.
> I just figured out that when the device is multifunction, the parent
> driver is usbhub.
> But when the device just exposes one single USB interface, the parent
> driver is usbhub20.
Think about the conditions for getting the USB\COMPOSITE compatible
ID[1] (and thus getting usbhub.sys as your parent on Win2k):
1) Number of configurations == one
2) Number of interfaces > one
3) Device class/subclass/protocol == 0x00
Thus, if your device only exposes a single function, you're not going
to get the generic parent loaded for your device. (Also note that
this will only be decided at device installation time, and not every
time you plug in -- the device instance ID only contains VID and PID,
and nothing from the other descriptors.)
> We are trying to pull "DevicePropertyBusTypeGuid" property
Why? You already know it's a USB device, aren't you going to get the
USB bus GUID every time?
Unless, of course, your driver is shared with 1394, or PCI, or
something equally insidious, perhaps..
Indeed, our driver is supporting USB and PCI devices.
Thank you for your inputs.
If my understanding is correct, usbhub20 is expected to be the parent
driver for non-composite devices, and usbhub the parent driver for
composite devices if the 3 conditions you pointed are satisfied.
But do you see any reason why the call to IoGetDeviceProperty() would
failed ?
I figured out that IoGetDeviceProperty() was dereferencing some field
in the DevNode from the USBHUB DeviceObjectExtension. That field
(offsett 0x68 in the DevNode) equals 0xFFFF and the function returns
STATUS_OBJECT_NOT_FOUND.
That same field equals 0x0002 in the DevNode from USBHUB20
DeviceObjectExtension (non composite device).
d
--
Please do not send e-mail directly to this alias. this alias is for
newsgroup purposes only.
This posting is provided "AS IS" with no warranties, and confers no rights.
"francois" <fkanou...@yahoo.fr> wrote in message
news:6c2a8a1d-f8e7-4423...@p25g2000hsf.googlegroups.com...
Thank you Doron. On Vista, everything works fine. The problem occurs
on Windows 2000 only.