Función GetStringScripts (winnls.h)

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

Sintaxis

int GetStringScripts(
  [in]            DWORD   dwFlags,
  [in]            LPCWSTR lpString,
  [in]            int     cchString,
  [out, optional] LPWSTR  lpScripts,
  [in]            int     cchScripts
);

Parámetros

[in] dwFlags

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

Valor Significado
GSS_ALLOW_INHERITED_COMMON
Recupere la información del script "Qaii" (HEREDADO) y "Zyyy" (COMMON). Esta marca no afecta al procesamiento de caracteres sin asignar. Estos caracteres de la cadena de entrada siempre hacen que aparezcan "Zzzz" (script UNASSIGNED) en la cadena de script.
 
Nota De forma predeterminada, GetStringScripts omite los caracteres heredados o comunes de la cadena de entrada indicada por lpString. Si no se establece GSS_ALLOW_INHERITED_COMMON, ni "Qaii" ni "Zyyy" aparecerán 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, "Qaii" o "Zyyy", respectivamente, aparecen en la cadena de script. Consulte la sección Comentarios.
 

[in] lpString

Puntero a la cadena Unicode que se va a analizar.

[in] cchString

Tamaño, en caracteres, de la cadena Unicode indicada por lpString. La aplicación establece este parámetro en -1 si la cadena Unicode 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.

[out, optional] lpScripts

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 contiene NULL si cchScripts está establecido en 0. En este caso, la función devuelve el tamaño necesario para el búfer de script.

[in] cchScripts

Tamaño, en caracteres, del 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 es correcto 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 está establecido. Dado que cada script encontrado agrega cinco caracteres (cuatro caracteres + 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, la función devuelve el tamaño necesario, en caracteres, incluido un carácter nulo 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 información de error extendida, 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 debe 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. Cualquiera 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 los nombres de dominio internacionalizados (IDN).

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

Estos son 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; Latino + Común
Niño 004E 0069 0241 006F GSS_ALLOW_INHERITED_COMMON Latn; Latín
Usa LATIN SMALL LETTER N WITH TILDE
Niño 004E 0069 006E 0303 006F GSS_ALLOW_INHERITED_COMMON Latn; Qaii; Latino + Heredado
Usa LA COMBINACIÓN DE TILDE
Spооf 0053 0070 043e 043e 0066 0 Latn; Cyrl; Latino + Cirílico
Usa LETRA PEQUEÑA CIRÍLICO O
U+f000 0 Zzzz; Sin asignar
U+f000 GSS_ALLOW_INHERITED_COMMON Zzzz; Sin asignar

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winnls.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

DownlevelGetStringScripts

Control de nombres de dominio internacionalizados (IDN)

Compatibilidad con idiomas nacionales

Funciones de compatibilidad con idiomas nacionales

VerifyScripts