RtlUnicodeStringToInteger-Funktion (wdm.h)

Die RtlUnicodeStringToInteger-Routine konvertiert eine Unicode-Zeichenfolgendarstellung einer Zahl in den entsprechenden ganzzahligen Wert.

Syntax

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

Parameter

[in] String

Ein Zeiger auf eine UNICODE_STRING-Struktur , die die Zahlendarstellung enthält, die in den entsprechenden ganzzahligen Wert konvertiert werden soll.

[in, optional] Base

Ein numerischer Wert, der die Basis (oder Radix) der Zahl angibt, die die Unicode-Zeichenfolge darstellt. Dieser Parameterwert ist optional und kann auf Null festgelegt werden.

Wenn Base null ist, überprüft RtlUnicodeStringToInteger das Präfix der Unicode-Zeichenfolge, um die Basis der Zahl zu bestimmen:

  • Wenn das Präfix "0x" lautet, interpretiert RtlUnicodeStringToInteger die Zahl in der Zeichenfolge als hexadezimale ganze Zahl.

  • Wenn das Präfix "0o" lautet, interpretiert RtlUnicodeStringToInteger die Zahl in der Zeichenfolge als oktale ganze Zahl.

  • Wenn das Präfix "0b" lautet, interpretiert RtlUnicodeStringToInteger die Zahl in der Zeichenfolge als binäre ganze Zahl.

Wenn die Unicode-Zeichenfolge keines dieser Präfixe enthält, behandelt RtlUnicodeStringToInteger die Zeichenfolge als ganze Zahl mit Basis 10.

[out] Value

Ein Zeiger auf eine ULONG-Variable, in die RtlUnicodeStringToInteger den ganzzahligen Wert schreibt, der sich aus der Konvertierung der Unicode-Zeichenfolge ergibt.

Rückgabewert

Wenn die Konvertierung erfolgreich ist, gibt die RtlUnicodeStringToInteger-Routine STATUS_SUCCESS zurück und legt *Value auf den ganzzahligen Wert fest, der durch die Zahl in der Unicode-Zeichenfolge dargestellt wird. Wenn die Zeichenfolge nicht leer ist, aber nicht mit einer gültigen Zahlendarstellung beginnt, gibt die Routine STATUS_SUCCESS zurück und legt *Wert auf 0 fest. Wenn die Zeichenfolge leer ist, schlägt die Routine fehl und gibt STATUS_INVALID_PARAMETER zurück.

Hinweise

Diese Routine überspringt alle Leerzeichen am Anfang der Eingabezeichenfolge, um den Anfang der Zahl zu finden.

Wenn das erste Nicht-Leerzeichen in der Zeichenfolge ein Bindestrich (-) ist, ist der ganzzahlige Wert, der in *Value geschrieben wird, negativ; andernfalls ist das erste Zeichen ein "+" oder kein Zeichenzeichen, ist der ganzzahlige Wert, der in *Wert geschrieben wird, positiv.

Wenn die Zeichenfolge keine gültige Zahl enthält oder der ersten Ziffer in der Zeichenfolge ein anderes Leerzeichen als "+" oder "-" vorangestellt ist, legt die Routine den Ausgabewert auf 0 fest und gibt STATUS_SUCCESS zurück.

Eine Teilzeichenfolge, die mindestens eine gültige Ziffer enthält, wird durch ein Zeichen beendet, das keine gültige Ziffer ist. Wenn beispielsweise Base = 2 ist, sind die gültigen Ziffern "0" und "1". Wenn Base = 8 ist, sind die gültigen Ziffern "0" bis "7". Wenn Base = 10 ist, sind die gültigen Ziffern "0" bis "9". Wenn Base = 16 ist, sind die gültigen Ziffern "0" bis "9", "a" bis "f" und "A" bis "F".

Die folgende Tabelle enthält Beispiele für Ausgabewerte, die sich aus verschiedenen Kombinationen von Eingabezeichenfolgen und Basisparameterwerten ergeben.

Eingabezeichenfolge Basis Ausgabewert
"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

Eine verwandte Routine, RtlIntegerToUnicodeString, konvertiert einen ganzzahligen Wert in die entsprechende Unicode-Zeichenfolgendarstellung.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)
Bibliothek NtosKrnl.lib (Kernelmodus); Ntdll.lib (Benutzermodus)
DLL NtosKrnl.exe (Kernelmodus); Ntdll.dll (Benutzermodus)
IRQL PASSIVE_LEVEL

Weitere Informationen

RtlIntegerToUnicodeString

UNICODE_STRING