Marshaling de chaînes
L'appel de code non managé copie des paramètres de chaînes, en les convertissant du format .NET Framework (Unicode) au format non managé (ANSI), si nécessaire. Comme les chaînes managées sont immuables, l'appel de code non managé ne les recopie pas à partir de la mémoire non managée vers la mémoire managée au retour de fonction.
Le tableau suivant répertorie les options de marshaling pour les chaînes, décrit leur usage et fournit un lien vers l'exemple correspondant du .NET Framework.
String |
Description |
Exemple |
---|---|---|
Par valeur |
Passe des chaînes en tant que paramètres en entrée. |
|
Comme résultat. |
Retourne des chaînes à partir du code non managé. |
|
Par référence. |
Passe des chaînes en tant que paramètres en entrée/sortie à l'aide de StringBuilder. |
|
Dans une structure par valeur. |
Passe des chaînes dans une structure qui est un paramètre en entrée. |
|
Dans une structure par référence (char*). |
Passe des chaînes dans une structure qui est un paramètre en entrée/sortie. La fonction non managée nécessite un pointeur vers une mémoire tampon de caractères et la taille de la mémoire tampon fait partie de la structure. |
|
Dans une structure par référence (char[]). |
Passe des chaînes dans une structure qui est un paramètre en entrée/sortie. La fonction non managée nécessite une mémoire tampon de caractères incorporée. |
|
Dans une classe par valeur (char*). |
Passe des chaînes dans une classe (une classe est un paramètre en entrée/sortie). La fonction non managée nécessite un pointeur vers une mémoire tampon de caractères. |
|
Dans une classe par valeur (char[]). |
Passe des chaînes dans une classe (une classe est un paramètre en entrée/sortie). La fonction non managée nécessite une mémoire tampon de caractères incorporée. |
|
Comme tableau de chaînes par valeur. |
Crée un tableau de chaînes passé par valeur. |
|
Comme tableau de structures qui contient des chaînes par valeur. |
Crée un tableau de structures qui contient des chaînes. Le tableau est passé par valeur. |
Voir aussi
Concepts
Types de données d'appel de code non managé
Marshaling de classes, de structures, et d'unions
Marshaling des tableaux de types