Compartilhar via


Função SHUnicodeToUnicode (shlwapi.h)

[Essa função está disponível por meio do Windows XP e do Windows Server 2003. Ele pode estar alterado ou indisponível nas versões subsequentes do Windows.]

Copia uma cadeia de caracteres Unicode.

Sintaxe

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

Parâmetros

[in] pwzSrc

Tipo: PCWSTR

Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo a ser copiada para o buffer de saída.

[out] pwzDst

Tipo: PWSTR

Um ponteiro para um buffer de saída para receber os caracteres copiados. O buffer deve ser grande o suficiente para conter o número de caracteres WCHAR especificados pelo cwchBuf, incluindo espaço para um caractere nulo de terminação.

cwchBuf

Tipo: int

O número de caracteres WCHAR que podem ser contidos pelo buffer apontado pelo parâmetro pwzDst . Esse parâmetro deve ser maior que zero.

Valor de retorno

Tipo: int

Retorna o número de caracteres WCHAR gravados no buffer de saída, incluindo o caractere nulo de encerramento. Retorna 0 se não tiver êxito.

Observações

Aviso de segurança: Usar essa função incorretamente pode comprometer a segurança do aplicativo. Por exemplo, se o buffer pwzDst não for grande o suficiente para conter o número de caracteres especificado pelo cwchBuf, poderá ocorrer uma sobrecarga de buffer. Os excessos de buffer podem causar um ataque de negação de serviço contra um aplicativo se ocorrer uma violação de acesso. Na pior das hipóteses, uma sobrecarga de buffer pode permitir que um invasor insira código executável em seu processo, especialmente se pwzDst for um buffer baseado em pilha. Ao copiar uma cadeia de caracteres inteira, observe que sizeof retorna o número de bytes, que não é o valor correto a ser usado para o parâmetro cwchBuf . Em vez disso, use sizeof(pwzDst)/sizeof(WCHAR). Observe que essa técnica pressupõe que pwzDst é uma matriz, não um ponteiro. Observe também que a função trunca silenciosamente a cadeia de caracteres de saída se o buffer não for grande o suficiente. Isso pode resultar em uma canonização ou outras vulnerabilidades de segurança.

Se o buffer pwzDst não for grande o suficiente para conter toda a cadeia de caracteres de saída convertida, a cadeia de caracteres será truncada para se ajustar ao buffer. Não há como detectar que a cadeia de caracteres de retorno foi truncada. A cadeia de caracteres sempre será terminada em nulo, mesmo que tenha sido truncada. Isso garante que não mais do que os caracteres cwchBuf sejam copiados para pwzDst. Nenhuma tentativa é feita para evitar truncar a cadeia de caracteres no meio de um par alternativo Unicode.

Se os buffers pwzSrc e pwzDst se sobrepõem, o comportamento da função será indefinido.

Nota Não suponha que a função não tenha alterado nenhum dos caracteres no buffer de saída que seguem o caractere nulo de encerramento da cadeia de caracteres. O conteúdo do buffer de saída após o término do caractere nulo da cadeia de caracteres é indefinido, até e incluindo o último caractere no buffer.
 
SHTCharToUnicode é definido como sendo o mesmo que SHUnicodeToUnicode.

SHUnicodeToTChar é definido como sendo o mesmo que SHUnicodeToUnicode.

Requirements

Requirement Value
Cliente mínimo suportado Windows 2000 Professional, Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo compatível Windows 2000 Server, Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
Header shlwapi.h
Library mincore_downlevel.lib
de DLL Shlwapi.dll (versão 5.0 ou posterior)

Consulte também

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength