Programm mit DLL

21/09/2007 - 17:00 von Marco | Report spam
Hallo

Ich schreibe ein Programm, dass über ein Netzwerk kommuniziert. Die
Kommunikation übernimmt eine DLL, die in C geschrieben ist. Sie benutzt
folgendes Struct zur Datenübermittlung:

typedef struct _new_params
{
char newf;
unsigned long ip_address;
unsigned long netmask;
unsigned long gateway;
#ifdef VERSION2
unsigned char use_dhcp;
#endif
} NEW_PARAMS;

typedef struct
{
unsigned char addr[6];
NEW_PARAMS params;
char ID_String[80];
char Address[80];
} MAC_ADDR;

Die Steuerung sollte allerdings über VB.NET erfolgen. Wie kann ich diese
Datenpakete nun in mein VB Programm übertragen? Oder sollte ich jede Variable
einzeln zurückgeben? Danke für die Hilfe.

Mit freundlichen Grüssen

Marco Hemmerle
 

Lesen sie die antworten

#1 Jens Müller
22/09/2007 - 14:15 | Warnen spam
Ich schreibe ein Programm, dass über ein Netzwerk kommuniziert. Die
Kommunikation übernimmt eine DLL, die in C geschrieben ist. Sie
benutzt folgendes Struct zur Datenübermittlung:

Die Steuerung sollte allerdings über VB.NET erfolgen. Wie kann ich
diese Datenpakete nun in mein VB Programm übertragen?



Hier geht's um VB<=6.

Dort kannst du versuchen die Datenstruktur nachzubilden mittels Types.

Char sollte dem VB Byte entsprechen, das Zeichen bekommst du dann mit
Chr$().
Als Übergabeparameter für unsinged long nimmst du long, und musst
umrechnen, falls die Rückgabe negativ ist (bzw. höchstes Bit gesetzt).

Also:
Type struct_new_params
newf as byte
ip_address as long
netmask as long
gateway as long
use_dhcp as long
end type

Wie man im zweiten struct mit den Arrays umgeht weiß ich nicht genau.
VB nutzt SAFEARRAY. Bei diesem fest dimensionierten arrays reicht
evenruell, hier einfach mehrere Byte-Elemente hintereinander zu
definieren.

Oder sollte ich jede Variable einzeln zurückgeben?



Wenn du den Quelltext der DLL hast, kannst du das natürlich auch tun.

HTH,
Jens

Ähnliche fragen