Thread Win32::API und LibUSB-Win32 (36 answers)
Opened by rosti at 2017-02-03 11:40

rosti
 2017-02-06 07:28
#186043 #186043
User since
2011-03-19
3180 Artikel
BenutzerIn
[Homepage]
user image
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

View full thread Win32::API und LibUSB-Win32