Informazioni su Strsafe.h
La gestione del buffer insufficiente è implicata in molti problemi di sicurezza che comportano sovraccarichi del buffer. Le funzioni definite in Strsafe.h forniscono un'elaborazione aggiuntiva per la gestione corretta del buffer nel codice. Per questo motivo, sono destinati a sostituire le controparti C/C++ predefinite e specifiche implementazioni di Windows. Strsafe.h è disponibile in Windows SDK a partire da Windows XP con Service Pack 2 (SP2).
I vantaggi delle funzioni Strsafe includono:
Le dimensioni del buffer di destinazione vengono sempre fornite alla funzione per garantire che la funzione non venga scritta oltre la fine del buffer.
È garantito che i buffer vengano terminati con null, anche se l'operazione tronca il risultato previsto.
Tutte le funzioni restituiscono un valore HRESULT, con un solo codice di operazione riuscita (S_OK).
Ogni funzione è disponibile in una versione corrispondente del conteggio dei caratteri ("cch") o del numero di byte ("cb").
La maggior parte delle funzioni ha una versione estesa ("Ex") disponibile per le funzionalità avanzate.
Per altre informazioni, vedere le sezioni seguenti.
Funzioni conteggio caratteri
Le funzioni seguenti usano un conteggio dei caratteri anziché un conteggio dei byte.
Funzione | Sostituzioni |
---|---|
, | |
Funzioni conteggio byte
Le funzioni seguenti usano un conteggio dei byte anziché un conteggio dei caratteri.
Funzione | Sostituzioni |
---|---|
Uso di Strsafe.h
Per usare le funzioni Strsafe inline, includere il file di intestazione come illustrato di seguito, seguendo le istruzioni #include per tutti gli altri file di intestazione.
#include <strsafe.h>
Per usare le funzioni nel formato libreria, includere l'istruzione seguente prima di includere Strsafe.h. È tuttavia consigliabile usare le funzioni inline.
#define STRSAFE_LIB
Nota
: le funzioni seguenti devono essere usate come funzioni inline: StringCbGets, StringCbGetsEx, StringCchGets e StringCchGetsEx.
Quando si include Strsafe.h nel file, le funzioni precedenti sostituite dalle funzioni Strsafe.h verranno deprecate. I tentativi di usare queste funzioni meno recenti genereranno un errore del compilatore che indica di usare le funzioni più recenti. Se si vuole eseguire l'override di questo comportamento, includere l'istruzione seguente prima di includere Strsafe.h.
#define STRSAFE_NO_DEPRECATE
Per consentire solo le funzioni di conteggio dei caratteri, includere l'istruzione seguente prima di includere Strsafe.h.
#define STRSAFE_NO_CB_FUNCTIONS
Per consentire solo le funzioni di conteggio dei byte, includere l'istruzione seguente prima di includere Strsafe.h.
#define STRSAFE_NO_CCH_FUNCTIONS
Nota
È possibile definire STRSAFE_NO_CB_FUNCTIONS o STRSAFE_NO_CCH_FUNCTIONS, ma non entrambi.
Alcune funzioni Strsafe dispongono di versioni in grado di conoscere le impostazioni locali. Per impostazione predefinita, l'intestazione non dichiara queste funzioni. Per abilitare queste dichiarazioni, includere l'istruzione macro seguente prima di includere Strsafe.h.
#define STRSAFE_LOCALE_FUNCTIONS
La lunghezza massima supportata della stringa è di 2.147.483.647 (STRSAFE_MAX_CCH) caratteri, ANSI o Unicode.
Argomenti correlati