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.
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
StringCchLength