IMMDevice :: Activate()与IBaseFilter返回REGDB_E_CLASSNOTREG类未注册

时间:2016-04-16 13:30:08

标签: c++ winapi audio directshow wasapi

我想获得接口IBaseFilter系统混音器,但是收到错误 REGDB_E_CLASSNOTREG类未在以下位置注册:

itertools.groupby

此代码早先工作。

完全代码:

filterName ="立体声混音器(IDT高清音频编解码器)"

hr = pEndpoint->Activate(__uuidof(IBaseFilter), CLSCTX_ALL, /*&var*/ NULL, (void**)ppFilter);

1 个答案:

答案 0 :(得分:2)

问题是由与已安装的DirectShowSpy工具发生冲突引起的。

MM Activate的{​​{1}}大概会做以下事情:

IBaseFilter

系统设备枚举器CLSID_SystemDeviceEnumif(interface is IBaseFilter) { IMMDeviceActivator pMmDeviceActivator; CoCreateInstace(CLSID_SystemDeviceEnum, ..., &pMmDeviceActivator); return pMmDeviceActivator->Activate(pMmDevice, ...) } 的实现没有记录(接口保留供内部使用),DirectShowSpy没有很好地处理它。从版本1.0.0.2106开始,它做对了。

相关问题