Zitat:Hab ich gemacht, da aber die DLL nicht richtig ausgeführt wurde (siehe Fehlermeldung oben) bekomme ich nichts raus.
Gut. Jetzt setzt du noch auf den Draht zum Anzeigeelement einen Breakpoint - und sagst Bescheid, ob der Breakpoint ausgeführt wird oder ob wieder die Fehlermeldung kommt.
Es scheint also tatsächlich so, dass die DLL gerne einen richtig funktionierenden *lpOverlapped haben möchte. Da wird mir wohl nichts anderes übrig bleiben - als mir was einfallen zu lassen.
Im übrigen: Du hast doch wohl die richtige Aufrufkonvention gewählt? StdCall?
Und noch eins:
Probier mal folgendes aus: Besetzte das Array nicht mit Nullen vor, sondern mit Einsen. Außerdem übergibst du 100 ValidPoints (anstelle von 0) und Size=200 (anstelle von 0).
Was soll denn die DLL überhaupt machen?
Jetzt hab' ich mir den Thread noch mal angekuckt - und bin auf folgende Inkonsistenz gestoßen. Im ersten Posting schreibst du, die DLL-Funktion sieht so "BOOL UP(HANDLE hDevice,_BUFFER_ST *buffer,LPOVERLAPPED lpOvl);" aus. Das sind drei Parameter auf dem Stack. Erzeugt hast du aber eine solche Funktion: "unsigned long up(long hDevice, unsigned short int *pBuffer, unsigned long size, unsigned long validPoints, unsigned long *lpoverlapped);". Das sind aber fünf Parameter auf dem Stack. Fünf und drei beißt sich aber - und führt garantiert zu einer AccessViolation.
Es wird dir gar nichts anderes übrigbleiben als zu warten, bis mir (oder dir oder jemand anderem) eine passende Lösung eingefallen ist.