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.