Freigeben über


SHUnicodeToAnsi-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.]

Konvertiert eine Zeichenfolge von der Unicode-Codeseite in die ANSI-Codeseite.

Syntax

int SHUnicodeToAnsi(
  [in]  PCWSTR pwszSrc,
  [out] PSTR   pszDst,
        int    cchBuf
);

Die Parameter

[in] pwszSrc

Typ: PCWSTR-

Ein Zeiger auf die mit Null beendete Unicode-Zeichenfolge, die in ANSI konvertiert werden soll.

[out] pszDst

Typ: PSTR

Ein Zeiger auf einen Puffer, der, wenn diese Funktion erfolgreich zurückgegeben wird, die konvertierten Zeichen empfängt. Der Puffer muss groß genug sein, um die Anzahl von CHAR-Zeichen zu enthalten, die durch den cchBuf-Parameter angegeben sind, einschließlich Platz für ein beendetes NULL-Zeichen.

cchBuf

Typ: int

Die Anzahl der CHAR-Werte , die vom Puffer enthalten sein können, auf den pszDst verweist. Der dem Parameter zugewiesene Wert muss größer als Null sein.

Rückgabewert

Typ: int

Gibt die Anzahl der CHAR-Werte 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 z. B. der pszDst-Puffer nicht groß genug ist, um die Von cchBuf angegebene Anzahl von 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 es einem Angreifer ermöglichen, ausführbaren Code in Ihren Prozess einzufügen, insbesondere, wenn pszDst ein stapelbasierter Puffer ist. Darüber hinaus wird die Ausgabezeichenfolge im Hintergrund abgeschnitten, wenn sie für den Puffer zu groß ist. Dies kann zu Kanonisierung oder anderen Sicherheitsrisiken führen.

Wenn der pszDst-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. Diese Funktion sorgt dafür, dass die Lead- und Trailbytes eines DBCS-Zeichenpaars nicht abgeschnitten werden. In diesem Fall werden nur cchBuf-1 Zeichen zurückgegeben.

Wenn sich die pwszSrc - und pszDst-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.
 
SHTCharToAnsi ist so definiert, dass sie mit SHUnicodeToAnsi 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