Fail to get the second interface handle of USB composite device on XP SP2

I’m developing usb video class (UVC) driver.
UVC device consists of two interfaces - control and stream interface.
It’s described as one interface collection by IAD.
USB Common Class Generic Parent Driver (usbccgp.sys) of XP SP2
will be load first for UVC device and create a PDO for the video
interface collection.

I would develop my UVC driver for the video interface collection.
My problem is that I cannot get the handle of interface 1 after the
driver send set configuration Urb. Only interface 0’s information
is filled in returned Urb though I can parse interface 1’s descriptor
from the configuration descriptor.

I ever tried to modify my INF to fit the device ID directly.
That is, usbccgp.sys is not load for my device.
The handles of interface 0 and 1 are filled in returned Urb after the driver
send set configuration request.

I have checked the created Urb for these two cases.
The contents of Urb are the same.

Is any suggestion about this problem?
What should be cared when usbccgp.sys is load?

Best Regards
Jack Huang

Jack Huang wrote:

I’m developing usb video class (UVC) driver.
UVC device consists of two interfaces - control and stream interface.
It’s described as one interface collection by IAD.
USB Common Class Generic Parent Driver (usbccgp.sys) of XP SP2
will be load first for UVC device and create a PDO for the video
interface collection.

The answer is that you should not be testing your driver on XP SP2. In
that case, the standard usbvideo.sys will handle your device. The only
reason you need a custom UVC driver is for Windows 2000 and Windows 9X.
Those systems won’t see the video class device as an interface collection.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Tim Roberts wrote:

The answer is that you should not be testing your driver on
XP SP2. In that case, the standard usbvideo.sys will handle
your device. The only reason you need a custom UVC driver
is for Windows 2000 and Windows 9X. Those systems won’t
see the video class device as an interface collection.

He posted this on the newsgroup also, and I basically said:

  1. why are you using usbccgp at all, unless there are other interfaces not being mentioned

  2. my guess is you need to send SELECT_INTERFACE by hand to get the second interface’s handle

I can’t really speak to your objections about the setup since I don’t know anything about USB video…

You should be sure that you have the hotfix version of USBCCGP installed for XP SP2, which fixes an IAD problem similar to what you are describing:

http://support.microsoft.com/kb/901122

You can request the hotfix here:

https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&WS=hotfix

-Martin

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Jack Huang
Sent: Tuesday, October 02, 2007 9:09 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Fail to get the second interface handle of USB composite device on XP SP2

I’m developing usb video class (UVC) driver.
UVC device consists of two interfaces - control and stream interface.
It’s described as one interface collection by IAD.
USB Common Class Generic Parent Driver (usbccgp.sys) of XP SP2
will be load first for UVC device and create a PDO for the video
interface collection.

I would develop my UVC driver for the video interface collection.
My problem is that I cannot get the handle of interface 1 after the
driver send set configuration Urb. Only interface 0’s information
is filled in returned Urb though I can parse interface 1’s descriptor
from the configuration descriptor.

I ever tried to modify my INF to fit the device ID directly.
That is, usbccgp.sys is not load for my device.
The handles of interface 0 and 1 are filled in returned Urb after the driver
send set configuration request.

I have checked the created Urb for these two cases.
The contents of Urb are the same.

Is any suggestion about this problem?
What should be cared when usbccgp.sys is load?

Best Regards
Jack Huang


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Yes, you are right…
However, software engineer often needs to accept this kind of request.
The purpose is the work around solution or enhanced function.
Therefore, I consider these cases in advance.

Our device may contain both video and audio functions.
We need usbccgp.sys is load for supporting two interface collections on XP
SP2.

On the older OS, I think I need to write a USB parent driver to support IAD.

Best Regards
Jack Huang

“Tim Roberts” …
> Jack Huang wrote:
>> I’m developing usb video class (UVC) driver.
>> UVC device consists of two interfaces - control and stream interface.
>> It’s described as one interface collection by IAD.
>> USB Common Class Generic Parent Driver (usbccgp.sys) of XP SP2
>> will be load first for UVC device and create a PDO for the video
>> interface collection.
>>
>
> The answer is that you should not be testing your driver on XP SP2. In
> that case, the standard usbvideo.sys will handle your device. The only
> reason you need a custom UVC driver is for Windows 2000 and Windows 9X.
> Those systems won’t see the video class device as an interface collection.
>
> –
> Tim Roberts, xxxxx@probo.com
> Providenza & Boekelheide, Inc.
>
>

Yes… it’s the problem what I described.
Thanks for your help!

“Martin Borve” …
You should be sure that you have the hotfix version of USBCCGP installed for
XP SP2, which fixes an IAD problem similar to what you are describing:

http://support.microsoft.com/kb/901122

You can request the hotfix here:

https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&WS=hotfix

-Martin