Функция StringLengthFromUser (usermode_accessors.h)

The StringLengthFromUser function safely calculates the length of a null-terminated string in user-mode memory.

Syntax

SIZE_T StringLengthFromUser(
  const CHAR *String
);

Parameters

String

[in] Указатель на строку, завершаемую значением NULL, в памяти пользовательского режима.

Return value

Функция возвращает длину строки в символах, не включая завершающийся символ NULL.

Remarks

Эта функция обеспечивает безопасный доступ для вычисления длины строки, завершаемой значением NULL, расположенной в памяти пользовательского режима. Он предназначен для использования кодом в режиме ядра, который должен определить длину строк, передаваемых из приложений пользовательского режима.

Функция гарантирует, что строковый адрес является допустимым адресом пользовательского режима перед выполнением вычисления длины. При сбое операции возникает структурированное исключение, например, если адрес строки не является допустимым адресом в пользовательском режиме или недоступен.

В отличие от стандартных строковых функций, эта функция включает проверку, чтобы предотвратить сбои ядра при доступе к потенциально недопустимым указателям в пользовательском режиме. Это делает его важным для безопасного программирования ядра при обработке строковых данных в пользовательском режиме.

Эта функция работает во всех версиях Windows, а не только на последних версиях. You need to consume the latest WDK to get the function declaration from the usermode_accessors.h header. You also need the library (umaccess.lib) from the latest WDK. Однако результирующий драйвер будет работать в более ранних версиях Windows.

Requirements

Requirement Value
Минимальный поддерживаемый клиент See Remarks
Header usermode_accessors.h
Library umaccess.lib
IRQL Меньше или равно APC_LEVEL

See also

StringLengthFromMode

WideStringLengthFromUser