QUERY_INTERFACE with empty GUID

Is there a reason why I might see a IRP_MN_QUERY_INTERFACE IRP come
through to my PDO that has an empty (all zeros) GUID?

I am tinkering with creating a USB\ROOT_HUB for attaching to a xen
virtualised usb hub. I see a IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO which I
process (put the PDO in the Information field… not sure if that’s
right), then URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE, which I also
process, then another URB_FUNCTION_GET_DESCRIPTOR, then a
URB_FUNCTION_SELECT_CONFIGURATION which I haven’t yet finished the code
to process (it doesn’t fill in the right bits and pieces), then after
that I get the QUERY_INTERFACE asking for an empty GUID. The Size field
is set to 65535 and the Version is set to 1, so I get the feeling that
it is supposed to be legitimate.

After all that, Windows tells me it has found a device. It gets the VID
(Vendor ID) and PID (Product ID) right as I am processing GET_DESCRIPTOR
correctly, but the device in question is a USB Storage device and so
needs a class driver but I’m not filling that out.

I would expect that somewhere along the line Windows should be asking me
about my hub device (number of ports, power, etc) but I haven’t seen
that… I was hoping that that’s what the QUERY_INTERFACE would be
asking for but all I see is the empty GUID.

Any suggestions on the empty GUID? (apart from the fact that I’m on my
own emulating a root hub :slight_smile:

Thanks

James

> I see a IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO which I

process (put the PDO in the Information field… not sure if that’s
right)

And it turns out that it’s not right… and in fact completely wrong.
IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO is described in the usbioctl.h and I
didn’t look there - I just looked in the ddk docs where it says "This
I/O request is used internally by the hub driver. Do not use this
request. "

James