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 指针值复制到 DestinationString 指向的 STRING 结构的 Buffer 成员。 此结构的 Length 成员设置为源字符串的长度(以字节为单位),不包括终止 null。 结构的 MaximumLength 成员设置为源字符串的长度(以字节为单位),包括终止 null。 如果 SourceStringNULL则 LengthMaximumLength 都设置为零。

RtlInitString 不会更改 SourceString 指向的源字符串。

如果源字符串长于 MAXUSHORT - 1 个字节,RtlInitString 会将 DestinationString 指向的 STRING 结构的 Length 成员设置为 MAXUSHORT - 1,并将此结构的 MaximumLength 成员设置为 MAXUSHORT。 在这种情况下, LengthMaximumLength 值会错误表示以 null 结尾的源字符串的长度,并且依赖于这些值的准确性可能会造成潜在危险。

如果 DestinationString 缓冲区不可分页,则 RtlInitString 的调用方可以在 IRQL <= DISPATCH_LEVEL 运行。 通常,调用方在 IRQL = PASSIVE_LEVEL 运行,因为大多数其他 RtlXxx字符串 例程无法在 IRQL > PASSIVE_LEVEL调用。

RTL_CONSTANT_STRING 宏创建字符串或 Unicode 字符串结构来保存计数字符串。

STRING RTL_CONSTANT_STRING(
  [in]  PCSZ SourceString
);

UNICODE_STRING RTL_CONSTANT_STRING(
  [in]  PCWSTR SourceString
);

RTL_CONSTANT_STRING 返回字符串结构或 Unicode 字符串结构。

RTL_CONSTANT_STRING宏在传递常量字符串时替换 RtlInitAnsiStringRtlInitStringRtlInitUnicodeString 例程。

可以使用 RTL_CONSTANT_STRING 初始化全局变量。

要求

要求
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 请参见“备注”部分。

另请参阅

ANSI_STRING