Контрольная работа: Распределенная обработка данных
hr = pIY->QueryInterface(IID_IUnknown, (void**)&pIUnknownFromIY);
if (SUCCEEDED(hr))
{
cout << "Sovpadaut li ykazateli na IUnknown? ";
if (pIUnknownFromIY == pIUnknown)
{
cout << "Yes, pIUnknownFromIY == pIUnknown" << endl;
}
else
{
cout << "No, pIUnknownFromIY != pIUnknown" << endl;
}
}
// Удалить компонент
delete pIUnknown;
getch();
return 0;
}
Результат работы программы:
Вывод:
В данном задании объявили интерфейсы IX, IY, IZ, и интерфейс IUnknown.
Реализовали компонент. Класс СА который реализует компонент, поддерживающий интерфейсы IX и IY. Реализовали QueryInterface. Функцию CreateInstance, которая определяется после класса CA. Клиент использует ее, чтобы создать компонент, представляемый при помощи СА, и получили указатель на IUnknown этого компонента.
Задание №1B Подсчет ссылок
Цель работы:
Добавить к предыдущей программе из лабороторной работы №1А подсчет ссылок. Для этого к компоненту добавить реализации двух методов IUnknown – AddRef и Release.используя функции Win32 InterlockedIncrement и InterlockedDecrement. Функцию AddRef вызывают CreateInstance и QueryInterface для соответствующих указателей на интерфейсы. Вызовы Release добавить в клиенте, чтобы обозначить окончание работы с различными интерфейсами.
Ликвидировать компонент с помощью деструктора.