Compartilhar via


Função lstrcpynA (winbase.h)

Copia um número especificado de caracteres de uma cadeia de caracteres de origem em um buffer.

Aviso Não use. Considere usar StringCchCopy. Consulte Comentários.
 

Sintaxe

LPSTR lstrcpynA(
  [out] LPSTR  lpString1,
  [in]  LPCSTR lpString2,
  [in]  int    iMaxLength
);

Parâmetros

[out] lpString1

Tipo: LPTSTR

O buffer de destino, que recebe os caracteres copiados. O buffer deve ser grande o suficiente para conter o número de valores de TCHAR especificados por iMaxLength, incluindo espaço para um caractere nulo de terminação.

[in] lpString2

Tipo: LPCTSTR

A cadeia de caracteres de origem da qual a função deve copiar caracteres.

[in] iMaxLength

Tipo: int

O número de valores de TCHAR a serem copiados da cadeia de caracteres apontada por lpString2 para o buffer apontado por lpString1, incluindo um caractere nulo de terminação.

Valor de retorno

Tipo: LPTSTR

Se a função for bem-sucedida, o valor retornado será um ponteiro para o buffer. A função pode ter êxito mesmo se a cadeia de caracteres de origem for maior que caracteres iMaxLength.

Se a função falhar, o valor retornado será NULL e lpString1 poderá não ser encerrado em nulo.

Observações

O buffer apontado por lpString1 deve ser grande o suficiente para incluir um caractere nulo de terminação e o valor de comprimento da cadeia de caracteres especificado por iMaxLength inclui espaço para um caractere nulo de terminação.

A função lstrcpyn terá um comportamento indefinido se os buffers de origem e destino se sobrepõem.

Aviso de segurança

Usar essa função incorretamente pode comprometer a segurança do aplicativo. Essa função usa o SEH (tratamento de exceção estruturado) para capturar violações de acesso e outros erros. Quando essa função captura erros SEH, ela retorna NULL sem encerrar nulo a cadeia de caracteres e sem notificar o chamador do erro. O chamador não é seguro para assumir que espaço insuficiente é a condição de erro.

Se o buffer apontado por lpString1 não for grande o suficiente para conter a cadeia de caracteres copiada, poderá ocorrer uma sobrecarga de buffer. Ao copiar uma cadeia de caracteres inteira, observe que tamanho de retorna o número de bytes. Por exemplo, se lpString1 apontar para um buffer szString1 que é declarado como TCHAR szString[100], então sizeof(szString1) fornece o tamanho do buffer em bytes em vez de WCHAR, o que pode levar a um estouro de buffer para a versão Unicode da função.

Situações de estouro de buffer são a causa de muitos problemas de segurança em aplicativos e podem causar um ataque de negação de serviço contra o aplicativo se ocorrer uma violação de acesso. Na pior das hipóteses, uma sobrecarga de buffer pode permitir que um invasor insira código executável em seu processo, especialmente se lpString1 for um buffer baseado em pilha.

Usar sizeof(szString1)/sizeof(szString1[0]) fornece o tamanho adequado do buffer.

Considere o uso StringCchCopy; use StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);, esteja ciente de que buffer não deve ser um ponteiro ou usar StringCchCopy(buffer, ARRAYSIZE(buffer), src);, ciente de que, ao copiar para um ponteiro, o chamador é responsável por passar o tamanho da memória apontada para os caracteres.

Examine considerações de segurança: de interface do usuário do Windows antes de continuar.

Nota

O cabeçalho winbase.h define lstrcpyn como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winbase.h (inclua Windows.h)
biblioteca Kernel32.lib
de DLL Kernel32.dll

Consulte também

Conceitual

de referência de

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

stringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

stringCchCopyNEx

StringCchLength

cadeias de caracteres

lstrcmp

lstrcmpi

lstrlen