Usb audio.

I have a PDO that sits beneath usbaudio.sys and receives and processes usb urbs. Everything goes like clockwork till after an URB_FUNCTION_CLASS_INTERFACE (which I handle correctly) I get no more urbs from usbaudio.sys

I attached lower/upper filter drivers to usbaudio to monitor urbs, and see that it sends my PDO an IRP_MJ_PNP with minor code IRP_MN_QUERY_INTERFACE. I see the irp coming into my driver (using WdfDeviceInitAssignWdmIrpPreprocessCallback) and after this I see a IRP_MN_REMOVE_DEVICE being delivered to the usbaudio driver from above. So I assume it stops. The interface that was asked for had a guid 4747b320-62ce-11cf-a5d6-28db04c10000. I couldn’t find this in wdmguid.h, so a search on the internet yeilded:

Device Interface
Device Interface GUID KSMEDIUMSETID_Standard
Device Interface GUID Value {4747b320-62ce-11cf-a5d6-28db04c10000}
Device Interface Path \?\root#system#0000#{4747b320-62ce-11cf-a5d6-28db04c10000}

Does anyone know what this is, if i need to handle it, more info on it, etc.

The device I plugged in was a Logitech headphone.

Thanks,

Kevin.

xxxxx@gmail.com wrote:

I have a PDO that sits beneath usbaudio.sys and receives and processes usb urbs. Everything goes like clockwork till after an URB_FUNCTION_CLASS_INTERFACE (which I handle correctly) I get no more urbs from usbaudio.sys

I attached lower/upper filter drivers to usbaudio to monitor urbs, and see that it sends my PDO an IRP_MJ_PNP with minor code IRP_MN_QUERY_INTERFACE. I see the irp coming into my driver (using WdfDeviceInitAssignWdmIrpPreprocessCallback) and after this I see a IRP_MN_REMOVE_DEVICE being delivered to the usbaudio driver from above. So I assume it stops. The interface that was asked for had a guid 4747b320-62ce-11cf-a5d6-28db04c10000.

Do you see the IRP_MN_REMOVE_DEVICE happen immediately? I can’t explain
that.

In some cases, ks.sys negotiates a private interface with the driver
(usbaudio.sys in this case) using IOCTL_KS_HANDSHAKE. In this call,
they exchange a set of function pointers. After that, you no longer see
IRPs.

I couldn’t find this in wdmguid.h, so a search on the internet yeilded:

It’s in ks.h “Findstr” is your friend. Further, you’ll see that
REFERENCE_BUS_INTERFACE is set equal to the same name, and that’s the
interface that gets exchanged. It’s an interface for manipulating
define objects. Again, defined in ks.h.


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

Yes IRP_MN_REMOVE_DEVICE is the next IRP after the IRP_MN_QUERY_INTERFACE.

Thanks for the tip on the REFERENCE_BUS_INTERFACE, I will look into it.

I am guessing the QI failed and as a result, the START_DEVICE failed. In such a scenario, you will immediately get a remove device when a start irp is failed

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@gmail.com
Sent: Thursday, February 25, 2010 1:43 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Usb audio.

Yes IRP_MN_REMOVE_DEVICE is the next IRP after the IRP_MN_QUERY_INTERFACE.

Thanks for the tip on the REFERENCE_BUS_INTERFACE, I will look into it.


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