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. Es posible que se modifique o no esté disponible en versiones posteriores de Windows.

Copia una cadena Unicode.

Sintaxis

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.

Comentarios

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, se puede producir una saturación del búfer. Las saturaciones 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 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 canonización 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 la cadena de devolución se ha truncado. 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 al carácter nulo de terminación de la cadena. El contenido del búfer de salida que sigue al carácter NULO de terminación de la cadena no está definido, hasta el último carácter del búfer e incluye el último carácter del búfer.
 
SHTCharToUnicode se define como el mismo que SHUnicodeToUnicode.

SHUnicodeToTChar se define como el mismo que SHUnicodeToUnicode.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional, Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server, Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shlwapi.h
Archivo DLL Shlwapi.dll (versión 5.0 o posterior)

Consulte también

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength