Virtual Audio Device woes on Windows 10

Hi all,

I’m trying to get my VAD to work on Win 10, it is based on the old sysvad WaveCyclic example (using Porcls).

In essence the problem is that the device, named “Wave”, can change its capabilities (#channels, samplerates aso) through a control interface. But with the new and fancy caching of capabilities in Windows 10 (which I have no clue what the use is for), whenever I change the caps from the first registered caps, Sound control panel will not display the “Advanced” tab for the device (where samplerates are selected), thereby rendering it useless.

One way to tell Windows that the caps has changed, is through the KSEVENTSETID_PinCapsChange event. I post this whenever I bring up the device, but alas, Windows does not seem to requery the capabilities. There seems to be a bug in this mechanism acc. to these sources (https://github.com/eiz/SynchronousAudioRouter/blob/master/SynchronousAudioRouter/control.cpp#L702) anyway.

So, the workaround seems to be to change the “Wave” name whenever the caps change. So, I thought I’d make a naming scheme “Wave_XXXX” where XXXX is a hash combination of #channels + all supported samplerates. But if I do this, Sound control panel doesn’t show my device at all, probably because the “Wave” name that is also specified in the .inf file:
[Strings]

KSNAME_Wave=“Wave”
KSNAME_Topology=“Topology”

[DevInst..Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Topology%,DevInst.I.Topology
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,DevInst.I.Wave

is not matched in the driver. So, the question is, how do I programmatically do an “AddInterface” with the “Wave_XXXX” name so it can popup in the Sound control panel ?

Regards
/Robert