Marshalling di stringhe
Con platform invoke vengono copiati i parametri di stringa mediante la conversione dal formato .NET Framework (Unicode) a quello non gestito, se necessario. Poiché le stringhe gestite sono immutabili, con platform invoke non vengono copiate di nuovo dalla memoria non gestita a quella gestita al completamento della funzione.
Nella tabella riportata di seguito sono elencate le opzioni di marshalling per le stringhe, con la descrizione dell'utilizzo e un collegamento all'esempio corrispondente di .NET Framework.
Stringa |
Descrizione |
Esempio |
---|---|---|
Per valore. |
Passa le stringhe come parametri in. |
|
Come risultato. |
Restituisce le stringhe dal codice non gestito. |
|
Per riferimento. |
Passa le stringhe come parametri in/out mediante StringBuilder. |
|
In una struttura per valore. |
Passa le stringhe in una struttura che è un parametro in. |
|
In una struttura per riferimento (char*). |
Passa le stringhe in una struttura che è un parametro in/out. Per la funzione non gestita è previsto un puntatore a un buffer di caratteri e la dimensione del buffer è un membro della struttura. |
|
In una struttura per riferimento (char[]). |
Passa le stringhe in una struttura che è un parametro in/out. Per la funzione non gestita è previsto un buffer di caratteri incorporato. |
|
In una classe per valore (char*). |
Passa le stringhe in una classe che è un parametro in/out. Per la funzione non gestita è previsto un puntatore a un buffer di caratteri. |
|
In una classe per valore (char[]). |
Passa le stringhe in una classe che è un parametro in/out. Per la funzione non gestita è previsto un buffer di caratteri incorporato. |
|
Come matrice di stringhe per valore. |
Crea una matrice di stringhe passata come valore. |
|
Come matrice di strutture che contengono stringhe per valore. |
Crea una matrice di strutture che contengono stringhe e la matrice viene passata come valore. |
Vedere anche
Concetti
Tipi di dati di platform invoke
Marshalling di classi, strutture e unioni
Marshalling di matrici di tipi