Fonction DownlevelGetStringScripts
Fournit la liste des scripts utilisés dans la chaîne Unicode spécifiée.
Remarque
Cette fonction est utilisée uniquement par les applications qui s’exécutent sur des systèmes d’exploitation pré-Windows Vista. Son utilisation nécessite le package de téléchargement. Les applications qui s’exécutent uniquement sur Windows Vista et versions ultérieures doivent appeler GetStringScripts.
Syntaxe
int DownlevelGetStringScripts(
_In_ DWORD dwFlags,
_In_ LPCWSTR lpString,
_In_ int cchString,
_Out_ LPWSTR lpScripts,
_In_ int cchScripts
);
Paramètres
-
dwFlags [in]
-
Indicateurs spécifiant les options de récupération de script.
Valeur Signification - GSS_ALLOW_INHERITED_COMMON
Récupérez les informations de script "Qaii" (INHERITED) et "Zyyy" (COMMON). Cette valeur n’affecte pas le traitement des caractères non attribués. Ces caractères dans la chaîne d’entrée provoquent toujours l’apparition d’un "Zzzz" (UNASSIGNED script) dans la chaîne de script. Remarque
Par défaut, cette fonction ignore tous les caractères hérités ou courants dans la chaîne Unicode d’entrée. Si GSS_ALLOW_INHERITED_COMMON n’est pas défini, ni "Qaii" ni "Zyyy" n’apparaissent dans la chaîne de script, même si la chaîne d’entrée contient de tels caractères. Si GSS_ALLOW_INHERITED_COMMON est défini et si la chaîne d’entrée contient des caractères hérités et/ou communs, "Qaii" et/ou "Zyyy" apparaissent dans la chaîne de script. Consultez la section Notes.
-
lpString [in]
-
Pointeur vers la chaîne Unicode à analyser.
-
cchString [in]
-
Taille, en caractères, de la chaîne Unicode indiquée par lpString. L’application définit ce paramètre sur -1 si la chaîne se termine par Null. Si l’application définit ce paramètre sur 0, la fonction récupère une chaîne Unicode Null (L"\0") dans lpScripts et retourne 1.
-
lpScripts [out]
-
Pointeur vers une mémoire tampon dans laquelle cette fonction récupère une chaîne terminée par Null représentant une liste de scripts, à l’aide de la notation de 4 caractères utilisée dans ISO 15924. Chaque nom de script se compose de quatre caractères latins et les noms sont récupérés par ordre alphabétique. Chacun nom, y compris le dernier, est suivi d’un point-virgule.
Ce paramètre peut également contenir NULL si cchScripts a la valeur 0. Dans ce cas, la fonction retourne la taille requise pour la mémoire tampon de script.
-
cchScripts [in]
-
Taille, en caractères, pour la mémoire tampon de script indiquée par lpScripts.
L’application peut également définir ce paramètre sur 0. Dans ce cas, la fonction récupère NULL dans lpScripts et retourne la taille requise pour la mémoire tampon de script.
Valeur retournée
Retourne le nombre de caractères récupérés dans la mémoire tampon de sortie, y compris un caractère null de fin, en cas de réussite et la valeur cchScripts est définie sur une valeur différente de zéro. La fonction retourne 1 pour indiquer qu’aucun script n’a été trouvé, par exemple, lorsque la chaîne d’entrée contient uniquement des caractères COMMON ou INHERITED et que GSS_ALLOW_INHERITED_COMMON n’est pas défini. Étant donné que chaque script trouvé ajoute cinq caractères (quatre caractères + délimiteur), une opération mathématique simple fournit le nombre de scripts en tant que (return_code - 1) / 5.
Si la fonction réussit et que la valeur de cchScripts est 0, la valeur de retour est la taille requise, en caractères incluant un caractère Null de fin, pour la mémoire tampon du script. Le nombre de scripts est décrit ci-dessus.
La fonction retourne 0 si elle ne réussit pas. Pour obtenir des informations d’erreur étendues, l’application peut appeler GetLastError, qui peut retourner l’un des codes d’erreur suivants :
- ERROR_BADDB. La fonction n’a pas pu accéder aux données. Cette situation ne doit pas se produire normalement et indique généralement une installation incorrecte, un problème de disque, etc.
- ERROR_INSUFFICIENT_BUFFER. Une taille de mémoire tampon fournie n’était pas suffisante, ou elle était incorrectement définie sur NULL.
- ERROR_INVALID_FLAGS. Les valeurs fournies pour les indicateurs n’étaient pas valides.
- ERROR_INVALID_PARAMETER. Toutes les valeurs de paramètre n’étaient pas valides.
Notes
Cette fonction est utile dans le cadre d’une stratégie pour atténuer les problèmes de sécurité liés aux noms de domaine internationaux (IDN).
La détermination du script est basée sur les valeurs de script publiées par l’Unicode Consortium dans https://www.unicode.org/Public/4.1.0/ucd/Scripts.txt, sauf que les caractères non attribués ont la valeur "Zzzz" (UNASSIGNED) au lieu de "Zyyy" (COMMON).
Voici quelques exemples du comportement de cette fonction :
Chaîne d’entrée
dwFlags
lpScripts
Scripts
Microsoft.com
0
Latn;
Latin
Microsoft.com
GSS_ALLOW_INHERITED_COMMON
Latn;Zyyy;
Latin + Common
${ROWSPAN2}$Niño${REMOVE}$
004E 0069 0241 006F
${ROWSPAN2}$GSS_ALLOW_INHERITED_COMMON${REMOVE}$
${ROWSPAN2}$Latn;${REMOVE}$
${ROWSPAN2}$Latin${REMOVE}$
Utilise LATIN SMALL LETTER N WITH TILDE
${ROWSPAN2}$Niño${REMOVE}$
004E 0069 006E 0303 006F
${ROWSPAN2}$GSS_ALLOW_INHERITED_COMMON${REMOVE}$
${ROWSPAN2}$Latn;Qaii;${REMOVE}$
${ROWSPAN2}$Latin + Inherited${REMOVE}$
Utilise COMBINING TILDE
${ROWSPAN2}$Spооf${REMOVE}$
0053 0070 043e 043e 0066
${ROWSPAN2}$0${REMOVE}$
${ROWSPAN2}$Latn;Cyrl;${REMOVE}$
${ROWSPAN2}$Latin + Cyrillic${REMOVE}$
Utilise CYRILLIC SMALL LETTER O
U+f000
0
Zzzz;
Non attribué
U+f000
GSS_ALLOW_INHERITED_COMMON
Zzzz;
Non attribué
Le fichier d’en-tête et la DLL requis font partie du téléchargement « API d’atténuation de nom de domaine international (IDN) Microsoft » disponible sur archive.org.
Spécifications
Condition requise | Value |
---|---|
Client minimal pris en charge |
Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows Server 2003 [applications de bureau uniquement] |
Composant redistribuable |
API d’atténuation du nom de domaine international (IDN) Microsoft sur Windows XP (SP2 ou version ultérieure), Windows Server 2003 (SP1 ou version ultérieure) ou Windows Vista |
En-tête |
|
DLL |
|
Voir aussi