RtlUnicodeStringToInteger 函数 (wdm.h)

RtlUnicodeStringToInteger 例程将数字的 Unicode 字符串表示形式转换为等效的整数值。

语法

NTSYSAPI NTSTATUS RtlUnicodeStringToInteger(
  [in]           PCUNICODE_STRING String,
  [in, optional] ULONG            Base,
  [out]          PULONG           Value
);

参数

[in] String

指向 UNICODE_STRING 结构的指针,该结构包含要转换为等效整数值的数字表示形式。

[in, optional] Base

一个数值,指示 Unicode 字符串表示的数字的基 (或基数) 。 此参数值是可选的,可以设置为零。

如果 Base 为零, 则 RtlUnicodeStringToInteger 检查 Unicode 字符串的前缀以确定数字的基数:

  • 如果前缀为“0x”, 则 RtlUnicodeStringToInteger 会将字符串中的数字解释为十六进制整数。

  • 如果前缀为“0o”, 则 RtlUnicodeStringToInteger 会将字符串中的数字解释为八进制整数。

  • 如果前缀为“0b”, 则 RtlUnicodeStringToInteger 会将字符串中的数字解释为二进制整数。

如果 Unicode 字符串不包含这些前缀中的任何一个, 则 RtlUnicodeStringToInteger 会将该字符串视为以 10 为底的整数。

[out] Value

指向 ULONG 变量的指针, RtlUnicodeStringToInteger 将 Unicode 字符串转换产生的整数值写入该变量。

返回值

如果转换成功, 则 RtlUnicodeStringToInteger 例程返回STATUS_SUCCESS并将 *Value 设置为由 Unicode 字符串中的数字表示的整数值。 如果字符串不为空,但不以有效的数字表示形式开头,则例程返回STATUS_SUCCESS并将 *Value 设置为零。 如果字符串为空,则例程将失败并返回STATUS_INVALID_PARAMETER。

注解

此例程跳过输入字符串开头的任何空格,以查找数字的开头。

如果字符串中的第一个非空格字符是连字符 ( ) ,则写入 *Value 的整数值为负;否则,如果第一个字符是“+”或没有符号字符,则写入 *Value 的整数值为正。

如果字符串不包含有效数字,或者字符串中的第一个数字前面有“+”或“-”以外的非空白字符,则例程会将输出值设置为零,并返回STATUS_SUCCESS。

包含一个或多个有效数字的子字符串由非有效数字的任何字符终止。 例如,如果 Base = 2,则有效数字为“0”和“1”。 如果 Base = 8,则有效数字为“0”到“7”。 如果 Base = 10,则有效数字为“0”到“9”。 如果 Base = 16,则有效数字为“0”到“9”、“a”到“f”和“A”到“F”。

下表包含输入字符串和 参数值的各种组合产生的输出值示例。

输入字符串 基本 输出值
"123" 10 123
"-345" 10 -345
“xyz” 10 0
“+678abc” 10 678
“+678abc” 16 6785724
"007" 10 7
"789" 8 7
“FGH” 16 15
" " 10 0

相关例程 RtlIntegerToUnicodeString 将整数值转换为等效的 Unicode 字符串表示形式。

要求

要求
目标平台 通用
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h)
Library NtosKrnl.lib (内核模式) ;Ntdll.lib (用户模式)
DLL NtosKrnl.exe (内核模式) ;Ntdll.dll (用户模式)
IRQL PASSIVE_LEVEL

另请参阅

RtlIntegerToUnicodeString

UNICODE_STRING