Hallo Liebe Leute,
ich habe einige Probleme mit folgender DLL Funktion:
Code:
LMUSB_HANDLE __stdcall InitializeDevice(unsigned short usVID,
unsigned short usPID,
LPGUID lpGUID,
BOOL *pbDriverInstalled);
Die beiden us- und der BOOL-Parameter machen keine Probleme. Der Rest schon.
Hier ein Ausschnitt aus dem Headerfil mit den notwendigen typedefs:
Code:
typedef unsigned char UCHAR, *PUCHAR;
typedef unsigned short USHORT, *PUSHORT;
typedef struct {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
byte Data4[8];
} GUID;
typedef GUID *LPGUID;
typedef void *LMUSB_HANDLE;
Ich habe die Funktion mit Hilfe des Wizzards erstellen lassen. Im Wizzard wird mit für den Parameter
ein Cluster angezeigt. Allerdings ist das Cluster nicht im vi vorhanden wenn ich nach der Erstellung das Blockdiagramm ansehe. Die Datentypen des Structs sind vom Wizzard lediglich einzeln an den Call Function Node Block angeschlossen worden? MIt diesen Konfigurationen erhielt ich einen Fehler von LV(#1097). Ich habe das vom Wizzard erstellte VI dann so editiert, dass die lpGUID als einzelner Parameter also in Form eines Clusters angeschlossen werden kann. Die vom Wizzard erstellten Datentypen habe ich beibehalten.
Ich bekomme hiermit zumindest keinen Fehler. Ich bekomme allerdings eine NULL als return Value. Meine Vermutung ist, dass die GUID nicht richtig erkannt oder übergeben wird?
Sind die Datentypen für Handler und die Übergabe der Parameter im richtigen Format für LabVIEW? Oder muss ich Vielleicht sogar komplett anders vorgehen um die richtige Funktionalität zu erhalten.
Danke für eure Hilfe!