Per il problema con il puntatore a void credo tu debba convertirlo in qualche altro formato per poter effettuare operazioni. Io ho trovato questo. Non so se possa esserti utile.prova a fare cosė e vedere se funziona:
In ANSI C void* also appears and means something quite different to plain void. Plain void indicates the absence of data. void* indicates the address of some data of unknown type. It is only used for formal arguments of functions. This functions can be written to use any type of data. An example is qsort in the standard C library. But a void* points at objects of unknown size, so pointer arithmetic is not defined on them. So void* arguments can not have subscripts and the * operator is undefined on them! Instead the size of the data is put in a different argument and, internally, the void* pointer is cast into a char* and all access to the objects is done using the explicit size and memory copy functions.
codice:void MyFunct(void * buff,int dataSize) { (char *)new_buf = (char *)buff; // e usi new_buf per le operazioni all'interno della funzione ...

Rispondi quotando