Hilfestellung?? Arbeiten mit COM-Interfaces ?
-
hr ist an dieser Stelle 0.
Hab ja auch gesagt, dass er einen validen Zeiger zurückgibt.
Jedoch gelingt mir dies mit CoCreateInstance nicht, ein positives Ergtebnis zu erlangen, dort bekomme ich immer den Fehlercode Invalid Arguments zurück.
Ist auch eine Sache, die mich gewundert hat!
Das Problem ist mehr, das der Zeiger nicht auf das richtige Interface zeigt, oder ich Zugriffsprobleme darauf habe?
-
Nochmal: Bei hr in der Struktur und der Rückgabewert sind beide S_OK?
-
Was heisst bei hr in der Struktur ?
Der Rückgabewert von CoCreateInstanceEx ist 0, und ich glaube das bedeutet S_OK.
Es treten erst unbekannte Fehler auf, wenn ich versuche mit dem übergebenen Pointer auf das Interface zu zugreifen...
-
Du hast es nicht verstanden! Doku lesen zu CoCreateInstanceEx!
MULTI_QI hat einen member hr, dieser gibt Auskunft ob der Zeiger in diesem Slot valide ist!
Also ist nun queue[0].hr==S_OK?
-
Woher nehmen und nicht stehlen...
der hr-Code in der STruktur ist null, sowie der Rückgabewert der Funktion CoCreateInstanceEx.
Beim Aufruf des Interfaces:
hr = pOPCBrowse->ChangeBrowsePosition(dwBrowseDir, NULL);
gibt er mir den Fehler "An den Stub wurde ein Nullzeiger übergeben" zurück!
bei den anderen beiden Aufrufen:
hr = pOPCBrowse->QueryOrganization(pNameSpaceType); //und hr = pOPCBrowse->BrowseOPCItemIDs(dwBrowseType, NULL, 0, 0, pIEnumString);
bekomme ich den fehlercode für "Zugriff verweigert" zurück.
Ich hoffe meine Informationen sind nun etwas genauer
-
Befindet sich das Objekt auf Deinem Rechner, oder ist das ein DCOM Zugriff?
Ansonsten wende Dich vertrauensvoll an den Support desjenigen der dieses COM Objekt erzeugt hat!
-
Ja, das Objekt ist lokal auf dem Rechner!
Naja... die Alternative bietet sich leider nicht
So'n Dreck da!
-
Öh, du verwendest doch da den Demo Server von Softing.
Warum benutzt du dann nicht das zugehörige Toolkit um darauf zuzugreifen ?
-
Der Demo-Server dient mir nur als OPC Server, der ein wenig Space hat!
Wir haben Softings Produkte nicht lizenziert, sondern hatten vor x Jahren mal ein Toolkit von TSOPC gekauft (TechnoSoftware), damals war aber die browse-Funktion noch nicht bei TsOPC implementiert, die wir nun auf Kundenwunsch benötigen.
Da ein Upgrade jedoch inkompatibel zu unserem bestehenden Projekt ist, zu dem kostenpflichtig ist, war die erste Idee, eben diesen OPC-Interface-Zugriff selbst zu programmieren!
-
Ich stehe gerade auch vor dem Problem OPC Zugriff in ein Programm einzubauen, das bisher keinen hat.
Ein kurzer Blick auf die OPC COM Interfaces und ein paar Tests mit der Demo Version des Toolkits machten uns schnell klar, das kaufen hier billiger ist als selber schreiben.