SHUnicodeToUnicode-Funktion (shlwapi.h)
[Diese Funktion ist über Windows XP und Windows Server 2003 verfügbar. In nachfolgenden Versionen von Windows ist sie möglicherweise geändert oder nicht verfügbar.]
Kopiert eine Unicode-Zeichenfolge.
Syntax
int SHUnicodeToUnicode(
[in] PCWSTR pwzSrc,
[out] PWSTR pwzDst,
int cwchBuf
);
Parameter
[in] pwzSrc
Typ: PCWSTR
Ein Zeiger auf eine Unicode-Zeichenfolge, die mit NULL beendet wird, die in den Ausgabepuffer kopiert werden soll.
[out] pwzDst
Typ: PWSTR
Ein Zeiger auf einen Ausgabepuffer zum Empfangen der kopierten Zeichen. Der Puffer muss groß genug sein, um die von cwchBuf angegebene Anzahl von WCHAR-Zeichen zu enthalten, einschließlich des Platzes für ein abschließendes NULL-Zeichen.
cwchBuf
Typ: int
Die Anzahl der WCHAR-Zeichen , die der Puffer enthalten kann, auf den der pwzDst-Parameter verweist. Dieser Parameter muss größer als 0 (null) sein.
Rückgabewert
Typ: int
Gibt die Anzahl der in den Ausgabepuffer geschriebenen WCHAR-Zeichen zurück, einschließlich des abschließenden NULL-Zeichens. Gibt 0 zurück, wenn der Fehler nicht erfolgreich ist.
Hinweise
Sicherheitswarnung: Die falsche Verwendung dieser Funktion kann die Sicherheit Ihrer Anwendung beeinträchtigen. Wenn der pwzDst-Puffer beispielsweise nicht groß genug ist, um die von cwchBuf angegebene Anzahl von Zeichen zu enthalten, kann es zu einem Pufferüberlauf kommen. Pufferüberläufe können einen Denial-of-Service-Angriff auf eine 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 pwzDst ein stapelbasierter Puffer ist. Beachten Sie beim Kopieren einer gesamten Zeichenfolge, dass sizeof die Anzahl von Bytes zurückgibt, was nicht der richtige Wert für den cwchBuf-Parameter ist. Verwenden Sie stattdessen sizeof(pwzDst)/sizeof(WCHAR). Beachten Sie, dass bei dieser Technik davon ausgegangen wird, dass pwzDst ein Array und kein Zeiger ist. Beachten Sie auch, dass die Funktion die Ausgabezeichenfolge automatisch abschneidet, wenn der Puffer nicht groß genug ist. Dies kann zu einer Kanonisierung oder anderen Sicherheitsrisiken führen.
Wenn der pwzDst-Puffer nicht groß genug ist, um die gesamte konvertierte Ausgabezeichenfolge zu enthalten, wird die Zeichenfolge abgeschnitten, damit sie dem Puffer entspricht. Es gibt keine Möglichkeit, zu erkennen, dass die Rückgabezeichenfolge abgeschnitten wurde. Die Zeichenfolge wird immer null beendet, auch wenn sie abgeschnitten wurde. Dadurch wird sichergestellt, dass nicht mehr als cwchBuf-Zeichen in pwzDst kopiert werden. Es wird nicht versucht, das Abschneiden der Zeichenfolge in der Mitte eines Unicode-Ersatzzeichenpaars zu vermeiden.
Wenn sich die Puffer pwzSrc und pwzDst überlappen, ist das Verhalten der Funktion nicht definiert.
SHUnicodeToTChar ist mit SHUnicodeToUnicode identisch.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional, Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server, Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | shlwapi.h |
DLL | Shlwapi.dll (Version 5.0 oder höher) |
Weitere Informationen
StringCchLength