Функция 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 - не нуль (пустой указатель), а функция завершается успешно.
Возвращаемое значение |
Описание |
| 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. | |
| Замечания по платформе | Не имеется | |