Partager via


fonction lstrcpyW (winbase.h)

Copie une chaîne dans une mémoire tampon.

Avertissement N’utilisez pas. Envisagez plutôt d’utiliser StringCchCopy . Consultez la section Notes.
 

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

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

Chaînes

lstrcmp

lstrcmpi

lstrlen