I’m working on an audio driver for my GPU, based on Microsoft’s sysvad sample driver, and am running into some bizarre behavior that I haven’t been able to find a solution for.
My driver declares both a WaveRT and a Topology filter, both of which I can correctly instantiate inside of KS Studio and both of which validate without issue. When my driver is installed, a new output device is also created and I can select it in the Sound settings in the UI. However, its volume is permanently fixed to zero and the taskbar sound icon shows an X. Hovering over it reports “No speakers or headphones are plugged in.”
My Topology filter’s property handler handles the KSPROPERTY_JACK_DESCRIPTION, KSPROPERTY_JACK_DESCRIPTION2, and KSPROPERTY_JACK_SINK_INFO properties, and reports that the connection status is connected.
When the driver is first installed and when I attempt to change the volume, I see it checking the WaveRT instance for supported formats, finding one, creating a new instance of my WaveRTStream class, triggering an allocation through AllocateBufferWithNotification, and then immediately freeing that same buffer, closing the stream, and repeating the process. It does this a dozen or so times before stopping and going idle. I never get calls to change the stream’s state or anything else that indicates it’s trying to do something that I’m not handling properly to cause this behavior.
Does anyone have any idea what might be going on here? Is there any way for me to have Windows report additional information about the behavior of the audio systems that might help me track down what I’m doing wrong?
Thanks!