Informações sobre Strsafe.h
O manuseio inadequado do buffer está implicado em muitos problemas de segurança que envolvem saturações de buffer. As funções definidas em Strsafe.h fornecem processamento adicional para o tratamento adequado do buffer em seu código. Por esse motivo, eles se destinam a substituir suas contrapartes C/C++ internas, bem como implementações específicas do Windows. Strsafe.h está disponível no SDK do Windows a partir do Windows XP com Service Pack 2 (SP2).
As vantagens das funções do Strsafe incluem:
O tamanho do buffer de destino é sempre fornecido à função para garantir que a função não grave além do final do buffer.
Os buffers têm a garantia de serem terminados em nulo, mesmo que a operação trunce o resultado pretendido.
Todas as funções retornam um valor HRESULT , com apenas um código de êxito possível (S_OK).
Cada função está disponível em uma versão correspondente de contagem de caracteres ("cch") ou contagem de bytes ("cb").
A maioria das funções tem uma versão estendida ("Ex") disponível para funcionalidade avançada.
Confira as seções a seguir para obter detalhes.
- Funções de contagem de caracteres
- Funções de contagem de bytes
- Usando Strsafe.h
- Tópicos relacionados
Funções de contagem de caracteres
As funções a seguir usam uma contagem de caracteres em vez de uma contagem de bytes.
Função | Substitui |
---|---|
, | |
Funções de contagem de bytes
As funções a seguir usam uma contagem de bytes em vez de uma contagem de caracteres.
Função | Substitui |
---|---|
Usando Strsafe.h
Para usar as funções Strsafe embutidas, inclua o arquivo de cabeçalho conforme mostrado aqui, seguindo as instruções #include para todos os outros arquivos de cabeçalho.
#include <strsafe.h>
Para usar as funções no formato de biblioteca, inclua a seguinte instrução antes de incluir Strsafe.h. No entanto, é recomendável usar as funções embutidas.
#define STRSAFE_LIB
Observação
: As seguintes funções devem ser usadas como funções embutidas: StringCbGets, StringCbGetsEx, StringCchGets e StringCchGetsEx.
Quando você inclui Strsafe.h em seu arquivo, as funções mais antigas substituídas pelas funções Strsafe.h serão preteridas. As tentativas de usar essas funções mais antigas resultarão em um erro do compilador informando para você usar as funções mais recentes. Se você quiser substituir esse comportamento, inclua a seguinte instrução antes de incluir Strsafe.h.
#define STRSAFE_NO_DEPRECATE
Para permitir apenas funções de contagem de caracteres, inclua a instrução a seguir antes de incluir Strsafe.h.
#define STRSAFE_NO_CB_FUNCTIONS
Para permitir apenas funções de contagem de bytes, inclua a instrução a seguir antes de incluir Strsafe.h.
#define STRSAFE_NO_CCH_FUNCTIONS
Observação
Você pode definir STRSAFE_NO_CB_FUNCTIONS ou STRSAFE_NO_CCH_FUNCTIONS, mas não ambos.
Algumas funções do Strsafe têm versões com reconhecimento de localidade. Por padrão, o cabeçalho não declara essas funções. Para habilitar essas declarações, inclua a seguinte instrução de macro antes de incluir Strsafe.h.
#define STRSAFE_LOCALE_FUNCTIONS
O comprimento máximo de cadeia de caracteres com suporte é de 2.147.483.647 (STRSAFE_MAX_CCH) caracteres, ANSI ou Unicode.
Tópicos relacionados