SHAnsiToUnicode-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.]
Konvertiert eine Zeichenfolge von der ANSI-Codepage in die Unicode-Codepage.
Syntax
int SHAnsiToUnicode(
[in] PCSTR pszSrc,
[out] PWSTR pwszDst,
int cwchBuf
);
Parameter
[in] pszSrc
Typ: PCSTR
Ein Zeiger auf eine NULL-endende ANSI-Zeichenfolge, die in Unicode konvertiert werden soll.
[out] pwszDst
Typ: PWSTR
Ein Zeiger auf einen Puffer, der nach erfolgreicher Rückgabe dieser Funktion die von pszSrc angegebene Zeichenfolge empfängt, nachdem die ANSI-Zeichen in Unicode (WCHAR) konvertiert wurden. Der Puffer muss groß genug sein, um die Durch den cwchBuf-Parameter angegebene Anzahl von Unicode-Zeichen zu enthalten, einschließlich eines abschließenden NULL-Zeichens.
cwchBuf
Typ: int
Die Anzahl der Unicode-Zeichen, die der Puffer enthalten kann, auf den pwszDst verweist. Dieser Parameter muss größer als 0 (null) sein.
Rückgabewert
Typ: int
Gibt die Anzahl der Unicode-Zeichen zurück, die in pwszDst geschrieben wurden, 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 pwszDst-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 pwszDst 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(pwszDst)/sizeof(WCHAR). Beachten Sie, dass bei dieser Technik davon ausgegangen wird, dass pwszDst ein Array und kein Zeiger ist.
Wenn der pwszDst-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 ist immer NULL-beendet, auch wenn sie abgeschnitten wurde. Dadurch wird sichergestellt, dass nicht mehr als cwchBuf-Zeichen in pwszDst kopiert werden. Es wird nicht versucht, das Abschneiden der Zeichenfolge in der Mitte eines Unicode-Ersatzzeichenpaars zu vermeiden.
Wenn sich die Puffer pszSrc und pwszDst überlappen, ist das Verhalten der Funktion nicht definiert.
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