Compartir a través de


Función SHUnicodeToUnicode (shlwapi.h)

[Esta función está disponible a través de Windows XP y Windows Server 2003. Puede modificarse o no estar disponible en versiones posteriores de Windows.]

Copia una cadena Unicode.

Syntax

int SHUnicodeToUnicode(
  [in]  PCWSTR pwzSrc,
  [out] PWSTR  pwzDst,
        int    cwchBuf
);

Parámetros

[in] pwzSrc

Tipo: PCWSTR

Puntero a una cadena Unicode terminada en null que se va a copiar en el búfer de salida.

[out] pwzDst

Tipo: PWSTR

Puntero a un búfer de salida para recibir los caracteres copiados. El búfer debe ser lo suficientemente grande como para contener el número de caracteres WCHAR especificados por cwchBuf, incluido el espacio para un carácter nulo de terminación.

cwchBuf

Tipo: int

Número de caracteres WCHAR que puede contener el búfer al que apunta el parámetro pwzDst . Este parámetro debe ser mayor que cero.

Valor devuelto

Tipo: int

Devuelve el número de caracteres WCHAR escritos en el búfer de salida, incluido el carácter NULO de terminación. Devuelve 0 si no se realiza correctamente.

Observaciones

Advertencia de seguridad: El uso incorrecto de esta función puede poner en peligro la seguridad de la aplicación. Por ejemplo, si el búfer pwzDst no es lo suficientemente grande como para contener el número de caracteres especificados por cwchBuf, puede producirse una saturación del búfer. Los desbordamientos de búfer pueden provocar un ataque de denegación de servicio contra una aplicación si se produce una infracción de acceso. En el peor de los casos, una saturación de búfer podría permitir que un atacante inserte código ejecutable en el proceso, especialmente si pwzDst es un búfer basado en la pila. Al copiar una cadena completa, tenga en cuenta que sizeof devuelve el número de bytes, que no es el valor correcto que se va a usar para el parámetro cwchBuf . En su lugar, use sizeof(pwzDst)/sizeof(WCHAR). Tenga en cuenta que esta técnica supone que pwzDst es una matriz, no un puntero. Tenga en cuenta también que la función trunca silenciosamente la cadena de salida si el búfer no es lo suficientemente grande. Esto puede dar lugar a la canónica u otras vulnerabilidades de seguridad.

Si el búfer pwzDst no es lo suficientemente grande como para contener toda la cadena de salida convertida, la cadena se trunca para ajustarse al búfer. No hay ninguna manera de detectar que se ha truncado la cadena de devolución. La cadena siempre estará terminada en null, incluso si se ha truncado. Esto garantiza que no se copien más de caracteres cwchBuf en pwzDst. No se intenta evitar truncar la cadena en medio de un par suplente Unicode.

Si los búferes pwzSrc y pwzDst se superponen, el comportamiento de la función no está definido.

Nota No suponga que la función no ha cambiado ninguno de los caracteres del búfer de salida que siguen el carácter NULO de terminación de la cadena. El contenido del búfer de salida después del carácter NULO de terminación de la cadena no está definido, hasta el último carácter del búfer.
 
SHTCharToUnicode se define para que sea el mismo que SHUnicodeToUnicode.

SHUnicodeToTChar se define para que sea el mismo que SHUnicodeToUnicode.

Requisitos

Requirement Importancia
Cliente mínimo compatible Windows 2000 Professional, Windows XP [solo aplicaciones de escritorio]
Servidor mínimo admitido Windows 2000 Server, Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
Header shlwapi.h
Library mincore_downlevel.lib
DLL Shlwapi.dll (versión 5.0 o posterior)

Consulte también

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength