Share via


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.

Hinweis Gehen Sie nicht davon aus, dass die Funktion keines der Zeichen im Ausgabepuffer geändert hat, die auf das abschließende NULL-Zeichen der Zeichenfolge folgen. Der Inhalt des Ausgabepuffers, der auf das abschließende NULL-Zeichen der Zeichenfolge folgt, ist undefiniert, bis und einschließlich des letzten Zeichens im Puffer.
 
SHTCharToUnicode ist mit SHUnicodeToUnicode identisch.

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

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength