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


Функция RtlInitString (wdm.h)

Подпрограмма RtlInitString инициализирует подсчитываемую строку из 8-разрядных символов.

Синтаксис

NTSYSAPI VOID RtlInitString(
  [out]          PSTRING               DestinationString,
  [in, optional] __drv_aliasesMem PCSZ SourceString
);

Параметры

[out] DestinationString

Указатель на инициализируемые структуры STRING . Файл заголовка Ntdef.h определяет эту структуру как идентичную структуре ANSI_STRING .

[in, optional] SourceString

Указатель на символьную строку, завершаемую null. Эта строка используется для инициализации подсчитаемой строки, на которую указывает DestinationString.

Комментарии

Эта подпрограмма инициализирует строку со счетчиком символов.

Подпрограмма копирует значение указателя SourceString в элемент Buffer структуры STRING , на которую указывает DestinationString. Элемент Length этой структуры имеет длину исходной строки в байтах, за исключением завершающего значения NULL. Элементу MaximumLength структуры присваивается длина исходной строки в байтах, включая завершающее значение NULL. Если sourceString имеет значение NULL, параметр Length и MaximumLength равны нулю.

RtlInitString не изменяет исходную строку, на которую указывает SourceString.

Если исходная строка длиннее MAXUSHORT ( 1 байт), RtlInitString устанавливает элемент Length структуры STRING , на который указывает DestinationString , значение MAXUSHORT - 1, а член MaximumLength этой структуры — MAXUSHORT. В этом случае значения Length и MaximumLength искажают длину исходной строки, завершаемой null, и полагаться на точность этих значений потенциально опасно.

Вызывающие серверы RtlInitString могут выполняться в irQL <= DISPATCH_LEVEL, если буфер DestinationString недоступен для страницы. Как правило, вызывающие средства выполняются в irQL = PASSIVE_LEVEL так как большинство других подпрограмм RtlXxxString не могут быть вызваны на PASSIVE_LEVEL IRQL > .

Макрос RTL_CONSTANT_STRING создает строку или структуру строки в Юникоде для хранения подсчитаемой строки.

STRING RTL_CONSTANT_STRING(
  [in]  PCSZ SourceString
);

UNICODE_STRING RTL_CONSTANT_STRING(
  [in]  PCWSTR SourceString
);

RTL_CONSTANT_STRING возвращает либо строковую структуру, либо структуру строки в Юникоде.

Макрос RTL_CONSTANT_STRING заменяет подпрограммы RtlInitAnsiString, RtlInitString и RtlInitUnicodeString при передаче константной строки.

Для инициализации глобальных переменных можно использовать RTL_CONSTANT_STRING .

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL См. раздел "Примечания".

См. также раздел

ANSI_STRING