Sto provando a scrivere un wrapper attorno a un C function che si aspetta un puntatore a funzione e dati utente arbitrari (void*
). Il puntatore alla funzione ho capito come gestire l'utilizzo dei delegati, ma non riesco a capire come convertire un object
in un void*
.Converti oggetto in vuoto * e ritorno?
posso farne una ref object
, invece, dal momento che si comporta come un puntatore per quanto ne so, ma quando provo che ricevo un'eccezione come
una variante non valido è stato rilevato nel corso di una conversione da una variante non gestito a un oggetto gestito. Il passaggio di VARIANT non validi al CLR può causare eccezioni impreviste, danneggiamento o perdita di dati.
This "solution" potrebbe lavorare per me, ma ho pensato che ci deve essere un modo per passare dati arbitrari ad un C DLL in modo che possa essere passato torna più tardi?
e IntPtr? –
Personalmente, penso che farei meglio ad usare un puntatore a una 'struct' tramite un blocco' fixed' ... –
@NoIdeaForName: La DLL C avrà un 'IntPtr' nessun problema, ma come faccio a girarlo ritorna in un 'oggetto' quando ritorna (e anche come fa 'lanciare' un oggetto su un IntPtr)? – mpen