Informacje o pliku Strsafe.h
Słaba obsługa buforu odpowiada za wiele problemów bezpieczeństwa, które obejmują przekroczenia buforu. Funkcje zdefiniowane w pliku Strsafe.h zapewniają dodatkowe przetwarzanie dla prawidłowej obsługi buforu w kodzie. Z tego powodu mają one zastąpić wbudowane odpowiedniki C/C++, a także określone implementacje systemu Windows. Plik Strsafe.h jest dostępny w zestawie Windows SDK, począwszy od systemu Windows XP z dodatkiem Service Pack 2 (SP2).
Zalety funkcji Strsafe obejmują:
Rozmiar buforu docelowego jest zawsze udostępniany funkcji, aby upewnić się, że funkcja nie zapisuje poza końcem buforu.
Bufory mają gwarantowane zakończenie zerem, nawet jeśli operacja obcina zamierzony wynik.
Wszystkie funkcje zwracają wartość HRESULT z tylko jednym możliwym kodem powodzenia (S_OK).
Każda funkcja jest dostępna w odpowiedniej wersji liczby znaków ("cch") lub liczby bajtów ("cb").
Większość funkcji ma rozszerzoną wersję ("Ex") dostępną dla zaawansowanych funkcji.
Szczegółowe informacje można znaleźć w poniższych sekcjach.
- funkcje liczby znaków
- funkcje liczby bajtów
- Używanie Strsafe.h
- Tematy pokrewne
Funkcje liczenia znaków
Poniższe funkcje używają liczby znaków, a nie liczby bajtów.
Funkcja | Zastępuje |
---|---|
|
|
, | |
Funkcje liczby bajtów
Poniższe funkcje używają liczby bajtów, a nie liczby znaków.
Funkcja | Zastępuje |
---|---|
|
|
Korzystanie z pliku Strsafe.h
Aby użyć wbudowanych funkcji Strsafe, dołącz plik nagłówka, jak pokazano tutaj, postępując zgodnie z instrukcjami #include dla wszystkich innych plików nagłówka.
#include <strsafe.h>
Aby użyć funkcji w kontekście biblioteki, należy dołączyć następującą instrukcję przed dołączeniem pliku Strsafe.h. Zaleca się jednak używanie funkcji wbudowanych.
#define STRSAFE_LIB
Notatka
: Następujące funkcje muszą być używane jako funkcje wbudowane: StringCbGets, StringCbGetsEx, StringCchGetsi StringCchGetsEx.
Gdy dołączysz Strsafe.h do swojego pliku, starsze funkcje zastąpione przez funkcje Strsafe.h będą uznane za przestarzałe. Próby użycia tych starszych funkcji spowodują błąd kompilatora informujący o użyciu nowszych funkcji. Jeśli chcesz zastąpić to zachowanie, dołącz następującą instrukcję przed dołączeniem pliku Strsafe.h.
#define STRSAFE_NO_DEPRECATE
Aby zezwolić tylko na funkcje liczby znaków, dołącz następującą instrukcję przed dołączeniem pliku Strsafe.h.
#define STRSAFE_NO_CB_FUNCTIONS
Aby zezwolić tylko na funkcje liczby bajtów, przed dołączeniem funkcji Strsafe.h uwzględnij następującą instrukcję.
#define STRSAFE_NO_CCH_FUNCTIONS
Notatka
Można zdefiniować STRSAFE_NO_CB_FUNCTIONS lub STRSAFE_NO_CCH_FUNCTIONS, ale nie obie.
Niektóre funkcje Strsafe mają wersje obsługujące ustawienia regionalne. Domyślnie nagłówek nie deklaruje tych funkcji. Aby włączyć te deklaracje, przed załączaniem pliku Strsafe.h dołącz następującą instrukcję makra.
#define STRSAFE_LOCALE_FUNCTIONS
Maksymalna obsługiwana długość ciągu to 2 147 483 647 (STRSAFE_MAX_CCH) znaków, ANSI lub Unicode.
Tematy pokrewne