繁体   English   中英

启用和禁用播放和记录设备

[英]Enabling and disabling playback and recording devices

我是C#的新手。.如果这个问题有点愚蠢,请不要因为我的问题而烦恼。

我需要通过c#代码查看已禁用的播放和记录设备,并根据需要启用或禁用它。 我该怎么办.. ?? 我使用DirectX.DirectSound API编写了代码,但是它仅限于枚举仅启用的设备,而我看不到已禁用的设备。 而且我不认为有任何禁用或启用设备的方法。

我将非常感谢您的帮助。

并且还建议我,如果可能的话,如何使用其他API来做到这一点。

我意识到这是一个非常古老的线程...但是我登陆这里试图找出如何列出禁用的音频设备,并且我成功完成了一个名为AudioEndpointController的C ++项目

只需更改行:

PlaybackDevice = pEnum->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pDevices);

至:

PlaybackDevice = pEnum->EnumAudioEndpoints(eRender, DEVICE_STATE_DISABLED, &pDevices);

据我所知,不可能以编程方式启用/禁用设备。 至于问题的第一部分(需要查看禁用的设备),实际上是可能的,但不能单独使用c#,您必须通过使用C ++ / CLI或在C#中使用显式PInvoke来使用WASAPI。 您正在寻找IMMDeviceEnumerator :: EnumAudioEndpoints,它带有一个标志,指示您是否要查看已禁用/未插入等设备。 请参阅http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd371400%28v=vs.85%29.aspx 在这种情况下,关于WASAPI的IMMDevice接口的好处是,它公开了一个与设备的DirectSound ID对应的GUID,因此您实际上可以使用WASAPI来检测哪些设备处于活动状态/不活动状态等,并使用DirectSound进行所有其他操作。 为此,您将要使用IMMDevice :: OpenPropertyStore,并查询PKEY_AudioEndpoint_GUID属性。 这与传递给DirectSound的DSEnumCallback函数完全相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM