Hallo Leute,
ich versuche eine Methode in einem Com Server auszurufen, die als Übergabe Parameter einen VARIANT* FAR Zeiger erwartet. Dieser Zeiger zeigt wiederum auf eine dynamische VARIANT Struktur.
Definiert ist die Methode wie folgt:
file.odl
[id(01)] long Execute_Var(VARIANT* pvFunction);
file.h
afx_msg long Execute_Var(VARIANT FAR* pvFunction);
file.cpp
BEGIN_DISPATCH_MAP(CzData, CCmdTarget)
DISP_FUNCTION_ID(CzData, "Execute_Var", 01, Execute_Var, VT_I4, VTS_PVARIANT)
END_DISPATCH_MAP()
Den .Net Wrapper für ads Interface habe ich mir vom VSudio (VS2005) erstellen lassen.
In den generierten Metadaten wir die Methode folgendermasen gewrappt:
[DispId(1)]
public virtual int Execute_Var(ref object pvFunction);
Ich möchte nun einen Array mit Werten an die Methode übergeben. Dazu lege ich ein object[] an und weise dieses wieder einem object zu, welches ich übergebe.
object[] obj = new object[2];
obj[0] = "test";
obj[1] = 0;
object obj1 = obj;
com.Execute_Var(ref obj1);
Ich erhalte jedoch die Fehlermeldung:
HRESULT: 0x80010105 (RPC_E_SERVICERFAULT)
Sobald ich auf die Daten auf der COM Serverseite zugreifen möchte.
UINT uDim = SafeArrayGetDim(*pvFunction->pparray);
Ich denke auf der COM Server Seite kommt kein gültiger VARIANT Zeiger an.
Kann mir jemand helfen, wie ich die Daten von meiner :net Anwendung an den COM Server bekomme?
DANKE
ich versuche eine Methode in einem Com Server auszurufen, die als Übergabe Parameter einen VARIANT* FAR Zeiger erwartet. Dieser Zeiger zeigt wiederum auf eine dynamische VARIANT Struktur.
Definiert ist die Methode wie folgt:
file.odl
[id(01)] long Execute_Var(VARIANT* pvFunction);
file.h
afx_msg long Execute_Var(VARIANT FAR* pvFunction);
file.cpp
BEGIN_DISPATCH_MAP(CzData, CCmdTarget)
DISP_FUNCTION_ID(CzData, "Execute_Var", 01, Execute_Var, VT_I4, VTS_PVARIANT)
END_DISPATCH_MAP()
Den .Net Wrapper für ads Interface habe ich mir vom VSudio (VS2005) erstellen lassen.
In den generierten Metadaten wir die Methode folgendermasen gewrappt:
[DispId(1)]
public virtual int Execute_Var(ref object pvFunction);
Ich möchte nun einen Array mit Werten an die Methode übergeben. Dazu lege ich ein object[] an und weise dieses wieder einem object zu, welches ich übergebe.
object[] obj = new object[2];
obj[0] = "test";
obj[1] = 0;
object obj1 = obj;
com.Execute_Var(ref obj1);
Ich erhalte jedoch die Fehlermeldung:
HRESULT: 0x80010105 (RPC_E_SERVICERFAULT)
Sobald ich auf die Daten auf der COM Serverseite zugreifen möchte.
UINT uDim = SafeArrayGetDim(*pvFunction->pparray);
Ich denke auf der COM Server Seite kommt kein gültiger VARIANT Zeiger an.
Kann mir jemand helfen, wie ich die Daten von meiner :net Anwendung an den COM Server bekomme?
DANKE