[wdmaudiodev] Re: How to bind a symbolic link to a mixer, midi or wave device name?

  • From: "Who Cares" <universalkludge@xxxxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Wed, 29 Mar 2006 16:59:27 +0000

Hi Richard,

I implemented this stuff you described here in great details, but it does not to seem to work as expected ? in the ?Audio devices? applet I still don?t see the friendly name I specified. So I made some experiments w/ the USB stereo device. It appears to be that the
HKLM\System\CurrentControlSet\Control\MediaCategories\<NAME GUID>\Name value is not queried at all ? I checked it with the regmon. And I found out that a friendly name for the ?Audio devices? applet is obtained from the HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\SomeGuid\Properties\DEVPKEY_DeviceInterface_FriendlyName value ? I have changed it there, it got changed in the ?Audio devices? applet.


Any clarifications?

TIA

Andrew



From: "Richard Fricks" <Richard.Fricks@xxxxxxxxxxxxx>
Reply-To: wdmaudiodev@xxxxxxxxxxxxx
To: <wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: How to bind a symbolic link to a mixer, midi or wave device name?
Date: Thu, 9 Feb 2006 09:11:55 -0800



Windows XP and following supports the property KSPROPERTY_GENERAL_COMPONENTID. This allows audio devices to uniquely identify themselves by controlling the value of their friendly name. The basic idea is that you write your unique friendly name to the registry: HKLM\System\CurrentControlSet\Control\MediaCategories\<NAME GUID>\Name = "your unique device name".

This value can bet set in your devices INF file using a statement like
[xxxxx.AddReg]
HKLM,"SYSTEM\CurrentControlSet\Control\MediaCategories\{946A7B1A-EBBC-42
2a-A81F-F07C8D40D3B4}",Name,,"My unique device name"

Or you can write this registry value when your driver loads in its
initialization routine. Note that the guid above needs to be unique -
run guidgen.exe to create one.

You then implement support for the KSPROPERTY_GENERAL_COMPONENTID
property in your driver. KS.H includes a macro
DEFINE_KSPROPERTY_ITEM_GENERAL_COMPONENTID that you can use to help
define this. The audio system will use the Name GUID you return in the
KSCOMPONENTID structure to look up a "Name" key in the registry. For
this example, the guid you would return from this property call would be
"{946A7B1A-EBBC-422a-A81F-F07C8D40D3B4}".

This should address the issue of how to get your device to uniquely
identify itself. If the above isn't working or is but still doesn't
address the issue let me know as I would like to understand why.

Thanks,
Richard Fricks
Technical Lead, Microsoft DDK


-----Original Message----- From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of uwe kirst Sent: Thursday, February 09, 2006 8:30 AM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] Re: How to bind a symbolic link to a mixer, midi or wave device name?

Yann Hamiaux wrote:

>So far, I've been able to enumerate all MIDI symbolic link and get
their
>friendly name. However, when I have 2 devices with the same VID and
PID, the
>friendly name is exactly the same. While when I look to the list mixer
name
>they do have a different name "Mixer Device" and "Mixer Device (2)".
>
Thats probably the situation under XP -> the instance id is added by
windows atomatically.
Under Vista the instance id is missing (thats at least my experiance).
I tried to add it within my driver, but I found no reliable way of doing

so. If you have two physical identical devices and you install them
one after each other while the other is not powererd, they will get the
same name. If you now power them both, they will have the same name,
because the name is set during install not during driver load.
I personally would prefer to add the unique id owned by the device to
the friendly name, but this seem to be impossible because the names are
added during install by the .inf file. If no other idea comes to my mind

I think I will try to add a random (unique) name by my driver rather by
.inf file. Maybee that will help?

>So far,
>I deal with some SetupDi... functions to enumerate all devices in a
>category. I also, kind of reverse-engineer the GUID I need for the
>enumeration by looking to the registry under
>"Local_Machine\System\CurrentControlSet\Control\DeviceClasses\". Maybe
there
>is a .h file I should look to have a proper list of these GUID?
>
>
>
I was told that you generate these GUIDs by yourself with guigen. They
are added during installation by the .inf file. The header file only
cointains some predefined (by microsoft) device types.
Uwe

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

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: