Search code examples
c#.netmodemtelephony

List all System Modems


Is there a way in managed code to list the Modem/Telephony devices installed on the system? If .Net does not have a way, could you point me in a direction?


Solution

  • WMI will contain all the information you need in the Win32_POTSModem class. In C# or .Net, you can utilize the System.Management namespace to query WMI.

    Within .Net, you can use MgmtclassGen.EXE from the platform SDK to generate a class object representing the WMI class.

    The command line would be like this:

    C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe Win32_POTSModem /L CS /P c:\POTSModem\Win32_POTSModem.cs
    

    and then you can use that in your code:

    using System;
    using System.Collections.Generic;
    using System.Management;
    using ROOT.CIMV2.Win32;
    
    public class MyClass
    {
      public static void Main()
      {
        foreach (POTSModem modem in POTSModem.GetInstances()) {
          Console.WriteLine(modem.Description);
        }
      }
    }
    

    Output looks like this:

    ThinkPad Modem - Internal Modem
            Speed: 56000
    

    You also might want to take a look at this article: CodeProject: How To: (Almost) Everything In WMI via C# - Part 3: Hardware.. The author has created a simple class wrapper around WMI objects similar to MgmtclassGen.exe, but its all done for you.