Fonction SHUnicodeToUnicode (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.]
Copie une chaîne Unicode.
Syntaxe
int SHUnicodeToUnicode(
[in] PCWSTR pwzSrc,
[out] PWSTR pwzDst,
int cwchBuf
);
Paramètres
[in] pwzSrc
Type : PCWSTR
Pointeur vers une chaîne Unicode terminée par null à copier dans la mémoire tampon de sortie.
[out] pwzDst
Type : PWSTR
Pointeur vers une mémoire tampon de sortie pour recevoir les caractères copiés. La mémoire tampon doit être suffisamment grande pour contenir le nombre de caractères WCHAR spécifiés par cwchBuf, y compris la place pour un caractère null de fin.
cwchBuf
Type : int
Nombre de caractères WCHAR pouvant être contenus par la mémoire tampon pointée par le paramètre pwzDst . Ce paramètre doit être supérieur à zéro.
Valeur retournée
Type : int
Retourne le nombre de caractères WCHAR écrits dans la mémoire tampon de sortie, 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 pwzDst 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 pwzDst est une mémoire tampon basée sur une 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(pwzDst)/sizeof(WCHAR). Notez que cette technique suppose que pwzDst est un tableau et non un pointeur. Notez également que la fonction tronque silencieusement la chaîne de sortie si la mémoire tampon n’est pas assez grande. Cela peut entraîner une canonisation ou d’autres vulnérabilités de sécurité.
Si la mémoire tampon pwzDst n’est pas assez grande pour contenir la chaîne de sortie convertie entière, 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 les caractères cwchBuf ne sont pas copiés dans pwzDst. Aucune tentative n’est effectuée pour éviter de tronquer la chaîne au milieu d’une paire de substitution Unicode.
Si les mémoires tampons pwzSrc et pwzDst se chevauchent, le comportement de la fonction n’est pas défini.
SHUnicodeToTChar est défini pour être identique à SHUnicodeToUnicode.
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
StringCchLength