Condividi tramite


Funzione SHUnicodeToUnicode (shlwapi.h)

[Questa funzione è disponibile tramite Windows XP e Windows Server 2003. Potrebbe essere modificato o non disponibile nelle versioni successive di Windows.]

Copia una stringa Unicode.

Sintassi

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

Parametri

[in] pwzSrc

Tipo: PCWSTR

Puntatore a una stringa Unicode con terminazione Null da copiare nel buffer di output.

[out] pwzDst

Tipo: PWSTR

Puntatore a un buffer di output per ricevere i caratteri copiati. Il buffer deve essere sufficientemente grande da contenere il numero di caratteri WCHAR specificati da cwchBuf, incluso spazio per un carattere Null di terminazione.

cwchBuf

Tipo: int

Numero di caratteri WCHAR che possono essere contenuti nel buffer a cui punta il parametro pwzDst . Il valore del parametro deve essere maggiore di zero.

Valore restituito

Tipo: int

Restituisce il numero di caratteri WCHAR scritti nel buffer di output, incluso il carattere Null di terminazione. Restituisce 0 in caso di esito negativo.

Commenti

Avviso di sicurezza: L'uso di questa funzione in modo non corretto può compromettere la sicurezza dell'applicazione. Ad esempio, se il buffer pwzDst non è sufficientemente grande da contenere il numero di caratteri specificato da cwchBuf, può verificarsi un sovraccarico del buffer. I sovraccarichi del buffer possono causare un attacco Denial of Service a un'applicazione se si verifica una violazione di accesso. Nel peggiore dei casi, un sovraccarico del buffer potrebbe consentire a un utente malintenzionato di inserire codice eseguibile nel processo, soprattutto se pwzDst è un buffer basato su stack. Quando si copia un'intera stringa, si noti che sizeof restituisce il numero di byte, che non è il valore corretto da usare per il parametro cwchBuf . Usare invece sizeof(pwzDst)/sizeof(WCHAR). Si noti che questa tecnica presuppone che pwzDst sia una matrice, non un puntatore. Si noti anche che la funzione tronca automaticamente la stringa di output se il buffer non è sufficientemente grande. Ciò può comportare la canonizzazione o altre vulnerabilità di sicurezza.

Se il buffer pwzDst non è sufficientemente grande da contenere l'intera stringa di output convertita, la stringa viene troncata per adattarsi al buffer. Non è possibile rilevare che la stringa restituita è stata troncata. La stringa verrà sempre terminata con null, anche se è stata troncata. Ciò garantisce che non vengano copiati più caratteri cwchBuf in pwzDst. Non viene effettuato alcun tentativo di evitare di troncare la stringa al centro di una coppia di surrogati Unicode.

Se i buffer pwzSrc e pwzDst si sovrappongono, il comportamento della funzione non è definito.

Nota Non presupporre che la funzione non abbia modificato alcun carattere nel buffer di output che segue il carattere null di terminazione della stringa. Il contenuto del buffer di output che segue il carattere Null di terminazione della stringa non è definito, fino a e include l'ultimo carattere nel buffer.
 
SHTCharToUnicode viene definito come uguale a SHUnicodeToUnicode.

SHUnicodeToTChar è definito come uguale a SHUnicodeToUnicode.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional, Windows XP [solo app desktop]
Server minimo supportato Windows 2000 Server, Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shlwapi.h
DLL Shlwapi.dll (versione 5.0 o successiva)

Vedi anche

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength