【问题标题】:Enumerate audio input devices with WMI使用 WMI 枚举音频输入设备
【发布时间】:2016-03-22 16:17:52
【问题描述】:

我在我的 C# 项目中使用 NAudio,我正在寻找一种方法来枚举音频输入设备(麦克风等),因此我可以获得它们的全名(不仅是 31 个字符的长名称,我可以从 NAudio 获得)。我浏览了一些帖子,其中人们使用 WMI 枚举音频输出设备:

ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(
       "SELECT * FROM Win32_SoundDevice");

ManagementObjectCollection objCollection = objSearcher.Get();

是否也可以这样枚举输入设备?

谢谢

【问题讨论】:

  • 你试过了吗?您面临什么问题?
  • 是的,但我想问的是如果我想枚举输入设备(麦克风等)而不是输出设备,查询应该是什么样子

标签: c# wmi naudio microphone


【解决方案1】:

要探索 WMI 查询,您可以使用为您生成 WMI 代码的工具。您将有大量的 WMI 管理类来获取信息。 您可以从微软下载中心here下载该工具

几年前我写了一篇关于使用 WMI 管理服务进行管理的博客 post。希望这会给您一个良好的开端。

这里是从该工具生成的 sn-p 以获取设备上已安装声卡的列表。

 public static void Main()
 {
     try
     {
         ManagementObjectSearcher searcher =
             new ManagementObjectSearcher("root\\CIMV2",
             "SELECT * FROM Win32_SoundDevice");

         foreach (ManagementObject queryObj in searcher.Get())
         {
             Console.WriteLine("-----------------------------------");
             Console.WriteLine("List of sound cards installed");
             Console.WriteLine("-----------------------------------");
             Console.WriteLine("ProductName: {0}", queryObj["ProductName"]);
             Console.WriteLine("Availability: {0}", queryObj["Availability"]);
             Console.WriteLine("Caption: {0}", queryObj["Caption"]);
             Console.WriteLine("ConfigManagerErrorCode: {0}", queryObj["ConfigManagerErrorCode"]);
             Console.WriteLine("ConfigManagerUserConfig: {0}", queryObj["ConfigManagerUserConfig"]);
             Console.WriteLine("CreationClassName: {0}", queryObj["CreationClassName"]);
             Console.WriteLine("Description: {0}", queryObj["Description"]);
             Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]);
             Console.WriteLine("DMABufferSize: {0}", queryObj["DMABufferSize"]);
             Console.WriteLine("ErrorCleared: {0}", queryObj["ErrorCleared"]);
             Console.WriteLine("ErrorDescription: {0}", queryObj["ErrorDescription"]);
             Console.WriteLine("InstallDate: {0}", queryObj["InstallDate"]);
             Console.WriteLine("LastErrorCode: {0}", queryObj["LastErrorCode"]);
             Console.WriteLine("Manufacturer: {0}", queryObj["Manufacturer"]);
             Console.WriteLine("MPU401Address: {0}", queryObj["MPU401Address"]);
             Console.WriteLine("Name: {0}", queryObj["Name"]);
             Console.WriteLine("PNPDeviceID: {0}", queryObj["PNPDeviceID"]);
             Console.WriteLine("PowerManagementSupported: {0}", queryObj["PowerManagementSupported"]);
             Console.WriteLine("Status: {0}", queryObj["Status"]);
             Console.WriteLine("StatusInfo: {0}", queryObj["StatusInfo"]);
             Console.WriteLine("SystemCreationClassName: {0}", queryObj["SystemCreationClassName"]);
             Console.WriteLine("SystemName: {0}", queryObj["SystemName"]);
         }
     }
     catch (ManagementException e)
     {
        Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
     }
 }

这是输出 -

-----------------------------------
List of sound cards installed
-----------------------------------
ProductName: Realtek High Definition Audio
Availability:
Caption: Realtek High Definition Audio
ConfigManagerErrorCode: 0
ConfigManagerUserConfig: False
CreationClassName: Win32_SoundDevice
Description: Realtek High Definition Audio
DeviceID: HDAUDIO\FUNC_01&VEN_10EC&DEV_0662&SUBSYS_103C304A&REV_1001\4&3867FD9A&0&0001
DMABufferSize:
ErrorCleared:
ErrorDescription:
InstallDate:
LastErrorCode:
Manufacturer: Realtek
MPU401Address:
Name: Realtek High Definition Audio
PNPDeviceID: HDAUDIO\FUNC_01&VEN_10EC&DEV_0662&SUBSYS_103C304A&REV_1001\4&3867FD9A&0&0001
PowerManagementSupported: False
Status: OK
StatusInfo: 3
SystemCreationClassName: Win32_ComputerSystem
SystemName: PC-2322Q1

【讨论】:

    【解决方案2】:

    这些是声音设备,因此它包括输入和输出设备。声卡可以有 0 个或多个输出和 0 个或多个输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多