Funzione StringCbCatNA (strsafe.h)
Concatena il numero specificato di byte da una stringa a un'altra. Le dimensioni, in byte, del buffer di destinazione vengono fornite alla funzione per assicurarsi che non venga scritto oltre la fine di questo buffer.
StringCbCatN è una sostituzione delle funzioni seguenti:
Sintassi
STRSAFEAPI StringCbCatNA(
[in, out] STRSAFE_LPSTR pszDest,
[in] size_t cbDest,
[in] STRSAFE_PCNZCH pszSrc,
[in] size_t cbToAppend
);
Parametri
[in, out] pszDest
Tipo: LPTSTR
Buffer di destinazione che contiene la stringa da concatenare a pszSrc e riceverà la stringa risultante. La stringa in pszSrc, fino a cbMaxAppend byte, viene aggiunta alla fine della stringa in pszDest.
[in] cbDest
Tipo: size_t
Dimensioni del buffer di destinazione, in byte. Questo valore deve considerare la lunghezza di pszSrc più la lunghezza di pszDest o cbMaxAppend (minore) più il carattere null di terminazione. Il numero massimo di byte consentiti è STRSAFE_MAX_CCH * sizeof(TCHAR)
.
[in] pszSrc
Tipo: LPCTSTR
Stringa di origine da concatenare alla fine di pszDest. Questa stringa di origine deve essere con terminazione Null.
[in] cbToAppend
Tipo: size_t
Numero massimo di byte da aggiungere a pszDest.
Valore restituito
Tipo: HRESULT
Questa funzione può restituire uno dei valori seguenti. È consigliabile utilizzare le macro SUCCEEDED e FAILED per testare il valore restituito di questa funzione.
Codice restituito | Descrizione |
---|---|
|
I dati di origine erano presenti, le stringhe sono state concatenate senza troncamento e il buffer di destinazione risultante è con terminazione Null. |
|
Il valore in cbDest è maggiore del valore massimo consentito oppure il buffer di destinazione è già pieno. |
|
L'operazione di concatenazione non è riuscita a causa di spazio buffer insufficiente. Il buffer di destinazione contiene una versione con terminazione Null troncata del risultato previsto. Nelle situazioni in cui il troncamento è accettabile, questo potrebbe non essere necessariamente considerato come una condizione di errore. |
Si noti che questa funzione restituisce un valore HRESULT , a differenza delle funzioni che sostituisce.
Commenti
Rispetto alle funzioni che sostituisce, StringCbCatN fornisce un'elaborazione aggiuntiva per la gestione corretta del buffer nel codice. La gestione del buffer insufficiente è implicata in molti problemi di sicurezza che comportano sovraccarichi del buffer. StringCbCatN termina sempre null e non esegue mai l'overflow di un buffer di destinazione valido, anche se il contenuto della stringa di origine cambia durante l'operazione.
Il comportamento non è definito se le stringhe a cui punta pszSrc e pszDest si sovrappongono.
Né pszSrc né pszDest devono essere NULL. Vedere StringCbCatNEx se è necessaria la gestione dei valori del puntatore di stringa Null.
StringCbCatN può essere usato nel formato generico o nei moduli più specifici. Il tipo di dati della stringa determina la forma di questa funzione da usare.
Tipo di dati String | Stringhe letterali | Funzione |
---|---|---|
char | "stringa" | StringCbCatNA |
TCHAR | TEXT("string") | StringCbCatN |
WCHAR | L"string" | StringCbCatNW |
Nota
L'intestazione strsafe.h definisce StringCbCatN come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP con SP2 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 con SP1 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | strsafe.h |
Vedi anche
Riferimento