Proprietary Speaker-Configuration Utilities
Hardware vendors occasionally provide proprietary speaker-configuration utilities to be used with their audio drivers in place of the speaker dialog in Control Panel. Such utilities have a potential problem: they sometimes change the speaker configuration in a proprietary way that fails to notify Windows of the change. This can result in a bad user experience if the settings in the proprietary utility do not match those in Control Panel. If you believe that your device requires a proprietary utility, you should take the following steps to integrate your utility with Windows:
Implement a DAC node in your driver that supports the KSPROPERTY_AUDIO_CHANNEL_CONFIG property. Through this node, Windows informs the driver immediately of changes made by the user in Control Panel.
Design your configuration utility to manage the speaker configuration by calling the DirectSound methods GetSpeakerConfig and SetSpeakerConfig.
The SetSpeakerConfig call informs DirectSound (and Windows) of changes that your utility makes to the speaker configuration. Also, your utility's initialization code should call GetSpeakerConfig to determine if the user has changed any settings through Control Panel. If so, the utility should reflect these changes in its user interface.
If your device supports multichannel formats that have no precise Windows equivalents, your configuration utility should do the following:
When changing to a speaker configuration that has no precise Windows equivalent, call SetSpeakerConfig with the closest Windows equivalent. This is in addition to making any proprietary calls that are needed to configure the driver.
When changing to a speaker configuration that does have a precise Windows equivalent, call SetSpeakerConfig to update the speaker mode.
If you make Windows more aware of your device's capabilities, DirectSound can enable some features that it could not otherwise enable (for example, multichannel 3D panning).