Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.034 c
5-1133311365
asdqwer
2005-11-30 03:42
2006.06.04
Динамическое присвоение метода компоненту в DLL


15-1147386244
Мнений
2006-05-12 02:24
2006.06.04
Классная штучка


1-1145893629
sda
2006-04-24 19:47
2006.06.04
нужно ли перекрывать функцию?


2-1147848747
dest81
2006-05-17 10:52
2006.06.04
Событие от клавиатуры


2-1147961794
carmen
2006-05-18 18:16
2006.06.04
Ошибка при обращении к таблице




   Наверх