none
How can I rename custom sound panel tab elements... RRS feed

  • Question

  • I have an audio driver, based off MSVAD, that implements a few dev specific nodes in the topology. They showup in a custom tab in the sound panel. But I'm see no way to change the names. Is it possible to rename the checkboxes/tab?

    EDIT: Just to clarify, I'm trying to use the KSPROPERTY_TOPOLOGY_NAME property to actually name my dev nodes. However, Windows doesn't seem to want to call my handler.

    /*
     * Topology filter dev property handler
     */
    static
    PCPROPERTY_ITEM PropertiesDev[] =
    {
    	{
    		&KSPROPSETID_Audio,
    		KSPROPERTY_AUDIO_DEV_SPECIFIC,
    		KSPROPERTY_TYPE_BASICSUPPORT | KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET,
    		PropertyHandlerTopology
    	},
    	{
    		&KSPROPSETID_Topology,
    		KSPROPERTY_TOPOLOGY_NAME,
    		KSPROPERTY_TYPE_BASICSUPPORT | KSPROPERTY_TYPE_GET,
    		PropertyHandlerTopologyNodeName
    	},
    };
    DEFINE_PCAUTOMATION_TABLE_PROP(AutomationDev, PropertiesDev);
    ...
    /*
     * Topology filter nodes
     */
    static 
    PCNODE_DESCRIPTOR TopologyNodes[] = 
    {
    	/*
    	 * NODE_TOPO_ENABLE_OPTION1
    	 */
    	{
    		0,
    		&AutomationDev,
    		&KSNODETYPE_DEV_SPECIFIC,
    		&KSAUDFNAME_ENABLE_OPT1 // custom guid
    	},
    	/*
    	 * NODE_TOPO_ENABLE_OPTION2
    	 */
    	{
    		0,
    		&AutomationDev,
    		&KSNODETYPE_DEV_SPECIFIC,
    		&KSAUDFNAME_ENABLE_OPT2 // custom guid
    	},
    };

    • Edited by David.Jolly Thursday, November 22, 2012 12:35 AM
    Wednesday, November 21, 2012 5:39 PM

Answers

  • I actually figured this out a while back, and forgot to post the answer.

    The solution I can up with was to use the inf file to place the strings into the registry like so:

    [driver.AddReg]
    ...
    HKLM,%MEDIA_CATEGORIES%\%driver.enableOpt1GUID%,Name,,%driver.enableOpt1%
    HKLM,%MEDIA_CATEGORIES%\%driver.enableOpt2GUID%,Name,,%driver.enableOpt2%
    ...
    [Strings]
    driver.enableOpt1 = "Option 1"
    driver.enableOpt2 = "Option 2"
    driver.enableOpt1GUID = "{8911FB78-3E51-4971-BFAA-7866CCA50A95}"
    driver.enableOpt2GUID = "{DB34CA9F-6F64-4746-967B-AFB288C3B749}"
    MEDIA_CATEGORIES = "SYSTEM\CurrentControlSet\Control\MediaCategories"
    Then I assigned the node names in the topology to the GUIDs. It worked just fine after that.

    Thursday, December 6, 2012 10:28 PM

All replies

  • KSPROPERTY_TOPOLOGY_NAME is indeed the right property, but I don't know whether portcls will plumb this property through from miniport implementations.

    As a troubleshooting step, can you run KS Studio and see if KSPROPERTY_TOPOLOGY_NAME is advertised on your nodes?


    Matthew van Eerde

    Thursday, December 6, 2012 7:24 PM
  • I actually figured this out a while back, and forgot to post the answer.

    The solution I can up with was to use the inf file to place the strings into the registry like so:

    [driver.AddReg]
    ...
    HKLM,%MEDIA_CATEGORIES%\%driver.enableOpt1GUID%,Name,,%driver.enableOpt1%
    HKLM,%MEDIA_CATEGORIES%\%driver.enableOpt2GUID%,Name,,%driver.enableOpt2%
    ...
    [Strings]
    driver.enableOpt1 = "Option 1"
    driver.enableOpt2 = "Option 2"
    driver.enableOpt1GUID = "{8911FB78-3E51-4971-BFAA-7866CCA50A95}"
    driver.enableOpt2GUID = "{DB34CA9F-6F64-4746-967B-AFB288C3B749}"
    MEDIA_CATEGORIES = "SYSTEM\CurrentControlSet\Control\MediaCategories"
    Then I assigned the node names in the topology to the GUIDs. It worked just fine after that.

    Thursday, December 6, 2012 10:28 PM