Neues Thema starten

Aufruf von worm_tse_listRegisteredClients in C#

Hi,

wir scheitern derzeit daran die registrierten Clients auszulesen.


Der Client-Struct sieht wie folgt aus:

 

[StructLayout(LayoutKind.Sequential)]
public struct Clients
{
     public int amount;
     [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16 * 31)]
     public char[] clientIds;
}

 

 

und der DLL-Import so: 

[DllImport("WormAPI.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern int worm_tse_listRegisteredClients(IntPtr info, int toSkip, out Clients clients);

 

Der Aufruf so:

Clients clients = new Clients();
int err = worm_tse_listRegisteredClients(info, toSkip, out clients);

 

Als Fehlermeldung erhalten wir immer Code 3 - WORM_ERROR_IO

clients ist mit 496 x \0 befüllt, aber anscheinend kann die TSE nicht in den Speicher schreiben.


Wir haben es auch mit einem IntPtr versucht:

IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(clients));
Marshal.StructureToPtr(clients, pointer, false);
int err = worm_tse_listRegisteredClients(info, toSkip, out pointer);


selber Fehler.


Hat jemand die Methode schon erfolgreich eingebaut?



Mit freundlichen Grüßen,

Christian Weiterer

Anmelden oder Registrieren um einen Kommentar zu veröffentlichen