c ++ - Hvordan kan jeg adressere et COM-objekt, der er identificeret af en given IUnknown * fra en anden proces?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skrev to små C ++-applikationer, hvoraf den ene er en ActiveX-container, der indlejrer nogle ActiveX-kontroller. Denne container ansøgning kender IUnknown* refererer til ActiveX kontrol.


Den anden applikation er en klient, der skal interagere med ActiveX-kontrollen i den tidligere ansøgning. Jeg ved dog ikke, hvordan man får et håndtag på kontrollen i klientprogrammet. Det er bare at transportere pointerværdien af ​​IUnknown* fra serveren til klienten, ikke at arbejde med kurser på grund af uafhængige adresselokaler.


Er det på en eller anden måde muligt at 'duplikere' et håndtag til nogle COM-objekter, så det nyoprettede håndtag kan bruges af andre processer? Jeg vil gerne have COM gøre RPC-arbejdet for mig. Ellers skal jeg gøre alle COM-opkald i serverprogrammet og gøre alle RPC'erne selv. : -/

Bedste reference


Du kan måske se på RPC generelt og COM Proxies. [3]



   En proxy befinder sig i adresseplanet i opkaldsprocessen og fungerer som en surrogat for det fjerne objekt. Ud fra det kaldende objekts perspektiv er proxy objektet. Proxyens rolle er typisk at pakke grænsefladeparametrene for opkald til metoder i dens grænseflader. Proxyen pakker parametrene ind i en meddelelsesbuffer og overfører bufferen til kanalen, der håndterer transporten mellem processer. Proxyen implementeres som en aggregat eller kompositobjekt. Den indeholder et systemleveret, styre stykke kaldet proxy manager og en eller flere grænsefladespecifikke komponenter kaldet interface proxies. Antallet af grænsefladsproxy er lig med antallet af objektgrænseflader, der er blevet udsat for den pågældende klient. Til klienten, der overholder komponentobjektmodellen, ser proxyen ud som det rigtige objekt.