Acerca de Strsafe.h
El control deficiente del búfer está implicado en muchos problemas de seguridad que implican saturaciones de 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).
Entre las ventajas de las funciones de Strsafe se 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 solo un código correcto posible (S_OK).
Cada función está disponible en una versión correspondiente 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
- Funciones de recuento de bytes
- Uso de Strsafe.h
- Temas relacionados
Funciones de recuento de caracteres
Las funciones siguientes usan un recuento de caracteres en lugar de un recuento de bytes.
Función | Sustituye a |
---|---|
, | |
Funciones de recuento de bytes
Las funciones siguientes usan un recuento de bytes en lugar de un recuento de caracteres.
Función | Sustituye a |
---|---|
Uso de Strsafe.h
Para usar las funciones 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 el formulario 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 funciones siguientes 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 indica que usa 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.
Temas relacionados