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

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab