Partager via


Fonction SHAnsiToUnicode (shlwapi.h)

[Cette fonction est disponible via Windows XP et Windows Server 2003. Il peut être modifié ou indisponible dans les versions ultérieures de Windows.]

Convertit une chaîne de la page de codes ANSI en page de codes Unicode.

Syntaxe

int SHAnsiToUnicode(
  [in]  PCSTR pszSrc,
  [out] PWSTR pwszDst,
        int   cwchBuf
);

Paramètres

[in] pszSrc

Type : PCSTR

Pointeur vers une chaîne ANSI terminée par null à convertir en Unicode.

[out] pwszDst

Type : PWSTR

Pointeur vers une mémoire tampon qui, lorsque cette fonction retourne correctement, reçoit la chaîne spécifiée par pszSrc, une fois que les caractères ANSI ont été convertis en Unicode (WCHAR). La mémoire tampon doit être suffisamment grande pour contenir le nombre de caractères Unicode spécifié par le paramètre cwchBuf , y compris un caractère null de fin.

cwchBuf

Type : int

Nombre de caractères Unicode pouvant être contenus par la mémoire tampon pointée par pwszDst. Ce paramètre doit être supérieur à zéro.

Valeur retournée

Type : int

Retourne le nombre de caractères Unicode écrits dans pwszDst, y compris le caractère null de fin. Retourne 0 en cas d’échec.

Remarques

Avertissement de sécurité : L’utilisation incorrecte de cette fonction peut compromettre la sécurité de votre application. Par exemple, si la mémoire tampon pwszDst n’est pas assez grande pour contenir le nombre de caractères spécifié par cwchBuf, un dépassement de mémoire tampon peut se produire. Les dépassements de mémoire tampon peuvent entraîner une attaque par déni de service contre une application si une violation d’accès se produit. Dans le pire des cas, un dépassement de mémoire tampon peut permettre à un attaquant d’injecter du code exécutable dans votre processus, en particulier si pwszDst est une mémoire tampon basée sur la pile. Lors de la copie d’une chaîne entière, notez que sizeof retourne le nombre d’octets, qui n’est pas la valeur correcte à utiliser pour le paramètre cwchBuf . Utilisez plutôt sizeof(pwszDst)/sizeof(WCHAR). Notez que cette technique suppose que pwszDst est un tableau, et non un pointeur.

Si la mémoire tampon pwszDst n’est pas suffisamment grande pour contenir l’intégralité de la chaîne de sortie convertie, la chaîne est tronquée pour s’adapter à la mémoire tampon. Il n’existe aucun moyen de détecter que la chaîne de retour a été tronquée. La chaîne est toujours terminée par null, même si elle a été tronquée. Cela garantit que pas plus de caractères cwchBuf sont copiés dans pwszDst. Aucune tentative n’est effectuée pour éviter la troncation de la chaîne au milieu d’une paire de substitution Unicode.

Si les mémoires tampons pszSrc et pwszDst se chevauchent, le comportement de la fonction n’est pas défini.

Note Ne partez pas du principe que la fonction n’a modifié aucun des caractères de la mémoire tampon de sortie qui suivent le caractère null de fin de la chaîne. Le contenu de la mémoire tampon de sortie qui suit le caractère null de fin de la chaîne n’est pas défini, jusqu’au dernier caractère inclus dans la mémoire tampon.
 
SHAnsiToTChar est défini pour être identique à SHAnsiToUnicode.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel, Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server, Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête shlwapi.h
DLL Shlwapi.dll (version 5.0 ou ultérieure)

Voir aussi

MultiByteToWideChar

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength