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


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

Подпрограмма RtlInitAnsiString инициализирует подсчитываемую строку символов ANSI.

Синтаксис

NTSYSAPI VOID RtlInitAnsiString(
  [out]          PANSI_STRING          DestinationString,
  [in, optional] __drv_aliasesMem PCSZ SourceString
);

Параметры

[out] DestinationString

Указатель на инициализируемый ANSI_STRING структуру.

[in, optional] SourceString

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

Возвращаемое значение

None

Remarks

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

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

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

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

Вызывающие функции RtlInitAnsiString могут выполняться в среде 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