Función DownlevelGetStringScripts

Proporciona una lista de scripts usados en la cadena Unicode especificada.

Nota:

Esta función solo la usan las aplicaciones que se ejecutan en sistemas operativos anteriores a Windows Vista. Su uso requiere el paquete de descarga. Las aplicaciones que solo se ejecutan en Windows Vista y versiones posteriores deben llamar a GetStringScripts.

 

Sintaxis

int DownlevelGetStringScripts(
  _In_  DWORD   dwFlags,
  _In_  LPCWSTR lpString,
  _In_  int     cchString,
  _Out_ LPWSTR  lpScripts,
  _In_  int     cchScripts
);

Parámetros

dwFlags [in]

Marcas que especifican opciones para la recuperación de scripts.

Value Significado
GSS_ALLOW_INHERITED_COMMON
Recupera la información de script "Qaii" (INHERITED) y "Zyyy" (COMMON). Este valor no afecta al procesamiento de caracteres sin asignar. Estos caracteres de la cadena de entrada siempre hacen que aparezca un "Zzzz" (script UNASSIGNED) en la cadena de script.

 

Nota:

De forma predeterminada, esta función omite los caracteres heredados o comunes de la cadena Unicode de entrada. Si no se establece GSS_ALLOW_INHERITED_COMMON, no aparecerán ni "Qaii" ni "Zyyy" en la cadena de script, aunque la cadena de entrada contenga dichos caracteres. Si se establece GSS_ALLOW_INHERITED_COMMON y si la cadena de entrada contiene caracteres heredados o comunes, aparecerán "Qaii" y/o "Zyyy" en la cadena de script. Consulte la sección Comentarios.

 

lpString [in]

Puntero a la cadena Unicode que se va a analizar.

cchString [in]

Tamaño, en caracteres, de la cadena Unicode indicada por lpString. La aplicación establece este parámetro en -1 si la cadena termina en null. Si la aplicación establece este parámetro en 0, la función recupera una cadena Unicode nula (L"\0") en lpScripts y devuelve 1.

lpScripts [out]

Puntero a un búfer en el que esta función recupera una cadena terminada en NULL que representa una lista de scripts, utilizando la notación de 4 caracteres usada en ISO 15924. Cada nombre de script consta de cuatro caracteres latinos y los nombres se recuperan en orden alfabético. Cada nombre, incluido el último, va seguido de un punto y coma.

Como alternativa, este parámetro puede contener NULL si cchScripts está establecido en 0. En este caso, la función devuelve el tamaño necesario para el búfer de script.

cchScripts [in]

Tamaño, en caracteres, para el búfer de script indicado por lpScripts.

Como alternativa, la aplicación puede establecer este parámetro en 0. En este caso, la función recupera NULL en lpScripts y devuelve el tamaño necesario para el búfer de script.

Valor devuelto

Devuelve el número de caracteres recuperados en el búfer de salida, incluido un carácter nulo de terminación, si se ejecuta correctamente y cchScripts se establece en un valor distinto de cero. La función devuelve 1 para indicar que no se ha encontrado ningún script, por ejemplo, cuando la cadena de entrada solo contiene caracteres COMMON o INHERITED y GSS_ALLOW_INHERITED_COMMON no se ha establecido. Dado que cada script encontrado agrega cinco caracteres (cuatro caracteres + un delimitador), una operación matemática simple proporciona el recuento de scripts como (return_code - 1) / 5.

Si la función se ejecuta correctamente y el valor de cchScripts es 0, el valor devuelto es el tamaño necesario, en caracteres, incluido un carácter NULL de terminación, para el búfer de script. El recuento de scripts es como se ha descrito anteriormente.

Esta función devuelve 0 si no se realiza correctamente. Para obtener más información de error, la aplicación puede llamar a GetLastError, que puede devolver uno de los siguientes códigos de error:

  • ERROR_BADDB. La función no pudo acceder a los datos. Esta situación no debería producirse normalmente y normalmente indica una instalación incorrecta, un problema de disco o similar.
  • ERROR_INSUFFICIENT_BUFFER. Un tamaño de búfer proporcionado no era lo suficientemente grande o se estableció incorrectamente en NULL.
  • ERROR_INVALID_FLAGS. Los valores proporcionados para las marcas no eran válidos.
  • ERROR_INVALID_PARAMETER. Uno de los valores de parámetro no era válido.

Comentarios

Esta función es útil como parte de una estrategia para mitigar los problemas de seguridad relacionados con nombres de dominio internacionalizados (IDN).

La determinación del script se basa en los valores de script publicados por el Consorcio Unicode en https://www.unicode.org/Public/4.1.0/ucd/Scripts.txt, salvo que los caracteres sin asignar tienen el valor "Zzzz" (UNASSIGNED) en lugar de "Zyyy" (COMMON).

A continuación, se muestran algunos ejemplos del comportamiento de esta función:

Cadena de entrada

dwFlags

lpScripts

Scripts

Microsoft.com

0

Latn;

Latín

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}$

Uses 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}$

Uses COMBINING TILDE

${ROWSPAN2}$Spооf${REMOVE}$

0053 0070 043e 043e 0066

${ROWSPAN2}$0${REMOVE}$

${ROWSPAN2}$Latn;Cyrl;${REMOVE}$

${ROWSPAN2}$Latin + Cyrillic${REMOVE}$

Uses CYRILLIC SMALL LETTER O

U+f000

0

Zzzz;

Sin asignar

U+f000

GSS_ALLOW_INHERITED_COMMON

Zzzz;

Sin asignar

 

El archivo de encabezado y DLL necesarios forman parte del "API de mitigación de nombres de dominio internacionalizados (IDN) de Microsoft" descarga disponible en archive.org.

Requisitos

Requisito Valor
Cliente mínimo compatible
Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2003 [solo aplicaciones de escritorio]
Redistribuible
API de mitigación de nombres de dominio internacionalizados (IDN) de Microsoft en Windows XP (SP2 o posterior), Windows Server 2003 (SP1 o posterior) o Windows Vista
Encabezado
Idndl.h
Archivo DLL
Idndl.dll

Consulte también

Compatibilidad con idiomas nacionales

Funciones de compatibilidad con el idioma nacional

Control de nombres de dominio internacionalizados (IDN)

DownlevelGetLocaleScripts

DownlevelVerifyScripts

GetStringScripts