DCOM - CoCreateInstance
-
Hallo zusammen,
ich versuche einen DCOM Client zu schreiben (Server VB, Client MFC)und bekomme einfach keine Instanz hin.
Im .idl-File habe ich mehrere Interfaces, davon brauche aber nur 2:"Interface Ix" und "Interface _IxEvent"
Das coclass-Statement hierzu sieht wie folgt aus:
coclass x {
[default] interface Ix;
[default, source] interface _IxEvent;
}Wenn ich nun versuche mit "CoCreateInstance" eine Instanz für das Interface _IxEvent zu bilden erhalte ich "E_NOINTERFACE" zurück.
## CoCreateInstance(CLSID_X, NULL, CLSCTX_LOCAL_SERVER , IID_IxEvent,(void**) &m_pIxEvent); ##
Egal was ich versuche, ich kann keine Instanz für das _IxEvent-Interface erzeugen.
pIx->QueryInterface funktioniert auch nicht.Wie kann ich eine Instanz für das doofe Event-Interface basteln ???
Anschließend würde ich gerne "AfxConnectionAdvise" verwenden um dem Server eine Methode für das Event zur Verfügung zu stellen.
Oder habe ich das was gar nicht verstanden ??
Wahrscheinlich bin ich einfach zu doof !!
Ich bin echt für jeden Tipp dankbar.
Im Voraus schon mal VIELEN VIELEN DANK für alle Tipps.
-
DU hasst DIe Implementation deiner Schnittstellen (Ix, IxEvent) in VB gemacht ???
due willst nen neue COM Instance auf Grundlage der IxEvent schnittstelle erstellen ? Die Implementation muss dann von der VB Klasse uebrnommen werden, ueber deine KlassID CLSID_X(diese Repraesentiert die Klasse (implementation) die fuer die erzeugung eines Objectes ueber die Schnittstelle zusatendig ist). Also fuer die Schnittstelle IXEvent miss deine CLSID als Impl eingetragen sein.
Hab aber keine Ahnung, wie man das in VB macht
Ciao ...
-
Mit dem Attribute 'source' markierte Schnittstellen sind nicht direkt instanziierbar. Über diese Schnittstellen ruft der Server den Client zurück. Der Client ist also in der Pflicht, das Objekt zu implementieren (in Deinem Falle das C++ - Programm).
Du versuchst stattdessen gerade, den Server dazu zu bewegen, sich selbst zurückzurufen. Das hat natürlich keinen Sinn. Und wie Du siehst, geht das auch nicht.
-
Hallo zusammen,
zunächst DANKE für die Tipps.
Die Implementierung in VB ist nicht von mir und ich habe auch keinen Einfluß darauf. Eine CLSID zu IxEvent gibts nicht.
Zu meiner Schande bin ich nun zu VB übergegangen. ;-(((
Hier war das ganze überhaupt kein Problem, die Funktion zum Event wird hier vollkommen automatisch erzeugt. Incl. aller Übergabeparameter.
Falls ich irgent wann noch erfahren könnte wie das selbe in VC++ funktioniert wäre ich der ganzen Welt dankbar.
Jetzt muß ich echt mit VB "arbeiten" so eine Schande
Trotzdem DANKE !!!!!!!