Thread Win32::API und LibUSB-Win32
(36 answers)
Opened by rosti at 2017-02-03 11:40
Hi Danke Dir!
Meine Schablonen passen ja, das sind V bzw. v für die Endians, das ist nicht das Problem. Und offensichtlich liegen die Daten für struct_in_struct (war Frage 1) auch hintereinander im RAM, denn ich komm ja an die Daten ran. Mit schmiert aber die Kiste ab, wenn ich usb_oben aufrufe: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Win32::API->Import('libusb0', 'usb_open',"I","P") or die $^E; Win32::API::Struct->typedef( 'usb_device', "LPLONG","next", "LPLONG","prev", "CHAR","filename", # hat 512 byte "LPLONG","usb_bus", "CHAR","bLength", "CHAR","bDescriptorType", "SHORT","bcdUSB", "CHAR","bDeviceClass", "CHAR","bDeviceSubClass", "CHAR","bDeviceProtocol", "CHAR","bMaxPacketSize0", "SHORT","idVendor", "SHORT","idProduct", "SHORT","bcdDevice", "CHAR","iManufacturer", "CHAR","iProduct", "CHAR","iSerialNumber", "CHAR","bNumConfigurations", "LPLONG","config", "VOID","dev", "CHAR","devnum", "CHAR","num_children", "LPLONG","children" ); my $dev = Win32::API::Struct->new( 'usb_device'); foreach my $key(keys %usb_device){ $dev->{$key} = $usb_device{$key}} usb_open($dev); Und da weiß ich schonmal nicht, ob ich die Funktion richtig deklariert habe, in usb.h steht usb_dev_handle *usb_open(struct usb_device *dev); also, ob meine Übergabe so gesehen richtig ist? Unklar auch die typedef. So ist filename lt. struct char filename[LIBUSB_PATH_MAX]; und meine Deklaration mit CHAR ist mit Sicherheit falsch -- nur wie mache ich es richtig? In Type.pm finde ich nichts passendes und die Doku gibt es auch nicht her.. MfG |