• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Com - Сервер И C#

  • Автор темы Автор темы m9yt
  • Дата начала Дата начала
M

m9yt

Привет всем. Изучаю книгу Роджерсона Основы Com. Там создается простейший интерфейс:
C++:
#include <InitGuid.h>
interface IX : IUnknown
{
virtual void pascal Fx() = 0;
};

interface IY : IUnknown
{
virtual void pascal Fy() = 0;
};

interface IZ : IUnknown
{
virtual void pascal Fz() = 0;
};

DEFINE_GUID(IID_IX, 0x32bb8320, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
DEFINE_GUID(IID_IY, 0x32bb8321, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
DEFINE_GUID(IID_IZ, 0x32bb8322, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
DEFINE_GUID(CLSID_Component1, 0x0c092c21, 0x882c, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
И класс, реализующий эти функции (Реализацию IUnknown опустил):
C++:
class CA : public IX, public IY 
{
public:
// IUnknown
virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv);
virtual ULONG __stdcall AddRef();
virtual ULONG __stdcall Release();

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

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

// Constructor
CA();

// Destructor
~CA();

private:
// Reference count
long m_cRef;
};
Создание dll и регистрацию тоже опущу.
Вот часть клиента:
C++:
CoInitialize(NULL);
IX* pIX = NULL; 
HRESULT hr = ::CoCreateInstance(CLSID_Component1, NULL, CLSCTX_INPROC_SERVER, IID_IX, (void**)&pIX);
Ни CoInitialize(NULL), ни CoCreateInstance(...) не видны в C#. Как быть - то? Я хочу использовать свой сервер для вызова функций в клиенте, написанном на C#(графический интерфейс).
 
Начать и дальше гуглить, гуглить, гуглить. Как завещал старик Крупский.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab