Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
Марина   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
15-1147428597
_iceman_
2006-05-12 14:09
2006.06.04
ADSL модемы


15-1147128713
Петр
2006-05-09 02:51
2006.06.04
Преобразование из StringGrid в DBGrid


11-1127710464
DmiSb
2005-09-26 08:54
2006.06.04
Как нарисовать кнопочку в EditBoxe


2-1147715553
MVP
2006-05-15 21:52
2006.06.04
Как организовать цикл?


2-1147681226
evg123
2006-05-15 12:20
2006.06.04
Печать DBGrid a





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский