[wdmaudiodev] Re: Question on MSDN sysvad driver example in combination with Ks Studio; failing pin instantiation.

  • From: "Matthew van Eerde" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "Matthew.van.Eerde" for DMARC)
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 7 Jun 2016 16:05:32 +0000

KsCreatePin has a lot of different arguments. They need to be "just right" for 
KsCreatePin to succeed. The specific conditions for "just right" vary from 
driver to driver.

You can figure out the right arguments to pass by close inspection of the 
properties exposed by the driver. For example, the KSPIN_DESCRIPTOR.Interfaces 
list will tell you what KSPIN_INTERFACE values the driver supports. When 
calling KsCreatePin, you will need to set the KSPIN_CONNECT.Interface argument 
to one of these.

SysVad is a WaveRT miniport, so it will only support KSPIN_CONNECT.Interface = 
{ KSINTERFACESETID_Standard, KSINTERFACE_STANDARD_LOOPED_STREAMING }.

By comparison, the Microsoft USB Audio Class 1.0 driver usbaudio.sys supports 
only KSPIN_CONNECT.Interface = { KSINTERFACESETID_Standard, 
KSINTERFACE_STANDARD_STREAMING }.
________________________________
From: wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx> on 
behalf of Koll, Rob <Rob.Koll@xxxxxxxxxxx>
Sent: Tuesday, June 07, 2016 7:05:22 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Question on MSDN sysvad driver example in combination 
with Ks Studio; failing pin instantiation.

All,

I am quite new to driver development. As starting point I use the MSDN sysvad 
source code.

First of all, I noted that when building with MSVC professional 2015 update 2 
there are issues around the inline use of new and delete operators. I solved 
that by copying stdunk.h into my project, removing the inline code and 
providing a stdunk.cpp with the now missing implementations. Please let me know 
if this is a known issue, and whether or not my approach is correct.

After building the sysvad example (on a Win7 machine) I can deploy it onto a 
Win 10 target machine. I can see the new device and audio end points. I can 
select the sysvad Wave Speaker as default device. Upon playing music with media 
player a file is created and written into the C:\ directory. The volume 
indicator in the Playback Devices box goes halfway, and falls back to zero upon 
ending the playback.

I was able to add a new pin to the device.

My assumption is that I should be able to instantiate the pin using Ks Studio 
(where all devices and end points are visible). The pin creation fails, with a 
message indicating that KsCreatePin fails. There are different codes, depending 
on how I exactly instantiate the pin.

One of my coworkers suggests that there might be some function required in the 
driver supporting the pin creation, and that function may be missing or return 
some error. Please inform me on the presence of such a function.

If possible, inform me on the best approach to find out what is going wrong 
here, how to solve this?

The funny thing is that I have a RME Hammerfall DSP Multitrace device on the 
test device. For the ADAT channels I can instantiate pins, even play music from 
a Wave File Source in Ks Studio. The music is played way to fast, but at least 
there is some output.

Kind regards,
Rob Koll

________________________________
The information contained in this message may be confidential and legally 
protected under applicable law. The message is intended solely for the 
addressee(s). If you are not the intended recipient, you are hereby notified 
that any use, forwarding, dissemination, or reproduction of this message is 
strictly prohibited and may be unlawful. If you are not the intended recipient, 
please contact the sender by return e-mail and destroy all copies of the 
original message.

Other related posts: