2

我正在使用 winmm api 来处理音频。我正在使用waveInGetDeviceCapswaveInMessage唯一标识一条“音频线路”。一切正常,除了在 Vista 中,设备名称由WaveInCaps结构限制为 32 个字符。

为了解决这个问题,我设想在操作系统版本 >= Vista 时使用核心 api。我正在使用IMMDeviceEnumerator.GetDeviceandIMMDeviceEnumerator.EnumAudioEndpoints来收集音频线路信息,但我不确定如何判断 core api 下的一个设备与 waveXx api 下的一个条目相关。

我想我可以比较两者的设备路径,但这会违背 MS 将设备路径字符串视为“不透明”的建议。

你打算说什么?

4

2 回答 2

3

此方案在http://msdn.microsoft.com/en-us/library/dd370819(VS.85).aspx中进行了描述

于 2009-12-19T11:47:54.733 回答
0
#include <mmddk.h>

WCHAR szBuffer[256]
uiDeviceID = 0;
messageId = DRV_QUERYFUNCTIONINSTANCEID;
waveInMessage((HWAVEIN)IntToPtr(uiDeviceID), messageId, szBuffer, 256);

然后我得到与 IMMDevice api 相同的 guid。好的!

于 2022-01-04T06:57:54.410 回答