COM
-
Hallo,
wie kann ich prüfen, ob ein Interface-Zeiger gueltig ist, ohne eine Methode des Interface aufzurufen?
-
Naja, wenn dein Basisklassenpointer NULl ist, ist er ungültig, ansonsten meistens gültig. Du hast doch deine Funktion in deiner Dll, die dir den Pointer initalisiert. Ich weiss jetzt nicht wie das bei dir konkret aussieht, aber im Endeffekt wird deine Funktion einen Basis** erwarten und das Objekt initialisieren.
Das bedeutet dass du es einfach so prüfen kannst:
CBase* test = (CBase**)NULL; //Hier das Laden deine Dll also LoadLibrary oder LoadLibraryEx und GetProcAddress mit deiner Funktion. //Funktionszeiger ausführen, kriegt addresse von test übergeben if (!test) //test ist initalisiert else //test ist nicht initialisiert
-
Du kannst natürlich zuerst auf 0(NULL) prüfen. Wenn du keinen NULL-Pointer hast, bedeutet dies jedoch leider nicht das du mit deinem Interface-Pointer auch erfolgreich arbeiten kannst. Es können mit dem Pointer natürlich alle möglichen Fehler gemacht worden sein, von der Seite die dir diesen Pointer übergibt.
Im Falle von DCOM kommen ausserdem noch potentielle Netzwerk-Fehler dazu.
Das heisst, du musst bei jeden COM-Aufruf mit Fehlern rechnen, du kanst nicht im Vorfeld durch irgendwelche Prüfungen Fehler ausschliessen.mfg JJ