C# 如何从音频播放设备获取频道数?

C# 如何从音频播放设备获取频道数?,c#,naudio,wasapi,directsound,waveout,C#,Naudio,Wasapi,Directsound,Waveout,游戏2显示了播放设备的音频配置。 我可以通过C#中的代码获取这些信息吗 更新和更正(2019年9月29日UTC下午3:12左右):上面的链接图像显示了免费玩游戏Apex Legends的音频选项。Titanfall 2音频设置的链接为。对于这两款游戏,Windows音频配置显示信息,这不是用户可以在游戏中更改的选项 有些人可能会在中找到有用的信息。您可以通过MMP设备枚举Windows Vista或更高版本上的设备 IMMDeviceEnumerator *enumerator = nullp

游戏2显示了播放设备的音频配置。

我可以通过C#中的代码获取这些信息吗

更新和更正(2019年9月29日UTC下午3:12左右):上面的链接图像显示了免费玩游戏Apex Legends的音频选项。Titanfall 2音频设置的链接为。对于这两款游戏,Windows音频配置显示信息,这不是用户可以在游戏中更改的选项


有些人可能会在中找到有用的信息。

您可以通过MMP设备枚举Windows Vista或更高版本上的设备

IMMDeviceEnumerator *enumerator = nullptr;
IMMDevice *device = nullptr;

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), nullptr, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&enumerator);
if (FAILED(hr))
       ...

// Get the default renderer
hr = enumerator->GetDefaultAudioEndpoint(eRender, eConsole, &device);
if (FAILED(hr))
       ...

    hr = pEndpoint->OpenPropertyStore(
                      STGM_READ, &pProps);
if (FAILED(hr))
       ...

    PROPVARIANT varName;
    // Initialize container for property value.
    PropVariantInit(&varName);

    // Get the endpoint's physical speaker property.
    hr = pProps->GetValue(
                   PKEY_AudioEndpoint_PhysicalSpeakers, &varName);
if (FAILED(hr))
       …

    // See https://docs.microsoft.com/en-us/windows/win32/coreaudio/pkey-audioendpoint-physicalspeakers

    PropVariantClear(&varName);

请参见

该图像中的所有信息似乎都是特定于游戏的,而不是特定于输出设备的。你想从游戏中获取信息吗?你的头衔不一样。你能澄清一下你到底想要什么吗?它可能是
PKEY\u设备\u FriendlyName
而不是
PKEY\u AudioEndpoint\u物理扬声器