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 |