Acerca de Strsafe.h

El control deficiente del búfer está implicado en muchos problemas de seguridad que implican saturaciones del búfer. Las funciones definidas en Strsafe.h proporcionan procesamiento adicional para el control adecuado del búfer en el código. Por este motivo, están diseñados para reemplazar sus homólogos integrados de C/C++, así como implementaciones específicas de Windows. Strsafe.h está disponible en Windows SDK a partir de Windows XP con Service Pack 2 (SP2).

Las ventajas de las funciones de Strsafe incluyen:

  • El tamaño del búfer de destino siempre se proporciona a la función para asegurarse de que la función no escribe más allá del final del búfer.

  • Se garantiza que los búferes terminan en null, incluso si la operación trunca el resultado previsto.

  • Todas las funciones devuelven un valor HRESULT , con un solo código correcto posible (S_OK).

  • Cada función está disponible en una versión de recuento de caracteres ("cch") o recuento de bytes ("cb").

  • La mayoría de las funciones tienen una versión extendida ("Ex") disponible para la funcionalidad avanzada.

Vea las secciones siguientes para obtener información.

Funciones de recuento de caracteres

Las funciones siguientes usan un recuento de caracteres en lugar de un recuento de bytes.

Función Reemplaza
StringCchCat
StringCchCatEx
strcat, wcscat, _tcsat
lstrcat
StrCat
StrCatBuff
StringCchCatN
StringCchCatNEx
strncat
StrNCat
StringCchCopy
StringCchCopyEx
strcpy, wcscpy, _tcscpy
lstrcpy
Strcpy
StringCchCopyN
StringCchCopyNEx
strncpy, wcsncpy, _tcsncpy
StringCchGets
StringCchGetsEx
obtiene, _getws, _getts
StringCchPrintf
StringCchPrintfEx
sprintf, swprintf, _stprintf
wsprintf
wnsprintf
_snprintf, _snwprintf, _sntprintf
StringCchVPrintf
StringCchVPrintfEx
vsprintf, vswprintf, _vstprintf
vsnprintf, _vsnwprintf, _vsntprintf
wvsprintf
wvnsprintf
,
StringCchLength
strlen, wcslen, _tcslen

 

Funciones de recuento de bytes

Las funciones siguientes usan un recuento de bytes en lugar de un recuento de caracteres.

Función Reemplaza
StringCbCat
StringCbCatEx
strcat, wcscat, _tcsat
lstrcat
StrCat
StrCatBuff
StringCbCatN
StringCbCatNEx
strncat
StrNCat
StringCbCopy
StringCbCopyEx
strcpy, wcscpy, _tcscpy
lstrcpy
Strcpy
StringCbCopyN
StringCbCopyNEx
strncpy, wcsncpy, _tcsncpy
StringCbGets
StringCbGetsEx
obtiene, _getws, _getts
StringCbPrintf
StringCbPrintfEx
sprintf, swprintf, _stprintf
wsprintf
wnsprintf
_snprintf, _snwprintf, _sntprintf
StringCbVPrintf
StringCbVPrintfEx
vsprintf, vswprintf, _vstprintf
vsnprintf, _vsnwprintf, _vsntprintf
wvsprintf
wvnsprintf
StringCbLength
strlen, wcslen, _tcslen

 

Uso de Strsafe.h

  • Para usar las funciones de Strsafe insertadas, incluya el archivo de encabezado como se muestra aquí, siguiendo las instrucciones #include para todos los demás archivos de encabezado.

    #include <strsafe.h>

  • Para usar las funciones en formato de biblioteca, incluya la siguiente instrucción antes de incluir Strsafe.h. Sin embargo, se recomienda usar las funciones insertadas.

    #define STRSAFE_LIB

    Nota

    : las siguientes funciones se deben usar como funciones insertadas: StringCbGets, StringCbGetsEx, StringCchGets y StringCchGetsEx.

     

  • Cuando incluya Strsafe.h en el archivo, las funciones anteriores reemplazadas por las funciones Strsafe.h quedarán en desuso. Los intentos de usar estas funciones anteriores producirán un error del compilador que le indicará que use las funciones más recientes. Si desea invalidar este comportamiento, incluya la siguiente instrucción antes de incluir Strsafe.h.

    #define STRSAFE_NO_DEPRECATE

  • Para permitir solo funciones de recuento de caracteres, incluya la siguiente instrucción antes de incluir Strsafe.h.

    #define STRSAFE_NO_CB_FUNCTIONS

  • Para permitir solo funciones de recuento de bytes, incluya la siguiente instrucción antes de incluir Strsafe.h.

    #define STRSAFE_NO_CCH_FUNCTIONS

    Nota

    Puede definir STRSAFE_NO_CB_FUNCTIONS o STRSAFE_NO_CCH_FUNCTIONS, pero no ambos.

     

  • Algunas funciones de Strsafe tienen versiones compatibles con la configuración regional. De forma predeterminada, el encabezado no declara estas funciones. Para habilitar estas declaraciones, incluya la siguiente instrucción de macro antes de incluir Strsafe.h.

    #define STRSAFE_LOCALE_FUNCTIONS

  • La longitud máxima de cadena admitida es de 2 147 483 647 caracteres (STRSAFE_MAX_CCH), ya sea ANSI o Unicode.

Funciones de Strsafe