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


Импорт безопасных строковых функций 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 или Unicode, является 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 проверяют, что новые значения не превышают значения по умолчанию.