Re[2]: CoCreateInstance - regdb_e_classnotreg
От: Vi2 Удмуртия http://www.adem.ru
Дата: 17.04.12 11:04
Оценка:
Здравствуйте, john_silver, Вы писали:

_>Дело в том, что интерфейс IGraphBuilder является локальным (помечен словом local в IDL). Это означает, что данный интерфейс не может маршалиться между апартаментами. Вы пытаетесь создать объект, находясь в STA (COINIT_APARTMENTTHREADED). А все компоненты DirectShow предназначены для работы в MTA.


_>Вам надо поставить COINIT_MULTITHREADED в CoInitializeEx.


Это можно проверить, т.к. мой Реестр говорит, что эта серверная длл имеет все апартменты. Если IID_IGraphBuilder заменить на IID_IUnknown, тогда если ошибка исчезнет, то прав john_silver, т.к. маршаллинг даётся системой.

[HKEY_CLASSES_ROOT\CLSID\{E436EBB3-524F-11CE-9F53-0020AF0BA770}]="Filter Graph"
[HKEY_CLASSES_ROOT\CLSID\{E436EBB3-524F-11CE-9F53-0020AF0BA770}\InprocServer32]="C:\\WINDOWS\\system32\\quartz.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\Interface\{56A868A9-0AD4-11CE-B03A-0020AF0BA770}]="IGraphBuilder"
[HKEY_CLASSES_ROOT\Interface\{56A868A9-0AD4-11CE-B03A-0020AF0BA770}\NumMethods]="18"
[HKEY_CLASSES_ROOT\Interface\{56A868A9-0AD4-11CE-B03A-0020AF0BA770}\ProxyStubClsid32]="{92A3A302-DA7C-4A1F-BA7E-1802BB5D2D02}"

[HKEY_CLASSES_ROOT\CLSID\{92A3A302-DA7C-4A1F-BA7E-1802BB5D2D02}]="PSFactoryBuffer"
[HKEY_CLASSES_ROOT\CLSID\{92A3A302-DA7C-4A1F-BA7E-1802BB5D2D02}\InProcServer32]="C:\\WINDOWS\\system32\\quartz.dll"
"ThreadingModel"="Both"

Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.