7

I am writing an application that will record audio from microphone. My problem is I need to know when the user plug in the jack and remove the jack out.

I looked into Win32_SoundDevice WMI class and seems to me there is no such a property that I can check the status of the Jack.

Then I found RegisterEndpointNotificationCallback in IMMDeviceEnumerator which seems to do what I need but I have no clue how to do this in C#. Does anyone know how to use MMDeviceEnumerator methods to check for audio port status ? Any help highly appreciated.

Thaven
  • 1,857
  • 3
  • 19
  • 35
kakopappa
  • 5,023
  • 5
  • 54
  • 73

2 Answers2

1

You might want to take a look at then open source NAudio project.

I've browsed their code and it appears they have a .Net wrapper for your IMMDeviceEnumerator interface.

As this project is under Microsoft Public License, it'll probably be usable in your project.

ken2k
  • 48,145
  • 10
  • 116
  • 176
0

Check out with following code:

var enumerator = new MMDeviceEnumerator();
var d = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
Console.WriteLine(d.Properties[new Guid("46d16a2c-5654-41c0-911e-7860d2bce7ee")].Value.ToString());

This property return's 1 (Plugged) or 0 (Unplugged)..

You must have the NAudio library referenced..