[wdmaudiodev] Re: IPinName problem

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Thu, 3 Feb 2011 16:10:49 +0000

That's correct.

My understanding is that, at endpoint creation time, the KSPROPERTY_PIN_NAME is 
used (among other things, for example the bridge pin's Category property - if 
the KS node type is one that maps to the Speakers EFormFactor, then the pin 
name is ignored) to populate the PKEY_Device_DeviceDesc endpoint property key.  
Once the endpoint has been created, the only way to change that property is (as 
the user) via the Sound control panel, or (with admin privileges) via 
IMMDevice::OpenPropertyStore(STGM_[READ]WRITE).

The new IPinName method is the miniport driver's way to populate 
KSPROPERTY_PIN_NAME; it doesn't change the way the audio stack interacts with 
drivers.

hdaudio.sys uses this mechanism in Windows 7 for HDMI outputs that support the 
Intel HD Audio DCNs.  When an HDMI sink is plugged in, the EDID data is parsed, 
a new subdevice is registered, and the sink name (the name of the monitor or 
receiver) is sent up via IPinName / KSPROPERTY_PIN_NAME.

The idea of a "hey, Windows, requery the pin name" event is intriguing and I 
will start a discussion internally to Microsoft on that topic.
________________________________________
From: wdmaudiodev-bounce@xxxxxxxxxxxxx [wdmaudiodev-bounce@xxxxxxxxxxxxx] on 
behalf of Jeff Pages [jeff@xxxxxxxxxxxxxxxx]
Sent: Wednesday, February 02, 2011 8:25 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: IPinName problem

Matthew,

This workaround looks like it's working, although destroying an endpoint and
creating a brand new different one from scratch isn't really in the spirit
of the IPinName documentation which refers to "updating" and "dynamically
changing" an endpoint's name. Perhaps, as you suggest, there's a need for a
KSEVENT_..._NAMECHANGE event.

By the way, you said...

> Otherwise Windows assumes it's the same endpoint come back to life and
doesn't bother requerying KSPROPERTY_PIN_NAME

but I noticed in the debugger that it does requery KSPROPERTY_PIN_NAME (it
actually queries this every time the endpoints are enumerated) but just
doesn't use the name it gets back (except for the level control which does
get updated).

Thanks,

Jeff


-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jeff Pages
Sent: Thursday, 3 February 2011 11:34 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: IPinName problem

Thanks Matthew. I'll try using a concatenation of the DAB Service Id and the
friendly name as the subdevice name and see how that goes.

Jeff


-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eerde
Sent: Thursday, 3 February 2011 11:27 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: IPinName problem

Yes, subdevice names need to be unique (even if they're not exposed at the
same time.)  Otherwise Windows assumes it's the same endpoint come back to
life and doesn't bother requerying KSPROPERTY_PIN_NAME.
________________________________________
From: wdmaudiodev-bounce@xxxxxxxxxxxxx [wdmaudiodev-bounce@xxxxxxxxxxxxx] on
behalf of Jeff Pages [jeff@xxxxxxxxxxxxxxxx]
Sent: Wednesday, February 02, 2011 3:56 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: IPinName problem

>Are you passing a different name to PcRegisterSubdevice the second time
around?

The subdevice name passed to PcRegisterSubdevice (which I base on the DAB
service ID number) is unchanged, only the friendly name is changed. I'm
guessing now I should be using a different name for the subdevice, is that
right?

Jeff


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

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/


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

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/******************

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: