lstrcpyA-Funktion (winbase.h)
Kopiert eine Zeichenfolge in einen Puffer.
Syntax
LPSTR lstrcpyA(
[out] LPSTR lpString1,
[in] LPCSTR lpString2
);
Parameter
[out] lpString1
Typ: LPTSTR-
Ein Puffer, der den Inhalt der Zeichenfolge empfängt, auf die der lpString2 Parameter verweist. Der Puffer muss groß genug sein, um die Zeichenfolge zu enthalten, einschließlich des endenden Nullzeichens.
[in] lpString2
Typ: LPTSTR-
Die mit Null beendete Zeichenfolge, die kopiert werden soll.
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- möglicherweise nicht null beendet.
Bemerkungen
Mit einer DBCS-Version (Double-Byte Character Set) des Systems kann diese Funktion verwendet werden, um eine DBCS-Zeichenfolge zu kopieren.
Die lstrcpy--Funktion weist ein nicht definiertes Verhalten auf, wenn Quell- und Zielpuffer überlappen.
Sicherheitsmerkungen
Die Verwendung dieser Funktion kann die Sicherheit Ihrer Anwendung fälschlicherweise beeinträchtigen. Diese Funktion verwendet die strukturierte Ausnahmebehandlung (SEH), um Zugriffsverletzungen und andere Fehler abzufangen. Wenn diese Funktion SEH-Fehler abfangen, gibt sie NULL- zurück, ohne die Zeichenfolge zu beenden und ohne den Aufrufer des Fehlers zu benachrichtigen. Der Aufrufer kann nicht davon ausgehen, dass nicht genügend Speicherplatz die Fehlerbedingung ist.lpString1- muss groß genug sein, um lpString2- und das schließende "\0" zu halten, andernfalls kann ein Pufferüberlauf auftreten.
Pufferüberlaufsituationen sind die Ursache vieler 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 StringCchCopy-; verwenden Sie entweder StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);
, wobei sie sich bewusst ist, dass buffer
kein Zeiger sein darf oder StringCchCopy(buffer, ARRAYSIZE(buffer), src);
verwenden. Beachten Sie, dass der Aufrufer beim Kopieren in einen Zeiger dafür verantwortlich ist, die Größe des zeigerfähigen Speichers in Zeichen zu übergeben.
Anmerkung
Der winbase.h-Header definiert lstrcpy als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 2000 Professional [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | winbase.h (enthalten Windows.h) |
Library | Kernel32.lib |
DLL- | Kernel32.dll |
Siehe auch
Konzeptionelle
Referenz-