GetStringScripts-Funktion (winnls.h)
Stellt eine Liste der Skripts bereit, die in der angegebenen Unicode-Zeichenfolge verwendet werden.
Syntax
int GetStringScripts(
[in] DWORD dwFlags,
[in] LPCWSTR lpString,
[in] int cchString,
[out, optional] LPWSTR lpScripts,
[in] int cchScripts
);
Parameter
[in] dwFlags
Flags, die Optionen für den Skriptabruf angeben.
[in] lpString
Zeiger auf die zu analysierende Unicode-Zeichenfolge.
[in] cchString
Größe in Zeichen der unicode-Zeichenfolge, die von lpString angegeben wird. Die Anwendung legt diesen Parameter auf -1 fest, wenn die Unicode-Zeichenfolge NULL-beendet ist. Wenn die Anwendung diesen Parameter auf 0 festlegt, ruft die Funktion eine UNICODE-NULL-Zeichenfolge (L"\0") in lpScripts ab und gibt 1 zurück.
[out, optional] lpScripts
Zeiger auf einen Puffer, in dem diese Funktion eine NULL-Zeichenfolge abruft, die eine Liste von Skripts darstellt, wobei die in ISO 15924 verwendete 4-Zeichen-Notation verwendet wird. Jeder Skriptname besteht aus vier lateinischen Zeichen, und die Namen werden in alphabetischer Reihenfolge abgerufen. Jedem Namen, einschließlich des letzten, folgt ein Semikolon.
Alternativ enthält dieser Parameter NULL , wenn cchScripts auf 0 festgelegt ist. In diesem Fall gibt die Funktion die erforderliche Größe für den Skriptpuffer zurück.
[in] cchScripts
Größe des Skriptpuffers, der von lpScripts angegeben wird, in Zeichen.
Alternativ kann die Anwendung diesen Parameter auf 0 festlegen. In diesem Fall ruft die Funktion NULL in lpScripts ab und gibt die erforderliche Größe für den Skriptpuffer zurück.
Rückgabewert
Gibt die Anzahl der im Ausgabepuffer abgerufenen Zeichen zurück, einschließlich eines beendenden NULL-Zeichens, wenn erfolgreich und cchScripts auf einen Nonzero-Wert festgelegt ist. Die Funktion gibt 1 zurück, um anzugeben, dass kein Skript gefunden wurde, z. B. wenn die Eingabezeichenfolge nur COMMON- oder INHERITED-Zeichen enthält und GSS_ALLOW_INHERITED_COMMON nicht festgelegt ist. Da jedes gefundene Skript fünf Zeichen (vier Zeichen + Trennzeichen) hinzufügt, stellt ein einfacher mathematischer Vorgang die Skriptanzahl als (return_code - 1) / 5 bereit.
Wenn die Funktion erfolgreich ist und der Wert von cchScripts 0 ist, gibt die Funktion die erforderliche Größe in Zeichen zurück, einschließlich eines beendenden NULL-Zeichens, für den Skriptpuffer. Die Skriptanzahl ist wie oben beschrieben.
Diese Funktion gibt 0 zurück, wenn sie nicht erfolgreich ist. Um erweiterte Fehlerinformationen abzurufen, kann die Anwendung GetLastError aufrufen, wodurch einer der folgenden Fehlercodes zurückgegeben werden kann:
- ERROR_BADDB. Die Funktion konnte nicht auf die Daten zugreifen. Diese Situation sollte normalerweise nicht auftreten und weist in der Regel auf eine fehlerhafte Installation, ein Datenträgerproblem oder ähnliches hin.
- ERROR_INSUFFICIENT_BUFFER. Eine angegebene Puffergröße war nicht groß genug, oder sie wurde fälschlicherweise auf NULL festgelegt.
- ERROR_INVALID_FLAGS. Die für Flags angegebenen Werte waren ungültig.
- ERROR_INVALID_PARAMETER. Jeder der Parameterwerte war ungültig.
Hinweise
Diese Funktion ist als Teil einer Strategie nützlich, um Sicherheitsprobleme im Zusammenhang mit internationalisierten Domänennamen (IDNs) zu beheben.
Die Skriptermittlung basiert auf den Skriptwerten, die vom Unicode-Konsortium in http://www.unicode.org/Public/4.1.0/ucd/Scripts.txtveröffentlicht werden, mit dem Unterschied, dass die nicht zugewiesenen Zeichen den Wert "Zzzz" (UNASSIGNED) anstelle von "Zyyy" (COMMON) aufweisen.
Hier sind einige Beispiele für das Verhalten dieser Funktion:
Eingabezeichenfolge | dwFlags | lpScripts | Skripts | |
---|---|---|---|---|
Microsoft.com | 0 | Latn; | Lateinisch | |
Microsoft.com | GSS_ALLOW_INHERITED_COMMON | Latn; Zyyy; | Lateinisch + Allgemein | |
Niño | 004E 0069 0241 006F | GSS_ALLOW_INHERITED_COMMON | Latn; | Lateinisch |
VERWENDET LATEINISCHEN KLEINBUCHSTABEN N MIT TILDE | ||||
Niño | 004E 0069 006E 0303 006F | GSS_ALLOW_INHERITED_COMMON | Latn; Qaii; | Lateinisch + geerbt |
Verwendet COMBINING TILDE | ||||
Spооf | 0053 0070 043e 043e 0066 | 0 | Latn; Cyrl; | Lateinisch + Kyrillisch |
Verwendet CYRILLIC SMALL LETTER O | ||||
| U+f000 | 0 | Zzzz; | Nicht zugewiesen |
| U+f000 | GSS_ALLOW_INHERITED_COMMON | Zzzz; | Nicht zugewiesen |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | winnls.h (windows.h einschließen) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Umgang mit internationalisierten Domänennamen (IDNs)
Unterstützung für landessprachliche Sprachen