Функция StringCbLength - это замена для функции strlen. Она используется, чтобы гарантировать, что строка не больше, чем данная длина, в байтах. Если это условие соблюдается, то StringCbLength возвращает текущую длину строки в байтах, не включая тех, которые используется для символа завершающего нуля.
HRESULT StringCbLength( LPCTSTR psz, size_t cbMax, size_t *pcb ); |
[in] Указатель на буфер, содержащий в себе строку, длина которой проверяется.
cbMax[in] Максимально допустимое число байтов в psz, включая и те, которые используются для символа завершающего нуля. Это значение не может выйти за пределы STRSAFE_MAX_CCH * sizeof (TCHAR).
pcb[out] Указатель на переменную типа size_t, содержащую число байтов в psz, исключая те, которые используются для символа завершающего нуля. Это значение применяется только тогда, если pcb - не нуль (пустой указатель), а функция завершается успешно.
Обратите внимание! на то, что функция возвращает значение HRESULT в противоположность функции strlen, которая возвращает целое число. Поэтому настоятельно рекомендуется, чтобы вы использовали макросы SUCCEEDED и FAILED для проверки возвращаемого значения этой функцией. |
Возвращаемое значение |
Описание |
S_OK | Строка в psz не была нулем (пустым указателем), а длина строки (включая символ завершающего нуля) меньше чем, или равна числу символов cbMax. |
STRSAFE_E_INVALID_PARAMETER | Значение в psz - NULL, cbMax больше, чем STRSAFE_MAX_CCH * sizeof (TCHAR), или psz более длиной, чем cbMax. |
Функция StringCbLength - дополнительное инструментальное средство для правильной обработки буфера в вашем коде. Плохая обработка буфера влечет за собой многие проблемы обеспечения безопасности, которые вызывают переполнение буфера.
Функция StringCbLength может быть использована в своей унифицированной форме, или специально как StringCbLengthA (для строк ANSI) или StringCbLengthW (для строк Unicode). Форма использования определяется вашими данными.
Тип данных строки |
Литерал строки |
Функция |
---|---|---|
char | "string" | StringCbLengthA |
TCHAR | TEXT("string") | StringCbLength |
WCHAR | L"string" | StringCbLengthW |
Обзор Строки, Функции, используемые строками, StringCchLength
Размещение и совместимость StringCbLength |
||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT Workstation | Да версии 3.1 |
е | Windows Me | Да |
н | Windows 98 | Да |
т | Windows 95 | Да |
С | Windows Server 2003 | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да версии 3.1 |
в | ||
е | ||
р | ||
Используемая библиотека | strsafe.lib | |
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в | strsafe.h | |
- включено в | - | |
Unicode | Реализуются как версии Unicode и ANSI. | |
Замечания по платформе | Не имеется |