Marshalling di stringhe
Platform invoke copia parametri stringa, convertendoli dal formato .NET Framework (Unicode) al formato non gestito (ANSI) all'occorrenza. Dato che le stringhe gestite non sono modificabili, platform invoke non le copia di nuovo dalla memoria non gestita alla memoria gestita quando la funzione restituisce il controllo.
La tabella seguente elenca le opzioni di marshalling per le stringhe con la descrizione dell'utilizzo e un collegamento all'esempio .NET Framework corrispondente.
String | Descrizione | Esempio |
---|---|---|
Per valore. | Passa le stringhe come parametri in. | MsgBox |
Come risultato. | Restituisce le stringhe da codice non gestito. | Stringhe |
Per riferimento. | Passa le strutture come parametri in/out tramite StringBuilder. | Buffer |
In una struttura per valore. | Passa le stringhe in una struttura che è un parametro in. | Struct |
In una struttura per riferimento (char*). | Passa le stringhe in una struttura che è un parametro in/out. La funzione non gestita prevede un puntatore a un buffer di caratteri e le dimensioni del buffer sono un membro della struttura. | Stringhe |
In una struttura per riferimento (char[]). | Passa le stringhe in una struttura che è un parametro in/out. La funzione non gestita prevede un buffer di caratteri incorporati. | OSInfo |
In una classe per valore (char*). | Passa le stringhe in una classe (una classe è un parametro in/out). La funzione non gestita prevede un puntatore a un buffer di caratteri. | OpenFileDlg |
In una classe per valore (char[]). | Passa le stringhe in una classe (una classe è un parametro in/out). La funzione non gestita prevede un buffer di caratteri incorporati. | OSInfo |
Come matrice di stringhe per valore. | Crea una matrice di stringhe passata per valore. | Matrici |
Come matrice di strutture che contengono le stringhe per valore. | Crea una matrice di strutture che contengono le stringhe e la matrice viene passata per valore. | Matrici |
Vedi anche
Collabora con noi su GitHub
L'origine di questo contenuto è disponibile in GitHub, in cui è anche possibile creare ed esaminare i problemi e le richieste pull. Per ulteriori informazioni, vedere la guida per i collaboratori.