Informazioni su Strsafe.h

La gestione del buffer insufficiente è implicata in molti problemi di sicurezza che comportano l'overrun 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 loro controparti C/C++ predefinite e implementazioni specifiche 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 scrive oltre la fine del buffer.

  • I buffer devono essere terminati con valori Null, anche se l'operazione tronca il risultato previsto.

  • Tutte le funzioni restituiscono un valore HRESULT , con un solo codice di esito positivo possibile (S_OK).

  • Ogni funzione è disponibile in una versione corrispondente ("cch") o conteggio byte ("cb").

  • La maggior parte delle funzioni ha una versione estesa ("Ex") disponibile per funzionalità avanzate.

Per altre informazioni, vedere le sezioni seguenti.

Funzioni conteggio caratteri

Le funzioni seguenti usano un conteggio dei caratteri anziché un conteggio di byte.

Funzione Sostituisce
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
ottiene, _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

 

Funzioni conteggio byte

Le funzioni seguenti usano un conteggio di byte anziché un conteggio dei caratteri.

Funzione Sostituisce
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
ottiene, _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 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 precedenti 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 con riconoscimento delle 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 è 2.147.483.647 (STRSAFE_MAX_CCH), ovvero ANSI o Unicode.

Funzioni Strsafe