Второй вызов CoCreateInstance снова создает объект Application - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть COM-компонент с двумя CoClasses.

  • IMyApp - это интерфейс моего приложения CoClass.
  • IFunction - это мой второй ColClass интерфейс.

Впервые, когда я создаю объект IMyApp, используя CoCreateInstance, а затем объект IFunction, используя CoCreateInstance, все работает нормально.

Проблема: теперь снова, когда я пытаюсьДля создания объекта IFunction с использованием CoCreateInstance он вызывает инициализацию моего основного приложения IMyApp.

Ниже приводится содержимое моей библиотеки файлов IDL:

library DemoPrjLib
{
    Importlib("stdole2.tlb");
    [
       uuid(661CAC63-8F13-473B-8857-48233A668029),
       helpstring("MyApp Class")
    ]
    coclass MyApp
    {
       [default] interface IMyApp;
    };
    [
       uuid(104A759B-1088-435C-A2F3-7F5FD13C233A),
       helpstring("Function Class")
    ]
    coclass Function
    {
        [default] interface IFunction;
    };
};



// Creating Application object first time with success
::CoCreateInstanceEx(_uuidof(MyApp), 0, CLSCTX_ALL, &oServerInfo, 1, multi_qi);

// Now creating object of IFunction

CComPtr<IFunction> pFunction;
HRESULT hr = pFunction.CoCreateInstance (CLSID_Function); // this goes sucessfully
if (pFunction)
{
  AfxMessageBox ("Works fine!!!");
}

if (pFunction)
    pFunction.Release ();

// Problem Here: below call creates MyApp instance again i.e. it calls initinstance of my COM Application

hr = pFunction.CoCreateInstance (CLSID_Function);

Любое предложение действительно приветствуется..

...