Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ WASAPI GetDisplayName返回空白_C++_Windows_Audio_Wasapi - Fatal编程技术网

C++ WASAPI GetDisplayName返回空白

C++ WASAPI GetDisplayName返回空白,c++,windows,audio,wasapi,C++,Windows,Audio,Wasapi,我正在尝试编写一个与Windows Core Audio和WASAPI接口的程序。我在以下几行中遇到困难 CComHeapPtr<WCHAR> name; hr = pAudioSessionControl->GetDisplayName(&name); if (FAILED(hr)) { LOG(L"IAudioSessionControl::GetDisplayName() failed: hr = 0x%08x", hr); return -__L

我正在尝试编写一个与Windows Core Audio和WASAPI接口的程序。我在以下几行中遇到困难

CComHeapPtr<WCHAR> name;
hr = pAudioSessionControl->GetDisplayName(&name);
if (FAILED(hr)) {
    LOG(L"IAudioSessionControl::GetDisplayName() failed: hr = 0x%08x", hr);
    return -__LINE__; }
_tprintf(_T("Session Index %d, \"%s\"\n"), i, CString(name));
这是3个程序都处于活动状态并发出噪音。似乎我可以看到系统的声音程序,但没有其他


谢谢你的帮助

IAudioSessionControl::GetDisplayName
是合适的API,它可能返回非空字符串,但是您也可能看到字符串确实为空的非活动会话。在您的情况下,您可能会遇到非活动会话、未提供的错误代码或不正确的API使用

枚举会话并轮询卷更改-它打印非空字符串

CComHeapPtr<WCHAR> pszDisplayName;
ATLENSURE_SUCCEEDED(pSessionControl->GetDisplayName(&pszDisplayName));
_tprintf(_T("nSessionIndex %d, pszDisplayName \"%s\"\n"), 
    nSessionIndex, CString(pszDisplayName));
我的一个想法

问题应该与会话本身有关。大多数程序从不命名会话,因此会话通常没有名称,音频混合器上显示的名称可能是会话所有者进程的窗口标题的名称


使用IAudioSessionControl2::GetProcessID并通过其他API获取进程的窗口标题,应该会给出一个合理的名称,与audio mixer中的名称类似。

感谢您的帮助。有关详细信息,请参见我的编辑。
CComHeapPtr<WCHAR> pszDisplayName;
ATLENSURE_SUCCEEDED(pSessionControl->GetDisplayName(&pszDisplayName));
_tprintf(_T("nSessionIndex %d, pszDisplayName \"%s\"\n"), 
    nSessionIndex, CString(pszDisplayName));