Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Глупый вопрос   Найти похожие ветки 

 
Марина   (2006-05-07 20:48) [0]

Проблема с Дельфи не связана, но все же.
Разбираюсь с асинхронными вызовами COM компонентов, и при создании объекта вызова, а точнее при запросе любого интерфейса у объекта вызова (реализующего асинхронный интерфейс, но аггрегирующего объект вызова, предоставляемый прокси), почему-то происходит автоматический AddRef на родительский Объект, предоставляющий синхронный интерфейс. Интуитивно чувствую, что у объекта вызова должен быть свой счетчик ссылок и AddRef происходить не должен (счетчик ссылок родительского объекта не уменьшается после удаления объекта вызова). Почему это происходит?

STDMETHODIMP CNotifyCallObj::Init(ULONG hWnd,
                              ULONG ulMsgID, // сообщение о заверш. вызова
                              ICallFactory * pCallFactory, // фабрика объектов вызова
                              REFIID riid1, // интерфейс, возвращаемый при создании объекта вызова
                              REFIID riid2,  // интерфейс, возвращаемый данной функцией
                              IUnknown **ppvObj  // указатель на один из интерф. созданного объекта вызова
                             ) {
 m_hWnd = (HWND)hWnd;
 m_nMsgID = ulMsgID;

 // создание и аггрегация объекта вызова, предоставляемого прокси
 HRESULT hr;
 hr = pCallFactory->CreateCall(riid1, GetControllingUnknown(), IID_IUnknown, &m_spUnkInner);

 if (FAILED(hr))
   return hr;

  // получение указателя на интерфейс синхронизации аггрегируемого объекта
  hr = m_spUnkInner->QueryInterface(IID_ISynchronize, (void**)&m_spSyncInner);

 if (FAILED(hr)) {
   m_spUnkInner.Release();
   return hr;
 }

 // возвращение указателя на интерфейс, запрошенный при вызове данной функции
 hr = m_spUnkInner->QueryInterface(riid2, (void **)ppvObj); // AddRef на родительский объект происходит здесь

 if (FAILED(hr)) {
   m_spSyncInner.Release();
   m_spUnkInner.Release();

 }

 pCallFactory->Release();

 return hr;
}

Помогите пожалуйста.


 
Вовчик   (2006-05-07 20:55) [1]

марина мне очень хочется тебе помочь.. есть дополнительные данные?


 
Павлик   (2006-05-07 20:55) [2]

Удалено модератором


 
Пусик   (2006-05-07 22:14) [3]

Удалено модератором


 
LexxX ©   (2006-05-07 22:19) [4]


> Пусик   (07.05.06 22:14)


> Павлик   (07.05.06 20:55)


Может уже хватит на форуме личные разборки устраивать? Здесь не базарная площадь.


 
Пусик   (2006-05-07 22:21) [5]


> LexxX ©   (07.05.06 22:19) [4]
>
>
> > Пусик   (07.05.06 22:14)
>
>
> > Павлик   (07.05.06 20:55)
>
>
> Может уже хватит на форуме личные разборки устраивать? Здесь
> не базарная площадь.


А что-то другое? Незаметно.


 
Павлик   (2006-05-07 22:25) [6]


> Пусик   (07.05.06 22:14) [3]

Да угомонись уже :)
У меня все нормально, чего и тебе искренне желаю. А будешь такой сварливой никто с тобой дружить не станет. Такая и останешься :) И книжки почитывай не иногда, а почаще, что б код не клянчить и писать без ошибок :)


 
Пусик   (2006-05-07 22:26) [7]


> Павлик   (07.05.06 22:25) [6]
>
>
> > Пусик   (07.05.06 22:14) [3]
>
> Да угомонись уже :)
> У меня все нормально, чего и тебе искренне желаю. А будешь
> такой сварливой никто с тобой дружить не станет. Такая и
> останешься :) И книжки почитывай не иногда, а почаще, что
> б код не клянчить и писать без ошибок :)


Ух ты... никак нашел слово-то в интернете?



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.065 c
6-1139192754
Delphi_is_cool
2006-02-06 05:25
2006.06.04
Определить ip dialup сервера


15-1147587797
Kerk
2006-05-14 10:23
2006.06.04
Питер FM


2-1148043251
oleg_
2006-05-19 16:54
2006.06.04
Как пустить php из под IdHTTPServer


15-1147352220
alex-drob
2006-05-11 16:57
2006.06.04
Сохранить переменную типа TList


6-1138550739
Storm
2006-01-29 19:05
2006.06.04
Шлюз на Delphi