Funzione RtlStringCbCatNExA (ntstrsafe.h)
Le
Sintassi
NTSTRSAFEDDI RtlStringCbCatNExA(
[in, out, optional] NTSTRSAFE_PSTR pszDest,
[in] size_t cbDest,
[in, optional] STRSAFE_PCNZCH pszSrc,
size_t cbToAppend,
[out, optional] NTSTRSAFE_PSTR *ppszDestEnd,
[out, optional] size_t *pcbRemaining,
[in] DWORD dwFlags
);
Parametri
[in, out, optional] pszDest
Puntatore a un buffer che, all'input, contiene una stringa con terminazione Null a cui pszSrc verrà concatenato. Nell'output si tratta del buffer di destinazione che contiene l'intera stringa risultante. La stringa in pszSrc, fino a cbMaxAppend byte, viene aggiunta alla fine della stringa in pszDeste terminata con un carattere Null. Il puntatore pszDest
[in] cbDest
Dimensioni del buffer di destinazione, in byte. Il buffer deve essere sufficientemente grande da includere entrambe le stringhe e il carattere Null di terminazione.
Per le stringhe Unicode, il numero massimo di byte è NTSTRSAFE_MAX_CCH * sizeof(WCHAR)
Per le stringhe ANSI, il numero massimo di byte è NTSTRSAFE_MAX_CCH * sizeof(char)
Se pszDest è NULL, cbDest deve essere zero.
[in, optional] pszSrc
Puntatore a una stringa con terminazione Null. Questa stringa verrà concatenata alla fine della stringa contenuta nel buffer in pszDest. Il puntatore pszSrc
cbToAppend
Numero massimo di byte da aggiungere a pszDest.
[out, optional] ppszDestEnd
Se il chiamante fornisce un puntatore NULL non
[out, optional] pcbRemaining
Se il chiamante fornisce un puntatore indirizzo NULL non
[in] dwFlags
Uno o più flag e, facoltativamente, un byte di riempimento. I flag sono definiti come segue:
Valore | Significato |
---|---|
STRSAFE_FILL_BEHIND_NULL | Se questo flag è impostato e la funzione ha esito positivo, viene usato il byte basso di dwFlags per riempire la parte del buffer di destinazione che segue il carattere Null di terminazione. |
STRSAFE_IGNORE_NULLS | Se questo flag è impostato, pszDest o pszSrco entrambi, può essere NULL. nullpszSrc puntatori vengono considerati come stringhe vuote (TEXT("")), che possono essere copiate. i puntatori nullpszDest non possono ricevere stringhe non vuoti. |
STRSAFE_FILL_ON_FAILURE | Se questo flag è impostato e la funzione ha esito negativo, viene usato il byte basso di dwFlags per riempire l'intero buffer di destinazione e il buffer viene terminato con null. Questa operazione sovrascrive qualsiasi contenuto preesistente del buffer. |
STRSAFE_NULL_ON_FAILURE | Se questo flag è impostato e la funzione ha esito negativo, il buffer di destinazione viene impostato su una stringa vuota (TEXT("")). Questa operazione sovrascrive qualsiasi contenuto preesistente del buffer. |
STRSAFE_NO_TRUNCATION |
Se questo flag è impostato e la funzione restituisce STATUS_BUFFER_OVERFLOW:
|
Valore restituito
La funzione restituisce uno dei valori NTSTATUS elencati nella tabella seguente. Per informazioni su come testare i valori NTSTATUS, vedere Uso di valori NTSTATUS.
Codice restituito | Descrizione |
---|---|
STATUS_SUCCESS | Questo esito positivo stato indica che i dati di origine erano presenti, le stringhe erano completamente concatenate senza troncamento e il buffer di destinazione risultante viene terminato con null. |
STATUS_BUFFER_OVERFLOW |
Questo avviso stato indica che l'operazione di copia non è stata completata a causa di spazio insufficiente nel buffer di destinazione. Se |
STATUS_INVALID_PARAMETER |
Questo errore stato indica che la funzione ha ricevuto un parametro di input non valido. Per altre informazioni, vedere il paragrafo seguente. La funzione restituisce il valore STATUS_INVALID_PARAMETER quando:
|
Osservazioni
RtlStringCbCatNExW e RtlStringCbCatNExA anziché le funzioni seguenti:
- strncat
- wcsncat
Le dimensioni, in byte, del buffer di destinazione vengono fornite per RtlStringCbCatNExW e RtlStringCbCatNExA per assicurarsi che non vengano scritti oltre la fine del buffer.
RtlStringCbCatNEx aggiunge alla funzionalità di RtlStringCbCatN restituendo un puntatore alla fine della stringa di destinazione e il numero di byte rimasti inutilizzati in tale stringa. I flag possono essere passati alla funzione per un controllo aggiuntivo.
Usare RtlStringCbCatNExW per gestire stringhe Unicode e RtlStringCbCatNExA per gestire le stringhe ANSI. Il modulo usato dipende dai dati, come illustrato nella tabella seguente.
Tipo di dati String | Valore letterale stringa | Funzione |
---|---|---|
WCHAR | L"string" | RtlStringCbCatNExW |
char | "string" | RtlStringCbCatNExA |
Se pszSrc e pszDest puntano a stringhe sovrapposte, il comportamento della funzione non è definito.
Né pszSrc né pszDest possono essere NULL a meno che non sia impostato il flag STRSAFE_IGNORE_NULLS, nel qual caso o entrambi possono essere NULL. Se pszDest è NULL, pszSrc deve essere NULL o puntare a una stringa vuota.
Per altre informazioni sulle funzioni della stringa sicura, vedere Uso di funzioni stringa sicure.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Windows XP con Service Pack 1 (SP1) e versioni successive di Windows. |
piattaforma di destinazione | Desktop |
intestazione |
ntstrsafe.h (include Ntstrsafe.h) |
libreria |
Ntstrsafe.lib |
IRQL | Qualsiasi se le stringhe modificate sono sempre residenti in memoria, altrimenti PASSIVE_LEVEL |