Funzione RtlStringCbCopyExA (ntstrsafe.h)
Le RtlStringCbCopyExW e RtlStringCbCopyExA copiano una stringa con conteggio byte in un buffer.
Sintassi
NTSTRSAFEDDI RtlStringCbCopyExA(
[out, optional] NTSTRSAFE_PSTR pszDest,
[in] size_t cbDest,
[in, optional] NTSTRSAFE_PCSTR pszSrc,
[out, optional] NTSTRSAFE_PSTR *ppszDestEnd,
[out, optional] size_t *pcbRemaining,
[in] DWORD dwFlags
);
Parametri
[out, optional] pszDest
Puntatore a un buffer fornito dal chiamante che riceve la stringa copiata. La stringa in pszSrc viene copiata nel buffer in corrispondenza pszDest e terminata con un carattere Null. Il puntatore pszDest
[in] cbDest
Dimensioni, in byte, del buffer di destinazione. Il buffer deve essere sufficientemente grande per la stringa 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 fornita dal chiamante. Il puntatore pszSrc
[out, optional] ppszDestEnd
Se il chiamante fornisce un puntatore nullNULL, al termine dell'operazione di copia, la funzione carica tale indirizzo con un puntatore al buffer di destinazione NULL terminatore di stringa.
[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, la stringa è stata copiata 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
RtlStringCbCopyExA e RtlStringCbCopyExW anziché le funzioni seguenti:
- strcpy
- wcscpy
Le dimensioni, in byte, del buffer di destinazione vengono fornite per RtlStringCbCopyExA e RtlStringCbCopyExW per assicurarsi che non vengano scritti oltre la fine del buffer.
RtlStringCbCopyEx aggiunge alla funzionalità di RtlStringCbCopy 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 RtlStringCbCopyExW per gestire stringhe Unicode e RtlStringCbCopyExA per gestire le stringhe ANSI. Il modulo utilizzato dipende dai dati, come illustrato nella tabella seguente.
Tipo di dati String | Valore letterale stringa | Funzione |
---|---|---|
WCHAR | L"string" | RtlStringCbCopyExW |
char | "string" | RtlStringCbCopyExA |
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 |