DLLImport Problem ulong Array



  • Hi,
    Ich habe Problme beim Aufruf einer Funktion die im Parameterkopf ein unsigned long array zurückgibt.

    short func(unsigned short *retsize,unsigned long retdata[]);
    

    In C# hab ich immoment es so aufgerufen:

    [DllImport("RPPM3Csafe.dll")]
    static extern short func(ref UInt16 rsp_data_size, out UInt32[] rsp_data);
    

    Ich habs auch mit ref probiert, aber was das gleiche Ergebnis.

    Das ist die Fehlermeldung:

    Die Laufzeit hat einen schwerwiegenden Fehler entdeckt. Fehleradresse:
    "0x79e7b7b1" in Thread "0xbd0". Fehlercode: 0xc0000005. Bei diesem Fehler könnte
    es sich um ein Problem in der CLR oder in den unsicheren oder nicht
    verifizierbaren Teilen des Benutzercodes handeln. Übliche Ursachen dieses Bugs
    sind Marshallerfehler für COM-Interop oder PInvoke, die den Stapel beschädigen
    können
    

    Wie muss ich die Funktion richtig aufrufen?

    MFG JooAchim



  • hi,

    [DllImport("dll.dll")]
    static extern short func(ref UInt16 rsp_data_size,  out IntPtr rsp_data);
    
    IntPtr prsp_data;
    UInt32[] rsp_data = new UInt32[255];
    
    func(ref rsp_data_size,out prsp_data);
    for (int i = 0; i < rsp_data_size; ++i)
    {
      rsp_data[i] = Marshal.ReadInt32(Marshal.ReadIntPtr(prsp_data,i *IntPtr.Size)); // hier feler
    }
    

    hab das jetzt mi IntPtr gemacht.Jetzt sag er mir aber das ich in einem geschützen Bereich versuche zu schreiben und das das nicht gestattet sei.

    Kann man das irgentwie zulassen? Oder muss man da ganz anders rangehen?

    MFG JooAchim



  • Hi,
    Habs gelöst.Und will die Lösung natürlich euch nicht vorbehalten. Auch wenns nur ein Link ist.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconarrayssample.asp

    MFG JooAchim


Anmelden zum Antworten