[wdmaudiodev] Re: WHQL for virtual audio driver

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 24 Nov 2015 01:59:01 +0000

Yup.

Enumeration (ROOT\..., HDAUDIO\..., USB\...) and class (System, Media, …) are
independent concepts.

For your driver, ROOT\... and Class=Media are correct.

The test bug is specific to ROOT\... - changing your Class=Media won’t make any
difference.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Arthur Chung (RDCT)
Sent: Monday, November 23, 2015 5:55 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: WHQL for virtual audio driver


Hi Matthew,



Thanks for your help, but I'm afraid that I don't quite understand it.

You mentioned that root-enumerated devices should be included in the test.

However, the id-not-found issue remains even if I install the driver under
Media category?



________________________________
從: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[wdmaudiodev-bounce@xxxxxxxxxxxxx] 代表 Matthew van Eerde
[Matthew.van.Eerde@xxxxxxxxxxxxx]
寄件日期: 2015年11月21日 上午 01:06
至: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
主旨: [wdmaudiodev] Re: WHQL for virtual audio driver
OK, I see the problem.

This is a bug in the test - it’s failing to include a flag to the test
enumeration library that would cause it to include root-enumerated devices.

Please file a support request via WHQL to get an errata (assuming they agree
with my assessment.)

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Arthur Chung (RDCT)
Sent: Thursday, November 19, 2015 11:07 PM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: WHQL for virtual audio driver


The virtual device was selected in HCK as shown in attached hck.jpg.



I also tried to create a new project and machine pool in HCK after driver
installation, but the result is the same.



As for unknown instance id, I find that it's because no category is specified
when I install the driver by Device Manager.

In other words, if I install the driver under Media category, the instance ID
will be "Root\Media\0000" as shown in attached no_hw_id.jpg.

However, the id-not-found issue remains.



________________________________
從: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[wdmaudiodev-bounce@xxxxxxxxxxxxx] 代表 Matthew van Eerde
[Matthew.van.Eerde@xxxxxxxxxxxxx]
寄件日期: 2015年11月17日 下午 07:13
至: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
主旨: [wdmaudiodev] Re: WHQL for virtual audio driver
OK.

I can see from the audioendpoints.exe output that your instance ID is
“Root\UNKNOWN\0000”.

When you run the test from HCK Studio, exactly what device are you selecting
from the HCK Studio UI (can you send a screenshot?)

Have you perhaps uninstalled and reinstalled your audio driver since the HCK
Client gatherer last ran?

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Arthur Chung (RDCT)
Sent: Monday, November 16, 2015 7:15 PM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: WHQL for virtual audio driver


I run Fidelity Test from HCK Studio.
Attached files are outputs from audioendpoints.exe.

"hardware id not found" issue is still there.



________________________________
從: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[wdmaudiodev-bounce@xxxxxxxxxxxxx] 代表 Matthew van Eerde
[Matthew.van.Eerde@xxxxxxxxxxxxx]
寄件日期: 2015年11月13日 上午 03:43
至: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
主旨: [wdmaudiodev] Re: WHQL for virtual audio driver
Follow-ups:

If the answer was “I’m using the command line”, what command line are you using?

Regardless of your answer, please run the tool attached to this blog post. Try
to do this immediately after the test has failed. Run it twice - once as
audioendpoints.exe --endpoints and once as audioendpoints.exe --devices and
send both outputs.

http://blogs.msdn.com/b/matthew_van_eerde/archive/2011/06/13/how-to-enumerate-audio-endpoint-immdevice-properties-on-your-system.aspx

My current theory is that you Remote Desktop’d into the test machine and have
left the default setting of “bring audio to the client” on. This makes it so
that any app which wants to enumerate audio devices will see only the “remote
desktop” audio device. If this is, in fact, the case, the fix is to change the
settings in Remote Desktop to “leave audio at the server.”

http://i.imgur.com/0Hy4Rnh.png

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eerde
Sent: Thursday, November 12, 2015 9:16 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: WHQL for virtual audio driver

Are you running the test through HCK Studio, through HLK Studio, or from the
command line?

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Arthur Chung (RDCT)
Sent: Wednesday, November 11, 2015 11:57 PM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: WHQL for virtual audio driver


Hi,
I have a problem with Fidelity Test.
In the log, after listing my virtual driver's Endpoint Id, Devnode Id, Friendly
Name etc., there's an error, "Did not find a hardware ID for this audio device"
(testsrc\multimediatest\avcore\audio\multiapi\fidelity\proxy\deviceenumerator.cpp
Line:737).
In my INF file, the hardware ID is set as "*MyDevId", just like that in MSVAD
sample.
The same ID could be seen in DeviceManager.
I'm not sure whether the error means the same ID in INF file or what I am
missing here.

________________________________
從: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[wdmaudiodev-bounce@xxxxxxxxxxxxx] 代表 Arthur Chung (RDCT)
[arthur_chung@xxxxxxxxxxxxx]
寄件日期: 2015年11月6日 上午 08:16
至: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
主旨: [wdmaudiodev] Re: WHQL for virtual audio driver

Thanks for your help.

I'll try RoundTrip test first.



________________________________
從: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[wdmaudiodev-bounce@xxxxxxxxxxxxx] 代表 Matthew van Eerde
[Matthew.van.Eerde@xxxxxxxxxxxxx]
寄件日期: 2015年11月4日 下午 07:21
至: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
主旨: [wdmaudiodev] Re: WHQL for virtual audio driver

how could Microsoft do the same

The way WHQL works is you run the tests, submit the results and your
self-signed driver package, WHQL looks at your results, and then re-signs your
driver package.

Microsoft doesn’t have your hardware, so we don’t run any tests on our end to
verify anything before we sign.

(Well, in your case, I suppose we *could*, since the hardware is fake. But the
procedures were designed with real hardware in mind.)

is there any way to tell the test server(test kit) some tests are N/A?
Or how could I tell the test server that my device is unclassified, no need
to do all audio tests?

The test kit is smart enough (in principle, anyway) to *choose* precisely those
tests that are applicable.

If your driver exposes a KSCATEGORY_AUDIO interface, then it is by definition
an audio driver, and the audio tests should be run.

If you think you’ve found a situation where a test is incorrectly chosen as
applicable, when it shouldn’t be - or conversely, if you think a test that
should be applicable is missing - please let us know so we can fix it.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Arthur Chung (RDCT)
Sent: Tuesday, November 3, 2015 6:26 PM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: WHQL for virtual audio driver


My virtual mic could only be fed by my application using some proprietary
methods.
I could do the tests myself by following your instructions, but how could
Microsoft do the same to verify it?
Should I also submit my application to WHQL too?



Or is there any way to tell the test server(test kit) some tests are N/A?



Or how could I tell the test server that my device is unclassified, no need to
do all audio tests?

Microsoft signature only suffices my need, no logo is required.

________________________________
從: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[wdmaudiodev-bounce@xxxxxxxxxxxxx] 代表 Matthew van Eerde
[Matthew.van.Eerde@xxxxxxxxxxxxx]
寄件日期: 2015年11月4日 上午 10:05
至: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
主旨: [wdmaudiodev] Re: WHQL for virtual audio driver
I see.

Well, you can pass RoundTrip by following the instructions.

If you have a microphone endpoint, it will ask you to induce a sine tone on
that microphone endpoint.

For a physical mic, you would need a sine tone generator that you physically
placed next to the mic.

For a virtual mic that feeds from an application playing to some other
endpoint, you would need to find an application that generates a sine tone, and
point it at whatever playback endpoint feeds your virtual mic. For example, you
could use a YouTube video, or you could use the built-in sine generator wizard
in RoundTrip itself.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Arthur Chung (RDCT)
Sent: Tuesday, November 3, 2015 5:58 PM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: WHQL for virtual audio driver


Sorry for not making myself clear.
AP means user mode application as Tim said.



I've already made the audio pipeline working w/ the help of MSVAD and SYSVAD
samples.
My actual question is whether it could pass WHQL tests or not (for some tests
require physical connections).



The reason is I need to get Microsoft signature for silence installation
required by the user.
If I signed the driver myself, there will be a dialog asking something like "if
you trust the publisher..." (with a check box for "always trust").



________________________________
從: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[wdmaudiodev-bounce@xxxxxxxxxxxxx] 代表 Matthew van Eerde
[Matthew.van.Eerde@xxxxxxxxxxxxx]
寄件日期: 2015年11月4日 上午 01:52
至: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
主旨: [wdmaudiodev] Re: WHQL for virtual audio driver
I wasn’t sure whether Arthur meant “application”, “audio precision” (as a
colleague of mine suggested), or “access point” (e.g., perhaps the driver
functions as a Miracast receiver.) I’m still not sure, but like you I am
leaning toward “application”.

Arthur, can you confirm?

Tim, when you say a “pipe to user mode”, do you have in mind:

1. an audio playback endpoint that can be used by a dumb app (like
Virtual Audio Cable does it), or

2. a custom interface which the driver would expose to “in the know”
user-mode code?

The closest thing to audio routing that Windows supports today is the WASAPI
audio loopback interface. In principle a driver could be packaged with a
user-mode service which includes a WASAPI loopback client; this could deliver
the audio back to the driver via a custom mechanism, and the driver could do
whatever it liked with it (e.g., deliver it up on a recording endpoint.)

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Tim Roberts
Sent: Tuesday, November 3, 2015 9:40 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: WHQL for virtual audio driver

Matthew van Eerde wrote:
OK, so this is an audio recording scenario.

You know, this is one of the more frequently requested scenarios in the audio
driver world. Has the Microsoft audio team given any thought to releasing a
simple skeleton virtual audio driver sample with a pipe to user mode? For
years we've had MSVAD, but that's a 20,000-line behemoth demonstrating a
thousand esoteric features that aren't germane to the simple non-hardware case.
And it was never obvious to the casual observer that CopyFrom and CopyTo were
the magic locations for tapping the audio streams. Now, we have SysVad, which
is even more complicated, and so far I haven't found where the magic tap
locations are.
That is - what is an “AP?”

That, in some parts of the world, is the accepted abbreviation for
"application".

--

Tim Roberts, timr@xxxxxxxxx<mailto:timr@xxxxxxxxx>

Providenza & Boekelheide, Inc.

This correspondence is from Cyberlink Corp. and is intended only for use by the
recipient named herein, and may contain privileged, proprietary and/or
confidential information, and is intended only to be seen and used by named
addressee(s). You are notified that any discussion, dissemination, distribution
or copying of this correspondence and any attachments, is strictly prohibited,
unless otherwise authorized or consented to in writing by the sender. If you
have received this correspondence in error, please notify the sender
immediately, and please permanently delete the original and any copies of it
and any attachment and destroy any related printouts without reading or copying
them.

This correspondence is from Cyberlink Corp. and is intended only for use by the
recipient named herein, and may contain privileged, proprietary and/or
confidential information, and is intended only to be seen and used by named
addressee(s). You are notified that any discussion, dissemination, distribution
or copying of this correspondence and any attachments, is strictly prohibited,
unless otherwise authorized or consented to in writing by the sender. If you
have received this correspondence in error, please notify the sender
immediately, and please permanently delete the original and any copies of it
and any attachment and destroy any related printouts without reading or copying
them.

This correspondence is from Cyberlink Corp. and is intended only for use by the
recipient named herein, and may contain privileged, proprietary and/or
confidential information, and is intended only to be seen and used by named
addressee(s). You are notified that any discussion, dissemination, distribution
or copying of this correspondence and any attachments, is strictly prohibited,
unless otherwise authorized or consented to in writing by the sender. If you
have received this correspondence in error, please notify the sender
immediately, and please permanently delete the original and any copies of it
and any attachment and destroy any related printouts without reading or copying
them.

This correspondence is from Cyberlink Corp. and is intended only for use by the
recipient named herein, and may contain privileged, proprietary and/or
confidential information, and is intended only to be seen and used by named
addressee(s). You are notified that any discussion, dissemination, distribution
or copying of this correspondence and any attachments, is strictly prohibited,
unless otherwise authorized or consented to in writing by the sender. If you
have received this correspondence in error, please notify the sender
immediately, and please permanently delete the original and any copies of it
and any attachment and destroy any related printouts without reading or copying
them.

This correspondence is from Cyberlink Corp. and is intended only for use by the
recipient named herein, and may contain privileged, proprietary and/or
confidential information, and is intended only to be seen and used by named
addressee(s). You are notified that any discussion, dissemination, distribution
or copying of this correspondence and any attachments, is strictly prohibited,
unless otherwise authorized or consented to in writing by the sender. If you
have received this correspondence in error, please notify the sender
immediately, and please permanently delete the original and any copies of it
and any attachment and destroy any related printouts without reading or copying
them.

This correspondence is from Cyberlink Corp. and is intended only for use by the
recipient named herein, and may contain privileged, proprietary and/or
confidential information, and is intended only to be seen and used by named
addressee(s). You are notified that any discussion, dissemination, distribution
or copying of this correspondence and any attachments, is strictly prohibited,
unless otherwise authorized or consented to in writing by the sender. If you
have received this correspondence in error, please notify the sender
immediately, and please permanently delete the original and any copies of it
and any attachment and destroy any related printouts without reading or copying
them.

This correspondence is from Cyberlink Corp. and is intended only for use by the
recipient named herein, and may contain privileged, proprietary and/or
confidential information, and is intended only to be seen and used by named
addressee(s). You are notified that any discussion, dissemination, distribution
or copying of this correspondence and any attachments, is strictly prohibited,
unless otherwise authorized or consented to in writing by the sender. If you
have received this correspondence in error, please notify the sender
immediately, and please permanently delete the original and any copies of it
and any attachment and destroy any related printouts without reading or copying
them.

Other related posts: