Salve mi scuso con i moderatori perchè questa domanda è sostanzialmente una riformulazione di quella che ho già fatto ([c & DDK - due parametri a un driver]).La riformulo cercando di focalizzarla sulla parte del problema che realmente non riesco a risolvere perchè mi sono reso conto che probabilmente il tema driver non è familiare a molti (me compreso...) e anche chi potrebbe aiutarmi non la considera nemmeno perchè pensa di non essere ferrato in materia...speriamo bene...perchè fin'ora zero risposte,ad ogni modo se i moderarori vogliono cancellare l'altra discussione nessun problema da parte mia.

Venendo al dunque:io ho una funzione che prende un puntatore a void contenente tutti i dati che le servono accodati l'uno dietro all'altro e un intero che gli indica la dimensione totale dei dati.Dall'esterno io devo riuscire a costruire appunto un buffer in cui siano accodati di seguito una struttura con vari campi ed un intero,passare il buffer alla mia funzione, e all'interno della funzione riuscire ad estrarre i dati dal buffer sapendo già come sono strutturati al suo interno (cioè se venga prima la struttura o l'intero e quanto è grande la struttura).
Per farlo ho operato così:

codice:
//costruzione del buffer:

Mystruct struct;

...........

char* data = (char*)malloc(sizeof(MyStruct) + sizeof(int));
//if(!data)
 	.......

memcpy (data,&struct, sizeof(MyStruct));
memcpy (data + sizeof(MyStruct),&MyInt, sizeof(int));


//estrazione dati dal buffer all'iterno della funz:


void MyFunct(void * buff,int dataSize)
{
	.............
	Mystruct *struct;
	int *pMyInt;
	struct = (MyStruct *)buff;
	buff+=sizeof(Mystruct); ///<-------- il compilatore si arrabbia
	pMyInt = (int*)buffr;
	
	//alla fine della fiera *pMyInt e struct->questo,struct->quell'altro...dovrebbero
	//contenee i dati che mi servono


}

-Il problema è che il compilatore non è d'accordo con me su quell'incremento del
puntatore a void,mi dice che non conosce la dimensione.
-Per la costruzione del buffer invexce non mi da problemi (almeno in compilazione poi si vedrà)
-C'è da dire anche che io questo codice lo devo inserire,la parte di sotto in un driver scritto in c e quindi tutto ok,ma la parte di sopra in un'applicazione scritta in C++ usando le MFC,cioè all'interno di un metodo,e non è il massimo inserire istruzioni prettamente C come memcpy o malloc in un programma in C++.

Quindi se qualcuno sapesse dirmi come risolvere il mio problema di trasferimento di dati in maniera semplice ed elegante glie ne sarei mooolto grato.


PS.Non suggeritemi una cosa ovvia come :"perchè non scrivi Myfunct in modo che i dati li prenda separatemente in vari parametri e non accorpati in un'unico buffer?",semplicemente perchè MyFunct è una chiamata di sistema che si usa così e basta.

Thanks,ciao