Внутрипроцессный COM

Тема в разделе "WASM.ZEN", создана пользователем vxloader, 30 сен 2011.

  1. vxloader

    vxloader New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    18
  2. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Насколько мне известно (впрочем, за 100% достоверность не ручаюсь) - нет, в этом случае данные не выходят за область памяти процесса.
     
  3. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    In-proc сервера загружаются в АП клиента и LRPC там не используется.
    LPRC используется при out-of-process, для передачи данных между двумя процессами на одной машине (RPC, соответственно, используется при разных машинах). Загружаемый в АП клиента DLL-сервер взаимодействует с клиентской программой напрямую, при этом может никаких функций для взаимодействия и не экспортировать (экспортируются только служебные функции типа DllGetClassObject).
    Системные механизмы подключаются только при установлении соединения с сервером и получения ссылки на интерфейсы.
     
  4. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Не все так просто.
    Если in-proc COM object вызывается из другого апартмента то применятся inter-thread marshaling.
     
  5. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Partner, если можно, чуть подробнее - гугл мало полезного выдает.
     
  6. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    Да, если работа с com идет из другого потока то применяется маршалинг, задействуеца scm, oleaut (для стандартного маршалинг предоставляемого ОС) и по всей видимости данные уходят из процесса
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Например, если создать singlethreaded COM object из multithreaded apartment'a, то вызовы к такому объекту будут маршалиться также как между процессами, несмотря на то, что и клиент и сервер живут в одном процессе.

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms693344(v=vs.85).aspx
     
  8. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Все обсуждения описано сдесь:
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms687205%28v=vs.85%29.aspx

    Но также не стоит забывать с чего будет вызван COM. Если с дотнета, то конечно прямого обращения мы не увидим, данные все равно будут упаковыватся, но сдругой стороны смотя чем оперировать. Если указателями то наклодных расходов не будет видно, а вот если передовать данные , то будут и причем весьма не плохие.