Marshalling dei dati con platform invoke
Per chiamare le funzioni esportate da una libreria non gestita, un'applicazione .NET Framework richiede un prototipo di funzione nel codice gestito che rappresenta la funzione non gestita. Per creare un prototipo che consenta il marshalling corretto dei dati mediante platform invoke, occorre procedere nel modo seguente:
Applicare l'attributo DLLImportAttribute alla funzione o al metodo statico nel codice gestito.
Sostituire i tipi di dati non gestiti con i tipi di dati gestiti.
È possibile utilizzare la documentazione fornita con una funzione non gestita per costruire un prototipo gestito equivalente applicando l'attributo con i relativi campi facoltativi e sostituendo i tipi di dati non gestiti con quelli gestiti. Per istruzioni su come applicare l'attributo DllImportAttribute, vedere Utilizzo delle funzioni di DLL non gestite.
In questa sezione vengono forniti esempi che dimostrano come creare i prototipi di funzioni gestite per passare argomenti e ricevere valori restituiti da funzioni esportate dalle librerie non gestite. Negli esempi viene inoltre illustrato l'utilizzo dell'attributo MarshalAsAttribute e della classe Marshal per eseguire il marshalling esplicito dei dati.
In questa sezione
Tipi di dati di platform invoke
Viene fornito un elenco di tipi di dati gestiti e dei corrispondenti tipi di dati non gestiti.PinvokeLib.dll
È riportato il codice in cui sono definite le funzioni di libreria fornite da Pinvoke.dll.Marshalling di stringhe
Viene descritto come passare le stringhe per valore, per riferimento, nelle strutture, nelle classi e nelle matrici.Marshalling di classi, strutture e unioni
Viene descritto come passare le classi per valore, come passare varie strutture e come passare le unioni con tipi valore e misti.Marshalling di matrici di tipi
Viene descritto come passare matrici multidimensionali di interi per valore e come passare matrici unidimensionali per riferimento.Esempi vari di marshalling
Vengono descritti aspetti della Garbage Collection e del threading che hanno effetto sul comportamento del marshalling di interoperabilità.
Sezioni correlate
Marshalling di interoperabilità
Viene descritto il marshalling per l'interoperabilità COM e platform invoke.comportamento predefinito del marshaling
Vengono descritte le regole utilizzate dal servizio di marshalling di interoperabilità per il marshalling dei dati.Utilizzo di funzioni di DLL non gestite
Viene descritto come chiamare le funzioni di DLL non gestite mediante platform invoke.