Зарегистрировать com, net, info, org

Опубликовано: 05.02.2018

видео Зарегистрировать com, net, info, org

COSS - БОЛЬШЕ ЧЕМ КРИПТОБИРЖА!!! ОБЗОР, РЕГИСТРАЦИЯ, ТОРГОВЛЯ . . .

Изначально, данный пост должен был называться «Регистрация COM объектов на 64-х разрядных версиях Windows» и речь должна было пойти про особенности 64-х разрядных версий Windows с точки зрения регистрации COM компонент. Однако пост получился слишком большим и его пришлось разбить на две части, смотрите на сайте https://2dm.prohoster.info. Про особенности 64-х разрядных систем я расскажу во второй части.

Для начала немного теории. Взаимодействие клиента (приложения вызвавшего CoCreateInstance) и сервера (COM объекта) в общем случае можно изобразить с помощью вот такой схемы:

В общем случае, когда клиент и сервер находятся в разных квартирах (apartments), процессах или на разных машинах, они не могут общаться напрямую. Вместо этого они используют посредника - так называемую Proxy/Stub DLL. Эта DLL перехватывает вызовы методов сервера, упаковывает полученные параметры в RPC сообщение и взаимодействует с COM и RPC подсистемой, которая в свою очередь берёт на себя передачу RPC сообщений в обе стороны.

Очень подробная статья на RSDN на эту тему: Секреты маршалинга.

Proxy/Stub DLL, хотя и может быть написана вручную, обычно генерируется автоматически из .idl описания интерфейсов с помощью утилиты midl.exe. Если вы создаёте заготовку COM сервера в Visual Studio, то Proxy/Stub DLL обычно выглядит как дополнительный проект с именем вида «< имя основного проекта> PS».

Proxy/Stub DLL не создаётся для интерфейсов, помеченных атрибутами [dual] или [automation]. Вместо этого используется общий для всех подобных интерфейсов универсальный маршалер. Универсальный маршалер использует информацию из библиотеки типов (typelib, файл с расширением .tlb) для упаковки параметров в RPC сообщения. Реализация универсального маршалера находится в oleaut32.dll.

Изначально, данный пост должен был называться «Регистрация COM объектов на 64-х разрядных версиях Windows» и речь должна было пойти про особенности 64-х разрядных версий Windows с точки зрения регистрации COM компонент. Однако пост получился слишком большим и его пришлось разбить на две части, подробнее тут https://2dm.prohoster.info. Про особенности 64-х разрядных систем я расскажу во второй части.

Для начала немного теории. Взаимодействие клиента (приложения вызвавшего CoCreateInstance) и сервера (COM объекта) в общем случае можно изобразить с помощью вот такой схемы:

В общем случае, когда клиент и сервер находятся в разных квартирах (apartments), процессах или на разных машинах, они не могут общаться напрямую. Вместо этого они используют посредника - так называемую Proxy/Stub DLL. Эта DLL перехватывает вызовы методов сервера, упаковывает полученные параметры в RPC сообщение и взаимодействует с COM и RPC подсистемой, которая в свою очередь берёт на себя передачу RPC сообщений в обе стороны.

Очень подробная статья на RSDN на эту тему: Секреты маршалинга.

Proxy/Stub DLL, хотя и может быть написана вручную, обычно генерируется автоматически из .idl описания интерфейсов с помощью утилиты midl.exe. Если вы создаёте заготовку COM сервера в Visual Studio, то Proxy/Stub DLL обычно выглядит как дополнительный проект с именем вида «< имя основного проекта> PS».

Proxy/Stub DLL не создаётся для интерфейсов, помеченных атрибутами [dual] или [automation]. Вместо этого используется общий для всех подобных интерфейсов универсальный маршалер. Универсальный маршалер использует информацию из библиотеки типов (typelib, файл с расширением .tlb) для упаковки параметров в RPC сообщения. Реализация универсального маршалера находится в oleaut32.dll.


Creative Commons Как получить лицензию для своего произведения


FL Studio | How to Install & Unlock