Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Низкая обработка буфера связана со многими проблемами безопасности, включающими переполнение буфера. Функции, определенные в Strsafe.h, обеспечивают дополнительную обработку буферов в коде. По этой причине они предназначены для замены встроенных аналогов C/C++, а также конкретных реализаций Windows. Strsafe.h доступен в пакете SDK для Windows, начиная с Windows XP с пакетом обновления 2 (SP2).
Преимущества функций Strsafe:
Размер целевого буфера всегда предоставляется функции, чтобы убедиться, что функция не записывает за пределы буфера.
Буферы гарантированно завершаются значением NULL, даже если операция усечет предполагаемый результат.
Все функции возвращают значение HRESULT с одним возможным кодом успешного возврата (S_OK).
Каждая функция доступна в соответствующей версии числа символов (cch) или числа байтов (cb).
Большинство функций имеют расширенную (ex) версию, доступную для расширенных функций.
Дополнительные сведения см. в следующих разделах.
Функции подсчета символов
В следующих функциях используется число символов, а не число байтов.
| Функция | Заменяет |
|---|---|
| , | |
Функции счетчика байтов
В следующих функциях используется число байтов, а не число символов.
| Функция | Заменяет |
|---|---|
Использование Strsafe.h
Чтобы использовать встроенные функции Strsafe, включите файл заголовка, как показано здесь, следуя инструкциям #include для всех остальных файлов заголовков.
#include <strsafe.h>Чтобы использовать функции в форме библиотеки, добавьте следующую инструкцию перед включением Strsafe.h. Однако рекомендуется использовать встроенные функции.
#define STRSAFE_LIBПримечание.
следующие функции должны использоваться в качестве встроенных функций: StringCbGets, StringCbGetsEx, StringCchGets и StringCchGetsEx.
При включении Strsafe.h в ваш файл старые функции, замененные функциями из Strsafe.h, будут объявлены устаревшими. Попытки использования этих старых функций приводят к ошибке компилятора, указывающее, что вы используете более новые функции. Если вы хотите переопределить это поведение, добавьте следующую инструкцию перед включением Strsafe.h.
#define STRSAFE_NO_DEPRECATEЧтобы разрешить только функции счетчика символов, добавьте следующую инструкцию перед включением Strsafe.h.
#define STRSAFE_NO_CB_FUNCTIONSЧтобы разрешить только функции счетчика байтов, добавьте следующую инструкцию перед включением Strsafe.h.
#define STRSAFE_NO_CCH_FUNCTIONSПримечание.
Можно определить STRSAFE_NO_CB_FUNCTIONS или STRSAFE_NO_CCH_FUNCTIONS, но не оба.
Некоторые функции Strsafe имеют версии с поддержкой локализации. По умолчанию заголовок не объявляет эти функции. Чтобы включить эти объявления, добавьте следующую инструкцию макроса перед включением Strsafe.h.
#define STRSAFE_LOCALE_FUNCTIONSМаксимальная поддерживаемая длина строки составляет 2 147 483 647 символов (STRSAFE_MAX_CCH), ANSI или Юникод.
Связанные темы