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。 如果 SourceString 为 NULL, 则 Length 和 MaximumLength 都设置为零。
RtlInitString 不会更改 SourceString 指向的源字符串。
如果源字符串长于 MAXUSHORT - 1 个字节,RtlInitString 会将 DestinationString 指向的 STRING 结构的 Length 成员设置为 MAXUSHORT - 1,并将此结构的 MaximumLength 成员设置为 MAXUSHORT。 在这种情况下, Length 和 MaximumLength 值会错误表示以 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宏在传递常量字符串时替换 RtlInitAnsiString、RtlInitString 和 RtlInitUnicodeString 例程。
可以使用 RTL_CONSTANT_STRING 初始化全局变量。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 请参见“备注”部分。 |