У вас вопросы?
У нас ответы:) SamZan.net

Контрольная работа- Распределенная обработка данных

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

// 1B.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "iostream.h"

#include "objbase.h"

#include "conio.h"

void trace(const char* msg) { cout << msg << endl; }

// Ïðåäâàðèòåëüíûå îïèñàíèÿ GUID

extern const IID IID_IX;

extern const IID IID_IY;

extern const IID IID_IZ;

// Èíòåðôåéñû

interface IX : IUnknown

{

virtual void __stdcall Fx() = 0;

};

interface IY : IUnknown

{

virtual void __stdcall Fy() = 0;

};

interface IZ : IUnknown

{

virtual void __stdcall Fz() = 0;

};

// Êîìïîíåíò

class CA : public IX, public IY

{

// Ðåàëèçàöèÿ IUnknown

virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv);

virtual ULONG __stdcall AddRef();

virtual ULONG __stdcall Release();

// Ðåàëèçàöèÿ èíòåðôåéñà IX

virtual void __stdcall Fx() { cout << "Fx" << endl; }

// Ðåàëèçàöèÿ èíòåðôåéñà IY

virtual void __stdcall Fy() { cout << "Fy" << endl; }

public:

// Êîíñòðóêòîð

CA() : m_cRef(0) {}

// Äåñòðóêòîð

~CA() { trace("CA: Likvidirovat' seby"); }

private:

long m_cRef;

};

HRESULT __stdcall CA::QueryInterface(const IID& iid, void** ppv)

{

if (iid == IID_IUnknown)

{

trace("CA QI: Vozvratit' ykazateel na IUnknown");

*ppv = static_cast<IX*>(this);

}

else if (iid == IID_IX)

{

trace("CA QI: Vozvratit' ykazateel na IX");

*ppv = static_cast<IX*>(this);

}

else if (iid == IID_IY)

{

trace("CA QI:Vozvratit' ykazateel na IY");

*ppv = static_cast<IY*>(this);

}

else

{

trace("CA QI: Interface No!");

*ppv = NULL;

return E_NOINTERFACE;

}

reinterpret_cast<IUnknown*>(*ppv)->AddRef();

return S_OK;

}

ULONG __stdcall CA::AddRef()

{

cout << "CA: AddRef = " << m_cRef+1 << endl;

return InterlockedIncrement(&m_cRef);

}

ULONG __stdcall CA::Release()

{

cout << "CA: Release = " << m_cRef-1 << endl;

if (InterlockedDecrement(&m_cRef) == 0)

{

delete this;

return 0;

}

return m_cRef;

}

//

// Ôóíêöèÿ ñîçäàíèÿ

//

IUnknown* CreateInstance()

{

IUnknown* pI = static_cast<IX*>(new CA);

pI->AddRef();

return pI;

}

//

// IID

//

// {32bb8320-b41b-11cf-a6bb-0080c7b2d682}

static const IID IID_IX =

{0x32bb8320, 0xb41b, 0x11cf,

{0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82}};

// {32bb8321-b41b-11cf-a6bb-0080c7b2d682}

static const IID IID_IY =

{0x32bb8321, 0xb41b, 0x11cf,

{0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82}};

// {32bb8322-b41b-11cf-a6bb-0080c7b2d682}

static const IID IID_IZ =

{0x32bb8322, 0xb41b, 0x11cf,

{0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82}};

//

// Êëèåíò

//

int main()

{

HRESULT hr;

trace("Client: Polychit' ykazatel IUnknown");

IUnknown* pIUnknown = CreateInstance();

trace("Client: Polychit' Interface IX");

IX* pIX = NULL;

hr = pIUnknown->QueryInterface(IID_IX, (void**)&pIX);

if (SUCCEEDED(hr))

{

trace("Client: IX polychen");

pIX->Fx(); // Èñïîëüçîâàòü èíòåðôåéñ IX

pIX->Release();

}

trace("Client: Polychit' Interface IY");

IY* pIY = NULL;

hr = pIUnknown->QueryInterface(IID_IY, (void**)&pIY);

if (SUCCEEDED(hr))

{

trace("Client: IY polychen");

pIY->Fy(); // Èñïîëüçîâàòü èíòåðôåéñ IY

pIY->Release();

}

trace("Client: Zaprosit' nepodderjivaemue Interface");

IZ* pIZ = NULL;

hr = pIUnknown->QueryInterface(IID_IZ, (void**)&pIZ);

if (SUCCEEDED(hr))

{

trace("Client: Interface IZ polychen");

pIZ->Fz();

pIZ->Release();

}

else

{

trace("Client: No! Interface IZ");

}

trace("Client: Osvobodit' Interface IUnknown");

pIUnknown->Release();

getch();

return 0;

}




1. тема кримінального права
2. Загальний аналіз фінансового стану підприємства ТзОВ «Дружба»
3. Интернет глобальная компьютерная сеть
4.  ВОЗНИКНОВЕНИЕ ИДЕИ ПРАВОВОГО ГОСУДАРСТВА 2
5. Лабораторная работа 11
6. чайника ничего не понимающего в современной молодежной субкультуре
7. Лабораторная работа ’13 Изучение волновых свойств света Ассистент проф
8. Лекція 1. Завданням всіх наук як природничих так і психології є впорядковування наших переживань і орга
9. реферату- Мистецтво писемності Стародавнього СходуРозділ- Образотворче мистецтво Мистецтво писемності Ст
10. Он работал в кузнице при большой московской дороге; он работал подручным помощником у главного кузнеца пото
11. Статья- Фото- Vista.html
12. . А. А. Молчанов. Справочник по микропроцессорным устройствам ~ К.
13. Электротеллурическое поле
14. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата економічних наук4
15. Дэниел Деннет и Ричард Рорти по разные стороны идейных баррикад
16. НАУКОВИЙ ІНСТИТУТ ПРАВА ТА МАСОВИХ КОМУНІКАЦІЙ Кафедра правового забезпечення господарської діяльност
17. Лабораторна робота 7 Програмування в середовищі Turbo Bsic Мета роботи ~ команди виведення інформації Tu
18. ТЕМАТИЧЕСКИЕ МЕТОДЫ Л Г ПСИХОЛОГИЧЕСКОГО ИССЛЕДОВАНИЯ 1 РЕЧЬ Анализ и интерпретация данных А..
19. Эффузивы среднего состава широко распространены на земном шаре
20. Перевод введения в книгу Й Шумпетера History of economic analisys