[wdmaudiodev] Re: IPinName problem

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 2 Feb 2011 23:41:04 +0000

Are you passing a different name to PcRegisterSubdevice the second time around?
________________________________________
From: wdmaudiodev-bounce@xxxxxxxxxxxxx [wdmaudiodev-bounce@xxxxxxxxxxxxx] on 
behalf of Jeff Pages [jeff@xxxxxxxxxxxxxxxx]
Sent: Wednesday, February 02, 2011 2:27 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: IPinName problem

Hi Matthew,

Thanks for your detailed response, however I’m now more confused than ever.
In the “Windows 7 Changes Related to Audio Drivers” paper, it says “Miniport
drivers can use IPinName to dynamically customize endpoint names based on
endpoint state or other conditions” and in the WDK documentation on IPinName
it says “In Windows 7 and later operating systems, the IPinName interface is
used by miniport drivers to report and update the names of audio endpoints”,
the key words being "dynamic" and "update".

The application I have is a DAB digital radio receiver card which creates an
audio capture endpoint for each radio service being broadcast on the
ensemble, using each broadcaster’s transmitted service name as the
corresponding endpoint’s friendly name. These service names can frequently
change, especially for special event services, for example, last week one of
the services was covering the Australian Open Tennis tournament and was
named “Aus Open” whereas this week they’re providing extended news coverage
of tropical cyclone Yasi and that service is now called “Cyclone”. I need to
be able to update the endpoint names to correspond with these changing
broadcast service names.

You said the endpoint can be torn down and rebuilt by unregistering the
interface, however I’ve tried unregistering the topology and wave miniports
using the IUnregisterSubdevice interface and then recreating them, but the
original endpoint name still persists. The only way I’ve been able to get
the endpoint name to update is to completely uninstall the driver in Device
Manager and reinstall it, but that’s clearly not an acceptable solution for
the end user.

Jeff



>First let me answer a more general question: "how can a kernel
streaming driver let Windows know that something has changed?"
> 
>The answer to this more general question is, "raise a KS event."
> 
>http://msdn.microsoft.com/en-us/library/ff536195(v=VS.85).aspx
> 
>For example, if your list of supported formats changes, you would raise a
KSEVENT_PINCAPS_FORMATCHANGE event.
> 
>To answer your more specific question: Windows will (in most cases) use the
KSPROPERTY_PIN_NAME property of a streaming pin as the name of the playback
or capture device, when creating the audio endpoint.  However, once the
endpoint is created, the name is fixed, and only the user can change it (via
the Sound control panel.)  In particular there is no KSEVENT_..._NAMECHANGE
event.
> 
>As you have observed, the KSPROPERTY_PIN_NAME is still used in the Levels
tab.
> 
>You can tear the endpoint down by unregistering the KS interface, and then
reregistering it will cause a new endpoint to be created (with the new
name) but this will wipe out any settings changes the user has made to the
endpoint.
> 

******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: