Freigeben über


SHUnicodeToUnicode-Funktion (shlwapi.h)

[Diese Funktion ist über Windows XP und Windows Server 2003 verfügbar. Sie kann in nachfolgenden Versionen von Windows geändert oder nicht verfügbar sein.]

Kopiert eine Unicode-Zeichenfolge.

Syntax

int SHUnicodeToUnicode(
  [in]  PCWSTR pwzSrc,
  [out] PWSTR  pwzDst,
        int    cwchBuf
);

Die Parameter

[in] pwzSrc

Typ: PCWSTR-

Ein Zeiger auf eine mit Null beendete Unicode-Zeichenfolge, die in den Ausgabepuffer kopiert werden soll.

[out] pwzDst

Typ: PWSTR

Ein Zeiger auf einen Ausgabepuffer, um die kopierten Zeichen zu empfangen. Der Puffer muss groß genug sein, um die Anzahl der durch cwchBuf angegebenen WCHAR-Zeichen zu enthalten, einschließlich Platz für ein beendetes NULL-Zeichen.

cwchBuf

Typ: int

Die Anzahl der WCHAR-Zeichen , die vom Puffer enthalten sein können, auf den der pwzDst-Parameter verweist. Dieser Parameter muss größer als 0 sein.

Rückgabewert

Typ: int

Gibt die Anzahl der WCHAR-Zeichen zurück, die in den Ausgabepuffer geschrieben wurden, einschließlich des endenden Nullzeichens. Gibt 0 zurück, wenn dies nicht erfolgreich ist.

Bemerkungen

Sicherheitswarnung: Die Verwendung dieser Funktion kann die Sicherheit Ihrer Anwendung fälschlicherweise beeinträchtigen. Wenn beispielsweise der pwzDst-Puffer nicht groß genug ist, um die Anzahl der von cwchBuf angegebenen Zeichen zu enthalten, kann ein Pufferüberlauf auftreten. Pufferüberläufe können zu einem Denial-of-Service-Angriff auf eine Anwendung führen, wenn eine Zugriffsverletzung auftritt. Im schlimmsten Fall kann ein Pufferüberlauf einem Angreifer erlauben, 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 der Bytes zurückgibt, was nicht der richtige Wert ist, der für den cwchBuf-Parameter verwendet werden soll. 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 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, um den Puffer anzupassen. 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 kein Versuch unternommen, das Abschneiden der Zeichenfolge in der Mitte eines Unicode-Ersatzpaars zu vermeiden.

Wenn sich die pwzSrc - und pwzDst-Puffer überlappen, ist das Verhalten der Funktion nicht definiert.

Anmerkung Gehen Sie nicht davon aus, dass die Funktion keine Zeichen im Ausgabepuffer geändert hat, die auf das endende Nullzeichen der Zeichenfolge folgen. Der Inhalt des Ausgabepuffers nach dem endenden Nullzeichen der Zeichenfolge ist bis zum letzten Zeichen im Puffer und einschließlich des letzten Zeichens im Puffer nicht definiert.
 
SHTCharToUnicode ist so definiert, dass er mit SHUnicodeToUnicode identisch ist.

SHUnicodeToTChar ist so definiert, dass sie mit SHUnicodeToUnicode identisch ist.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 2000 Professional, Windows XP [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Windows 2000 Server, Windows Server 2003 [nur Desktop-Apps]
Zielplattform Fenster
Header shlwapi.h
Library mincore_downlevel.lib
DLL Shlwapi.dll (Version 5.0 oder höher)

Siehe auch

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength