fonction lstrcpyW (winbase.h)
Copie une chaîne dans une mémoire tampon.
Syntaxe
LPWSTR lstrcpyW(
[out] LPWSTR lpString1,
[in] LPCWSTR lpString2
);
Paramètres
[out] lpString1
Type : LPTSTR
Mémoire tampon pour recevoir le contenu de la chaîne pointée vers le paramètre lpString2 . La mémoire tampon doit être suffisamment grande pour contenir la chaîne, y compris le caractère null de fin.
[in] lpString2
Type : LPTSTR
Chaîne terminée par null à copier.
Valeur retournée
Type : LPTSTR
Si la fonction réussit, la valeur de retour est un pointeur vers la mémoire tampon.
Si la fonction échoue, la valeur de retour est NULL et lpString1 peut ne pas être terminé par null.
Remarques
Avec une version de jeu de caractères double octet (DBCS) du système, cette fonction peut être utilisée pour copier une chaîne DBCS.
La fonction lstrcpy a un comportement non défini si les tampons source et de destination se chevauchent.
Remarques sur la sécurité
L’utilisation incorrecte de cette fonction peut compromettre la sécurité de votre application. Cette fonction utilise la gestion structurée des exceptions (SEH) pour intercepter les violations d’accès et d’autres erreurs. Lorsque cette fonction intercepte les erreurs SEH, elle retourne NULL sans mettre fin à la chaîne null et sans notifier l’appelant de l’erreur. L’appelant n’est pas sûr de supposer qu’un espace insuffisant est la condition d’erreur.lpString1 doit être suffisamment grand pour contenir lpString2 et la fermeture « \0 », sinon un dépassement de mémoire tampon peut se produire.
Les situations de dépassement de mémoire tampon sont à l’origine de nombreux problèmes de sécurité dans les applications et peuvent entraîner une attaque par déni de service contre l’application en cas de violation d’accès. 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 lpString1 est une mémoire tampon basée sur la pile.
Envisagez plutôt d’utiliser StringCchCopy ; StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);
utilisez , sachant que buffer
ne doit pas être un pointeur ou utilisez StringCchCopy(buffer, ARRAYSIZE(buffer), src);
, sachant que, lors de la copie vers un pointeur, l’appelant est responsable du passage de la taille de la mémoire pointée en caractères.
Notes
L’en-tête winbase.h définit lstrcpy comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Configuration requise
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winbase.h (inclure Windows.h) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |
Voir aussi
Conceptuel
Référence