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

FIFO
 2017-02-05 22:58
#186041 #186041
User since
2005-06-01
469 Artikel
BenutzerIn

user image
2017-02-05T18:14:31 rosti
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct usb_device
{
struct usb_device *next, *prev;

char filename[LIBUSB_PATH_MAX];

struct usb_bus *bus;

struct usb_device_descriptor descriptor; # Frage 1
struct usb_config_descriptor *config;

void *dev; /* Darwin support */ # Frage 2

unsigned char devnum;

unsigned char num_children;
struct usb_device **children;
};


Pointer ist klar, der beansprucht 4 Bytes als little Endian.

Frage 1: Das ist kein Pointer, wieviele Bytes muss ich da veranschlagen? sizeof(usb_device_descriptor) und die Daten als Array?

Frage 2: Vermutlich 0 Bytes?


Die Anzahl der Bytes für einen Pointer hat mit Big/Little Endian nichts zu tun ...

Frage 1: Die Größe des struct usb_device_descriptor ergibt sich aus seiner Definition im Headerfile.
edit: Wie das struct im struct dann in den Ergebnis-Hash abgebildet wird, kann ich Dir nicht sagen. Vermutlich musst Du am Byteoffset des Members descriptor einen Bytestring-Platzhalter (Ann) in Dein unpack-Pattern setzen und diesen String dann wiederum mit einem Pattern entpacken, das der struct-Definition von usb_device_descriptor entspricht.

Frage 2: void *dev ist ein Pointer, also 4 Bytes bei 32bit Adressbreite.
Last edited: 2017-02-05 23:19:33 +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"

View full thread Win32::API und LibUSB-Win32