Announcement

Collapse
No announcement yet.

COM Interop Problem mit einem VARIANT FAR* Parameter

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • COM Interop Problem mit einem VARIANT FAR* Parameter

    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
Working...
X