Condividi tramite


funzione lstrcpynW (winbase.h)

Copia un numero specificato di caratteri da una stringa di origine in un buffer.

Avviso Non usare. Si consideri invece l'uso di StringCchCopy . Vedere la sezione Osservazioni.
 

Sintassi

LPWSTR lstrcpynW(
  [out] LPWSTR  lpString1,
  [in]  LPCWSTR lpString2,
  [in]  int     iMaxLength
);

Parametri

[out] lpString1

Tipo: LPTSTR

Buffer di destinazione, che riceve i caratteri copiati. Il buffer deve essere abbastanza grande per contenere il numero di valori TCHAR specificati da iMaxLength, inclusa la stanza per un carattere null terminante.

[in] lpString2

Tipo: LPCTSTR

Stringa di origine da cui la funzione deve copiare i caratteri.

[in] iMaxLength

Tipo: int

Numero di valori TCHAR da copiare dalla stringa a cui punta da lpString2 nel buffer a cui punta lpString1, incluso un carattere null terminante.

Valore restituito

Tipo: LPTSTR

Se la funzione ha esito positivo, il valore restituito è un puntatore al buffer. La funzione può avere esito positivo anche se la stringa di origine è maggiore di iMaxLength caratteri.

Se la funzione ha esito negativo, il valore restituito è NULL e lpString1 potrebbe non essere terminato null.

Commenti

Il buffer a cui punta per lpString1 deve essere sufficiente per includere un carattere null terminante e il valore di lunghezza stringa specificato da iMaxLength include la stanza per un carattere Null terminante.

La funzione lstrcpyn ha un comportamento non definito se i buffer di origine e di destinazione si sovrappongono.

Avviso di sicurezza

L'uso di questa funzione in modo errato può compromettere la sicurezza dell'applicazione. Questa funzione usa la gestione delle eccezioni strutturate (SEH) per rilevare violazioni di accesso e altri errori. Quando questa funzione rileva errori SEH, restituisce NULL senza terminazione null della stringa e senza inviare una notifica al chiamante dell'errore. Il chiamante non è sicuro per presupporre che lo spazio insufficiente sia la condizione di errore.

Se il buffer puntato a da lpString1 non è sufficiente per contenere la stringa copiata, può verificarsi un overrun del buffer. Quando si copia un'intera stringa, si noti che la dimensioneof restituisce il numero di byte. Ad esempio, se lpString1 punta a un buffer szString1 dichiarato come TCHAR szString[100], le dimensioni di szString1 offrono le dimensioni del buffer in byte anziché WCHAR, che potrebbero causare un overflow del buffer per la versione Unicode della funzione.

Le situazioni di overflow del buffer sono la causa di molti problemi di sicurezza nelle applicazioni e possono causare un attacco denial of service all'applicazione se si verifica una violazione di accesso. Nel caso peggiore, un overrun del buffer può consentire a un utente malintenzionato di inserire codice eseguibile nel processo, soprattutto se lpString1 è un buffer basato su stack.

L'uso sizeof(szString1)/sizeof(szString1[0]) offre le dimensioni appropriate del buffer.

Si consideri invece l'uso di StringCchCopy; StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);usare , essere consapevoli che non deve essere un puntatore o usare StringCchCopy(buffer, ARRAYSIZE(buffer), src);, essendo consapevole chebuffer, quando si copia in un puntatore, il chiamante è responsabile del passaggio delle dimensioni della memoria punta a memoria in caratteri.

Esaminare considerazioni sulla sicurezza: Interfaccia utente di Windows prima di continuare.

Nota

L'intestazione winbase.h definisce lstrcpyn come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Informazioni concettuali

Riferimento

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength

Stringhe

lstrcmp

lstrcmpi

lstrlen