Используя следующий код в моем проекте cpp / win32, я получаю сообщение об ошибке «класс не зарегистрирован»
hr = CoCreateInstance(CLSID_PIAsyncFile, NULL, CLSCTX_INPROC, IID_IBaseFilter, (void**) &ppF);
if (SUCCEEDED(hr)) {
hr = pGraph->AddFilter(ppF, L"My Async Source (File)");
}
Это неправда, так как мой фильтр отлично работает под GraphEdit, и я также могу найти его, используя перечисляющие имена IFilterMapper2. Я также могу успешно привязать к объекту из фильтров прямого показа.
hr = pMoniker->BindToObject(0, 0, IID_IBaseFilter, (void**)&ppF);
Итак, что не так с CoCreateInstance ?
PS: это 32-битный фильтр, который зарегистрирован под 64-битной системой Windows 7. В реестре я также могу найти фильтр под sysWOW3264 (зеркальный реестр для 32-битных приложений Windows, работающих на 64-битных Windows).
Вы также можете обратиться и найти исходный код в моем посте codeproject по адресу http://www.codeproject.com/Messages/4603967/Class-not-registered-error.aspx
Благодаря Роману Р. проблема заключалась в неправильном объявлении CLSID в моем коде.
Других решений пока нет …