Wrapping di delegati e puntatori a funzioni non gestiti
Aggiornamento: novembre 2007
In .NET Framework 2.0 e versioni successive è possibile eseguire il marshalling dei puntatori a funzioni tra codice gestito e non gestito utilizzando i seguenti metodi:
Utilizzare il metodo Marshal.GetDelegateForFunctionPointer per eseguire il marshalling di un puntatore a funzione non gestito in un delegato. Per rappresentare un puntatore a funzione non gestito, questo metodo utilizza la classe System.IntPtr.
Utilizzare il metodo Marshal.GetFunctionPointerForDelegate per eseguire il marshalling di un delegato in un puntatore a funzione chiamabile dal codice non gestito. Quando si utilizza questo metodo, è necessario impedire manualmente che il delegato sia sottoposto a Garbage Collection. Il Garbage Collector non tiene traccia dei riferimenti al codice non gestito.
In .NET Framework 2.0 e versioni successive il gestore di marshalling dei parametri è anche in grado di eseguire il marshalling dei puntatori a funzioni nei delegati.