lstrcpyW-Funktion (winbase.h)
Kopiert eine Zeichenfolge in einen Puffer.
Syntax
LPWSTR lstrcpyW(
[out] LPWSTR lpString1,
[in] LPCWSTR lpString2
);
Parameter
[out] lpString1
Typ: LPTSTR
Ein Puffer zum Empfangen des Inhalts der Zeichenfolge, auf die der lpString2-Parameter verweist. Der Puffer muss groß genug sein, um die Zeichenfolge zu enthalten, einschließlich des beendenden NULL-Zeichens.
[in] lpString2
Typ: LPTSTR
Die zu kopierende NULL-Zeichenfolge.
Rückgabewert
Typ: LPTSTR
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Zeiger auf den Puffer.
Wenn die Funktion fehlschlägt, ist der Rückgabewert NULL , und lpString1 ist möglicherweise nicht MIT NULL beendet.
Hinweise
Mit einer DBCS-Version (Double-Byte Character Set) des Systems kann diese Funktion zum Kopieren einer DBCS-Zeichenfolge verwendet werden.
Die lstrcpy-Funktion weist ein nicht definiertes Verhalten auf, wenn Sich Quell- und Zielpuffer überlappen.
Sicherheitsbemerkungen
Die falsche Verwendung dieser Funktion kann die Sicherheit Ihrer Anwendung gefährden. Diese Funktion verwendet die strukturierte Ausnahmebehandlung (Structured Exception Handling, SEH), um Zugriffsverletzungen und andere Fehler abzufangen. Wenn diese Funktion SEH-Fehler abfängt, gibt sie NULL zurück, ohne die Zeichenfolge mit NULL zu beenden und ohne den Aufrufer über den Fehler zu benachrichtigen. Der Aufrufer kann nicht davon ausgehen, dass unzureichender Speicherplatz die Fehlerbedingung ist.lpString1 muss groß genug sein, um lpString2 und das schließende "\0" aufzunehmen, andernfalls kann es zu einem Pufferüberlauf kommen.
Pufferüberlaufsituationen sind die Ursache für viele Sicherheitsprobleme in Anwendungen und können einen Denial-of-Service-Angriff auf die Anwendung verursachen, wenn eine Zugriffsverletzung auftritt. Im schlimmsten Fall kann ein Pufferüberlauf es einem Angreifer ermöglichen, ausführbaren Code in Ihren Prozess einzufügen, insbesondere wenn lpString1 ein stapelbasierter Puffer ist.
Erwägen Sie stattdessen die Verwendung von StringCchCopy . Verwenden Sie entweder StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);
, wenn Sie sich bewusst sind, dass buffer
kein Zeiger sein darf, oder verwenden Sie StringCchCopy(buffer, ARRAYSIZE(buffer), src);
, wobei Sie sich bewusst sind, dass der Aufrufer beim Kopieren auf einen Zeiger für die Übergabe der Größe des auf den Spitzspeicher in Zeichen verantwortlich ist.
Hinweis
Der winbase.h-Header definiert lstrcpy als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (einschließlich Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Konzept
Referenz
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für