This question already has an answer here:
IMFActivate::ActivateObject return error code “CoInitialize has not been called.”
(1个答案)
2年前关闭。
就像标题中一样,我得到的错误代码不在CoCreateInstance文档中。特定的错误代码是0x800401F0。
注意:我对C++和此级别的编程一般是新手。通过构建音频可视化工具来尝试学习。
有什么建议么?
(1个答案)
2年前关闭。
就像标题中一样,我得到的错误代码不在CoCreateInstance文档中。特定的错误代码是0x800401F0。
注意:我对C++和此级别的编程一般是新手。通过构建音频可视化工具来尝试学习。
#include <stdio.h>
#include <Mmdeviceapi.h>
int CALLBACK WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
const CLSID rclsid = __uuidof(MMDeviceEnumerator);
const IID riid = __uuidof(IMMDeviceEnumerator);
IMMDeviceEnumerator* pEnumerator;
IMMDeviceCollection* pEndpoints;
// Create a device enumerator
HRESULT hr = CoCreateInstance(
rclsid,
NULL,
CLSCTX_ALL,
riid,
reinterpret_cast<void **>(&pEnumerator)
);
if (FAILED(hr)) {
printf("%x\n", hr);
}
// Create a collection of endpoints
// pEnumerator->EnumAudioEndpoints(
// eCapture,
// DEVICE_STATE_ACTIVE,
// &pEndpoints
// );
// UINT deviceCount;
// pEndpoints->GetCount(&deviceCount);
// printf("%u\n", deviceCount);
return 0;
}
编译gcc audio.cpp -lole32
我正在运行64位计算机。不知道这是否可能是问题的一部分。有什么建议么?
最佳答案
错误代码0x800401F0是CO_E_NOTINITIALIZED
(“尚未调用CoInitialize”)。这表明您没有先调用CoInitialize()
。
也就是说,线程需要在调用CoInitialize()
或任何其他COM调用之前先调用CoInitializeEx()
(或CoCreateInstance()
)。如果需要正常清理,则应该释放COM接口(interface)指针,完成COM Activity ,并在退出之前调用CoUninitialize()
。
关于c++ - MMDevice API中的CoCreateInstance返回错误代码0x800401F0 ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49481853/
10-11 18:16