Главная страница
    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.157 c
2-1147762028
ANB
2006-05-16 10:47
2006.06.04
Как отправить письмо с вложением без файла ?


15-1146828483
Slava812
2006-05-05 15:28
2006.06.04
Буфер Windows XP


2-1147698846
webpauk
2006-05-15 17:14
2006.06.04
Скрыть информацию


2-1147890817
Тимофейка
2006-05-17 22:33
2006.06.04
динамическое создание кнопки


2-1147683658
worldmen
2006-05-15 13:00
2006.06.04
Конвертация символов из Win кодировки в DOS





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский