Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Приведение к типу IUnknown 
:(
    Опции темы
rainbow86
Дата 17.4.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет



 smile 

Я только начал изучать COM технологию и встретился вот с такой проблемой:
В реализации метода QueryInterface который я взял из книги A.Troelsen'a есть такой код:

((IUnknown*)(*pIFace))->AddRef();

для увеличения числа ссылок, но он почему то не работает, использование static_cast ни к чему не приводит, то же самое:

static_cast <IUnknown*>(*pIFace)->AddRef();

Не пойму в чем проблема? 
PM MAIL   Вверх
chaos
Дата 18.4.2006, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



склоняюсь к тому что надо тебе сначала приводить к какому-то интерфейсу а потом только к IUnknown!

Добавлено @ 07:24 
не поленился и нашел про то что ты говоришь:
Код

HRESULT __stdcall CA::QueryInterface(const IID& iid, void** ppv)
{
    if (iid == IID_IUnknown)
    {
        *ppv = static_cast<IX*>(this);
    }
    else if (iid == IID_IX)
   {
      // Клиент запрашивает интерфейс IX
      *ppv = static_cast<IX*>(this);
    }
    else if (iid = IID_IY)
    {
        // Клиент запрашивает интерфейс IY
        *ppv = static_cast<IY*>(this);
    }
    else
    {
        // Мы не поддерживаем запрашиваемый клиентом интерфейс.
        // Установить возвращаемый указатель в NULL.
        *ppv = NULL;
        return E_NOINTERFACE;
    }
    static_cast<IUnknown*>(*ppv)->AddRef(); // См. гл. 4
    return S_OK;
}

так вот, если ты внимательно посмотришь, увеличивается счетчик ссылок у интерфейса(IID_IY, IID_IХ) приведенного к IUnknown 
PM WWW   Вверх
rainbow86
Дата 18.4.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет



А понял,сначало надо привести к какому-либо интерфейсу а потом к IUnknown и тогда уже увеличивать кол-во ссылок!

Спасибо! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.