Поделиться через


Импорт Kernel-Mode безопасных строковых функций

Начиная с Windows XP, библиотека безопасных строк в режиме ядра доступна в виде коллекции встроенных функций, определенных в файле заголовка Ntstrsafe.h.

Использование безопасных строковых функций в режиме ядра

Включите файл заголовка, как показано ниже.

#include <ntstrsafe.h>

Можно сделать доступными только функции строки с подсчетом байтов или только безопасные строковые функции с подсчетом символов.

Разрешение только функций с подсчетом байтов

Добавьте в код следующую строку перед включением файла заголовка Ntstrsafe.h.

#define NTSTRSAFE_NO_CCH_FUNCTIONS

Разрешение только функций с подсчетом символов

Добавьте в код следующую строку перед включением файла заголовка Ntstrsafe.h.

#define NTSTRSAFE_NO_CB_FUNCTIONS

Вы можете определить NTSTRSAFE_NO_CB_FUNCTIONS или NTSTRSAFE_NO_CCH_FUNCTIONS, но не оба.

Функции структуры UNICODE_STRING можно сделать недоступными.

Чтобы сделать функции структуры UNICODE_STRING недоступными

Добавьте в код следующую строку перед включением файла заголовка Ntstrsafe.h.

#define NTSTRSAFE_NO_UNICODE_STRING_FUNCTIONS

Максимальное число символов, которое может содержать любая строка ANSI или Юникод, равно NTSTRSAFE_MAX_CCH. Максимальное число символов, которое может содержать структура UNICODE_STRING , равно NTSTRSAFE_UNICODE_STRING_MAX_CCH. Эти константы определены в ntstrsafe.h.

Драйвер может назначать меньшие значения NTSTRSAFE_MAX_CCH и NTSTRSAFE_UNICODE_STRING_MAX_CCH, включив следующие строки в код перед включением ntstrsafe.h.

#define NTSTRSAFE_MAX_CCH  <new-value>
#define NTSTRSAFE_UNICODE_STRING_MAX_CCH  <new-value>

Директивы в Ntstrsafe.h проверяют, что новые значения не превышают значения по умолчанию.