Hi Liste,
hab mal wieder ein kleines Problemchen und hoffe auf Eure Hilfe:
Hintergrund: Es werden Methoden einer externen .dll (C++) aufgerufen welcher ein 
Pointer auf eine Struktur übergeben wird. Die DLL soll die Struktur mit Daten füllen 
und diese Daten werden dann in der App (windows form) dargestellt.
Ich habe die Struktur aus c++ übernommen und in eine c# struct umgewandelt:

[StructLayout(LayoutKind.Explicit)]
unsafe public struct TSDKStationInformation
{
        [FieldOffset(0)]public System.UInt32 size;       
        [...]   
        [FieldOffset(32)] public System.Char * Description;   
        [...]
}

Eine Variable von Typ der Struktur ist als Klassenmember deklariert. Mein externer 
Funktionsimport sieht so aus:

[DllImport("blah")]
private unsafe static extern int GetStation(System.Int16 ListMode, System.Int32 
StationID, TSDKStationInformation * StationInformation);

Der Aufruf im Code so
[...]
fixed(TSDKStationInformation * pStationInformation = &StationInformation)
{                       
        GetStation(0, 1,  pStationInformation);
        tbxMessage.Text += "\r\ntest: " + test + " x:" + 
StationInformation.Coordinate.x + " y:" + StationInformation.Coordinate.y;
}

Ist das mit dem fixed richtig? Ich habs schon mit out versucht, aber das hat nicht 
geklappt.
Das Problem scheint zu sein dass er zwar den Pointer auf die Struktur richtig 
übergibt, das Füllen in der DLL auch soweit funzt (laut debugger in VC++ 6) aber ich 
am Ende des Aufrufs in meiner .NET Variable nicht drin stehen habe.

Was ist zu beachten bei der Übergabe von Pointern auf Strukturen wenn ich zwischen 
.NET und "unsafe" Code hin und her springe.
Hab zwar schon alles veruscht (zumidnest alles was ich weiss) finde aber den Fehler 
nicht :-((

Danke für Eure Hilfe
Tobias :-)
_______________________________________________
Framework.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/framework.net

Antwort per Email an