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 文字列が表す数値の基数 (または基数) を示す数値。 このパラメーター値は省略可能であり、0 に設定できます。

Base が 0 の場合、RtlUnicodeStringToInteger は Unicode 文字列のプレフィックスをチェックして、数値の基数を決定します。

  • プレフィックスが "0x" の場合、 RtlUnicodeStringToInteger は文字列内の数値を 16 進数の整数として解釈します。

  • プレフィックスが "0o" の場合、 RtlUnicodeStringToInteger は文字列内の数値を 8 進数として解釈します。

  • プレフィックスが "0b" の場合、 RtlUnicodeStringToInteger は文字列内の数値を 2 進整数として解釈します。

Unicode 文字列にこれらのプレフィックスが含まれていない場合、 RtlUnicodeStringToInteger は文字列を base-10 整数として扱います。

[out] Value

RtlUnicodeStringToInteger が Unicode 文字列の変換結果の整数値を書き込む ULONG 変数へのポインター。

戻り値

変換が成功した場合、 RtlUnicodeStringToInteger ルーチンは STATUS_SUCCESSを返し、*Value に Unicode 文字列の数値で表される整数値を設定します。 文字列が空ではなく、有効な数値表現で始まらない場合、ルーチンはSTATUS_SUCCESSを返し、*Value を 0 に設定します。 文字列が空の場合、ルーチンは失敗し、STATUS_INVALID_PARAMETERを返します。

注釈

このルーチンは、入力文字列の先頭にある空白をスキップして、数値の先頭を見つけます。

文字列の最初の空白以外の文字がハイフン (-) の場合、*Value に書き込まれる整数値は負の値になります。それ以外の場合、最初の文字が "+" の場合、または符号文字がない場合、*Value に書き込まれる整数値は正の値になります。

文字列に有効な数値が含まれていない場合、または文字列の最初の数字の前に '+' または '-' 以外の空白以外の文字が付いている場合、ルーチンは出力値を 0 に設定し、STATUS_SUCCESSを返します。

1 つ以上の有効な数字を含む部分文字列は、有効な数字ではない任意の文字で終了します。 たとえば、 Base = 2 の場合、有効な数字は '0' と '1' です。 Base = 8 の場合、有効な数字は '0' から '7' になります。 Base = 10 の場合、有効な数字は '0' から '9' になります。 Base = 16 の場合、有効な数字は '0' から '9'、'a' から 'f'、'A' から 'F' です。

次の表に、入力文字列と Base パラメーター値のさまざまな組み合わせによる出力値の例を示します。

入力文字列 ベース 出力値
"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 文字列表現に変換します。

要件

要件
対象プラットフォーム ユニバーサル
Header 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