[wdmaudiodev] Re: Yet more jack sense questions

  • From: <Edward_Averill@xxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 8 Sep 2010 15:59:52 -0500

This is actually (supposedly) simple: I need to look at what endpoint jacks are 
occupied as part of a very basic diagnostic.  The sample code I found uses 
EnumEndPoints() to get a list, then GetJackInfo()/GetJackDescription() to cycle 
through all the jacks that are connected.  I would assume the isConnected 
variable to be TRUE if (a) there's a jack connected or (b) jack sense isn't 
supported by the hardware.

My first testing was under Vista SP1.  IsConnected was TRUE for all endpoints, 
even though nothing was plugged in, so I assumed the IDT hardware and/or driver 
didn't support jack sense.  I carried this same exe to a Win7 machine and 
actually ended up with some jacks it said weren't connected, so I have a 
slightly higher confidence level in my code.

Oddly, the IDT audio applet pops up when I plug into to the LINE IN jack on my 
Vista system, and properly displays the state of the 3 jacks on the test 
machine, so I know the information is SOMEWHERE... I'm just not sure where as 
it doesn't appear to be where it's supposed to be.

Double-checking the contents of the returned jack description, most of the 
other members of the KSJACK_DESCRIPTION appear to be accurate (location, type, 
etc.).

I'll have to check to see if the IDT driver passed any kind of certification 
for Vista.. unhappily, this test needs to run on both Vista and Win7.

Thanks for your assistance!

..ed..

From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Yuk Lai Suen
Sent: Wednesday, September 08, 2010 3:32 PM
To: 'wdmaudiodev@xxxxxxxxxxxxx'
Subject: [wdmaudiodev] Re: Yet more jack sense questions

Can you describe what you want to do?

If class driver cannot be installed on the device, that the device could/should 
not pass Windows Logo by the UAA requirement, which means it cannot be shipped 
with OEM who intend to get system logo. As Windows 7 started, 
KSJACK_DESCRIPTION and KSJACK_DESCRIPTION2 are required on all logo'd drivers. 
It was not the case for Windows Vista. Is the IDT driver you have Win7 logo'd?


From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of 
Edward_Averill@xxxxxxxxxxxx
Sent: Wednesday, September 08, 2010 1:16 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Yet more jack sense questions

Ok, the plot  thickens.  I see both a "High Definition Audio Device"  and an 
"IDT High Definition Audio CODEC".   "High Definition Audio Device" has 
hdaudio.sys loaded for it (among other things).. so I uninstalled the IDT 
device, rebooted, see that only "High Definition Audio Device" is active.. but 
all but my HDMI endpoints have vanished.

I'm starting to think that the IDT audio device is somehow non-standard and 
that their codec somehow makes things work, but possibly in a way that requires 
a different approach to get to the data (urgh).

I'm starting to be convinced the only "reliable" way to get to the actual 
status will be to write some kind of driver that sits on top of hdaudbus.sys, 
but that's currently a bit beyond my knowledge level, and the one example I saw 
assumed you already had a pointer to the FDO you could use to query for the DDI 
data.

Time to book some lab time with more machines.

..ed..

From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eerde
Sent: Wednesday, September 08, 2010 11:24 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Yet more jack sense questions

The driver may not be bubbling up the jack sense state to the 
KSJACK_DESCRIPTION structure.  Try installing hdaudio.sys and rerunning your 
sample code.

http://blogs.msdn.com/b/matthew_van_eerde/archive/2010/08/23/troubleshooting-how-to-install-the-microsoft-hd-audio-class-driver.aspx

From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of 
Edward_Averill@xxxxxxxxxxxx
Sent: Wednesday, September 08, 2010 9:18 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Yet more jack sense questions

Ok, running Vista,  I have some sample code that goes out, enumerates 
endpoints, gets a KSJACK_DESCRIPTION for each jack, and prints IsConnected.  
That was the easy part..

What I'm seeing is that EVERY endpoint says it's connected.  Ok, fine, this is 
a Dell laptop and it's possible the onboard audio doesn't support jack sense 
(in which case it'd always return connected, according to the docs).  BUT (you 
knew there was a BUT, right?)..

..when I stick a jack in to LINE IN, the little applet that shows jacks etc. 
pops right up and knows I just shoved it into LINE IN.  The status my program 
prints doesn't change, but somehow the applet knows.  Ok...

So, is it possible that there's something device-specific in the applet that 
lets it get the info reliably OUTSIDE of the standard API?  Or does registering 
for status changes somehow interfere with other apps ability to reach out and 
look at the current state of the jacks?

Comments, suggetions, MSDN pages?  All info appreciated.

..ed..

Other related posts: