ctypes and reading value under pointer passed as param of a callback
Thomas Heller
theller at python.net
Thu Jul 24 11:01:28 EDT 2008
waldek schrieb:
> Hi,
>
> I'm using C dll with py module and wanna read value (buffer of bytes)
> returned in py callback as parameter passed to dll function.
>
The callback receives a pointer instance. You can dereference the pointer
to read individual bytes in this way:
print data[0], data[5], data[42]
or use slicing to read a bunch of bytes:
print data[0:42]
So, you probably want something like this:
> --------------------------------------------------
> def mycallback(data, size):
> # how to read data buffer here ?
print data[:size]
> return 0
>
> cbfunc = CFUNCTYPE(c_int, POINTER(c_uint8), c_int)
>
> mydll = cdll.somedll
> mdll.foo(cbfunct)
> ---------------------------------------------------------------
>
> Question: How to get bytes from the buffer passed to mycallback ???
> Let's assume that the buffer consist of 4 bytes 4 bytes 8 bytes.
>
> I tried unpack("ii8s", data[0]) and nothing. I tried different ctypes
> passed to callback and nothing.
Thomas
More information about the Python-list
mailing list