Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 21.5.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. Детский сад общеразвивающего вида 17 Радуга Сокольского муниципального района Вологодской области
3. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата економічних наук 01
4. А Аннотация- Запись контакта начинается с конца предложения ' Переводчик Вы можете перекреститься м
5. Реферат- Оборотные фонды
6. Кузанского при решении онтологическои' проблемы называется он решает проблему соотношения мира и Бога не в
7. МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙСООБЩЕНИЯ СОГЛАСОВАНО-
8. Н. Аринин Подлинный федерализм гражданскоеобщество и свобода личности О понятии федерализма Россия
9. визначити зміст навчання 2 мати матеріал для роботи з учнями 3 розробити методи тобто способи досягнення
10. Движение населения в ЦР и ЦЧР
11. Адольф Слаби - немецкий пионер радиосвязи
12.  Объектом муниципальной экономики являются- А
13. Вступление Хвала Аллаху Господу миров Мир и благословение Пророку Мухаммаду его семье сподвижникам и
14.  Основними категоріями дидактики є- навчання освіта викладання учіння знання уміння навички засоби при
15. замкнутий простір в спеціально призначених будинках та спорудах в яких постійно по змінах абопе
16. Тема 1 Числовые ряды
17. 1Правовая основа хозяйственной и финансовой деятельности органов МСУ 2Муниципальная собственность ~ исто
18. Меры по преодолению нелегальных рубок и экспорта леса
19. Для контроля знаний и навыков каждый студент должен выполнить итоговую работу результаты которой предста
20. а из 23 цельных куриных яиц и яичных белков без ограничения или из 812 цельных перепелиных яиц