Форум: "Прочее";
Текущий архив: 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.04 c