Announcement

Collapse
No announcement yet.

Aufruf eines COM-Servers (aus einem Thread) ohne lokale Registrierung?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Aufruf eines COM-Servers (aus einem Thread) ohne lokale Registrierung?

    Hallo zusammen,

    ist es möglich aus einem Thread heraus über die Schnittstelle des Haupt-Threads eine Verbindung zu einen COM-Objekt (auf einem anderen Server) herzustellen, ohne dass hierfür eine Registrierung auf dem client notwendig ist?

    Soweit ich weiss, muss das com-objekt registriert sein (auf dem client), wenn man über CoHarshalInterThreadInterfaceInStream oder der GIT auf dass Interface zugreifen will.

    Gibt es noch eine andere Möglichkeit?

  • #2
    Hallo,

    wenn die Typbibliothek des COM-Servers nicht registriert ist, kann das Programm nur über die späte Bindung (IDispatch) auf das COM-Objekt zugreifen. Aber immer dann, wenn der Interface-Zeiger für einen anderen Thread vorbereitet werden muss, benötigt der Marshaler die dazu nötigen Infos. Im Fall von Delphi wird der Typbibliothek-Marshaler genutzt, daher wird erwartet, dass die TLB auf dem Client registriert ist. Wenn das nicht in Frage kommt, muss die Delphi-Anwendung auf den unter C++ üblichen Weg der eigenen Proxy-/Stub-DLLs zurückgreifen. In C++ ist es üblich, dass eine eigene Marshaler-DLL generiert, compiliert und in der Registry als zuständiger Marshaler eingetragen wird. Dieser Weg ist allerdings nur dann möglich, wenn der Anbieter des COM-Objekts diesen auch so vorgesehen hat (denn er muss diese DLL liefern). Der Aufwand steht aber in keinem Verhältnis zum Nutzen

    Comment

    Working...
    X