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 指向的计数字符串。

返回值

备注

此例程初始化计数字符串。

例程将 SourceString 指针值复制到 DestinationString 指向的 ANSI_STRING 结构的 Buffer 成员。 此结构的 Length 成员设置为源字符串的长度(以字节为单位),不包括终止 null。 结构的 MaximumLength 成员设置为源字符串的长度(以字节为单位),包括终止 null。 如果 SourceStringNULL则 LengthMaximumLength 均设置为零。

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

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

如果 DestinationString 缓冲区不可分页,则 RtlInitAnsiString 的调用方可以在 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