Thread Win32::API und LibUSB-Win32
(36 answers)
Opened by rosti at 2017-02-03 11:40
Aha. Also kann man davon ausgehen, dass die structs bytegenau im Speicher abgebildet sind (zumindest wenn RC_INVOKED nicht defined).
Ich hab mal durch Dein Modul geschaut, der Kostruktor sieht ok aus, bis vor den Methodenaufrufen Code (perl): (dl
)
1 2 3 4 5 6 $self->_get_busses; $self->_get_fst_device; $self->_get_configuration; $self->_get_interface; $self->_usb_open; In _get_busses ist nicht alles so einsichtig, hab mal Orientierungskommentare platziert: 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 sub _get_busses{ my $self = shift; my $usb_get_busses = Win32::API->new('libusb0', 'int usb_get_busses()'); my $bus_addr = $usb_get_busses->Call(); #print $bus_addr,"\n"; # Erstes usb_bus-struct einlesen und entpacken my $mem_usb_bus = ReadMemory($bus_addr, 532); my %usb_bus; @usb_bus{qw(next prev dirname devices location root_dev)} = unpack "VVZ512VVV", $mem_usb_bus; # In $usb_bus{devices} ist also jetzt die Adresse des ersten usb_device-structs im ersten usb_bus # ab hier ??? --------------------------------------------------- Win32::API::Struct->typedef( 'usb_bus', "INT_PTR","devices" # ??? ); my $usb_bus = Win32::API::Struct->new( 'usb_bus'); #$self->dd($usb_bus); # bis hier ??? -------------------------------------------------- $self->{usb_bus} = \%usb_bus; } Sollte aber eigentlich trotzdem klappen ... _get_fst_device scheint auf den ersten Blick ok, zumindest das unpack-Pattern. Weiter kam ich noch nicht. Ab wo bekommst Du denn Probleme? Btw halte ich es für riskant, sich auf bestimmte struct-Repräsentationen im Speicher zu verlassen. Spätere libusb-Versionen haben wahrscheinlich eine andere Datenstruktur-Grundlage. edit: Ich frag mich die ganze Zeit: Warum schreibst Du nicht eine Wrapper-DLL, die den Low-Level-Kram in C erledigt und ein einfaches Interface für Win32::API bereitstellt? Last edited: 2017-02-08 07:09:01 +0100 (CET) Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|