À propos de Strsafe.h
Une mauvaise gestion des mémoires tampons est impliquée dans de nombreux problèmes de sécurité qui impliquent des dépassements de mémoire tampon. Les fonctions définies dans Strsafe.h fournissent un traitement supplémentaire pour la gestion appropriée des mémoires tampons dans votre code. Pour cette raison, ils sont destinés à remplacer leurs équivalents C/C++ intégrés ainsi que des implémentations Windows spécifiques. Strsafe.h est disponible dans le Kit de développement logiciel (SDK) Windows à partir de Windows XP avec Service Pack 2 (SP2).
Les avantages des fonctions Strsafe sont les suivants :
La taille de la mémoire tampon de destination est toujours fournie à la fonction pour s’assurer que la fonction n’écrit pas au-delà de la fin de la mémoire tampon.
Les mémoires tampons sont garanties comme étant terminées par null, même si l’opération tronque le résultat prévu.
Toutes les fonctions retournent une valeur HRESULT, avec un seul code de réussite possible (S_OK).
Chaque fonction est disponible dans une version correspondante du nombre de caractères (« cch ») ou du nombre d’octets (« cb »).
La plupart des fonctions ont une version étendue (« Ex ») disponible pour les fonctionnalités avancées.
Pour plus d’informations, consultez les sections suivantes.
- Fonctions de nombre de caractères
- Fonctions de nombre d’octets
- Utilisation de Strsafe.h
- Rubriques connexes
Fonctions de nombre de caractères
Les fonctions suivantes utilisent un nombre de caractères plutôt qu’un nombre d’octets.
Fonction | Remplace |
---|---|
, | |
Fonctions de nombre d’octets
Les fonctions suivantes utilisent un nombre d’octets plutôt qu’un nombre de caractères.
Fonction | Remplace |
---|---|
Utilisation de Strsafe.h
Pour utiliser les fonctions Strsafe inline, incluez le fichier d’en-tête comme indiqué ici, en suivant les instructions #include pour tous les autres fichiers d’en-tête.
#include <strsafe.h>
Pour utiliser les fonctions sous forme de bibliothèque, incluez l’instruction suivante avant d’inclure Strsafe.h. Toutefois, il est recommandé d’utiliser les fonctions inline.
#define STRSAFE_LIB
Remarque
: Les fonctions suivantes doivent être utilisées comme fonctions inline : StringCbGets, StringCbGetsEx, StringCchGets et StringCchGetsEx.
Lorsque vous incluez Strsafe.h dans votre fichier, les anciennes fonctions remplacées par les fonctions Strsafe.h sont déconseillées. Les tentatives d’utilisation de ces fonctions plus anciennes entraînent une erreur du compilateur vous indiquant d’utiliser les fonctions plus récentes. Si vous souhaitez remplacer ce comportement, incluez l’instruction suivante avant d’inclure Strsafe.h.
#define STRSAFE_NO_DEPRECATE
Pour autoriser uniquement les fonctions de nombre de caractères, incluez l’instruction suivante avant d’inclure Strsafe.h.
#define STRSAFE_NO_CB_FUNCTIONS
Pour autoriser uniquement les fonctions de nombre d’octets, incluez l’instruction suivante avant d’inclure Strsafe.h.
#define STRSAFE_NO_CCH_FUNCTIONS
Remarque
Vous pouvez définir STRSAFE_NO_CB_FUNCTIONS ou STRSAFE_NO_CCH_FUNCTIONS, mais pas les deux.
Certaines fonctions Strsafe ont des versions prenant en charge les paramètres régionaux. Par défaut, l’en-tête ne déclare pas ces fonctions. Pour activer ces déclarations, incluez l’instruction macro suivante avant d’inclure Strsafe.h.
#define STRSAFE_LOCALE_FUNCTIONS
La longueur maximale de chaîne prise en charge est de 2 147 483 647 caractères (STRSAFE_MAX_CCH), ANSI ou Unicode.
Rubriques connexes