Announcement

Collapse
No announcement yet.

DCOM/COM

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

  • DCOM/COM

    Hallo,
    über die Schnittstelle QueryInterface() erhalte
    ich die Adresse einer Komponente wie z.B. : Sum
    Warum ändert sich die Adresse der Funktion "Sum"
    bei jedem Aufruf, auch wenn die DLL die diese Methode zur Verfügung stellt immer an der gleichen Adresse geladen wird. Kann mir bitte eine
    Antwort geben.
    Danke im voraus

  • #2
    Hallo,

    ein Interface-Zeiger ist ein doppelter Zeiger, der nicht direkt auf die virtuelle Funktionstabelle des COM-Objekts zeigt. Der Grund dafür liegt darin, das es für COM-Clients keine Rolle spielen darf, ob es sich um einen In-Process-Server, Local Server oder Remote Server handelt. Immer dann, wenn ein Prozess- bzw. Threadwechsel für den Zugriff notwendig wird, blendet der <i>Marshaler</i> die sogenannte <b>Proxy-</b> und <b>Stub</b>-Objekte ein. Der Interface-Zeiger des Clients zeigt in diesem Fall auf das Proxy-Objekt. Somit sorgt erst die COM-Runtime dafür, das der Aufruf auf die "richtige" Server-Methode umgeleitet wird

    Comment


    • #3
      Hallo,<br>
      <br>
      Ich habe in C++ eine Speicherverwaltung für Steuerungen(SPS) geschrieben, und verwende einige Tamplate-Klassen wie <b>TArrayAsVector</b> oder die Hashtabbelen der Containerklassen von Borland .<br>
      Die Anwendung funktioniert im direkten Aufruf tadellos. Als COM-Server jedoch bekomme ich bei der Serverinitialisierung (von anderer Anwendung aufgerufen) die Meldung: <b>"Abnormal Server Error"</b> und einen harten Systemabsturz.<br>
      Wenn ich die Speicherverwaltung direkt starte, und anschließend auf die COM-Serverschnittstelle über eine andere Anwendung zugreife, funktioniert zwar die Kommunikation, jedoch sind die Speicherinhalte der Containerklassen des COM-Servers nur als geordnetes Chaos anzusehen.<br>
      Sobald ich die Klassen der Speicherverwaltungsanwendung aus dem COM-Server entferne, funktionieren alle Arten der Serverinitialisierung wieder.<br>
      Ist es möglich,dass die Borland-Templateklassen für Serveranwendungen ungeeignet sind, oder ist das Problem an anderer Stelle zu suchen

      Comment

      Working...
      X