Compartir a través de


Función RtlUnicodeStringToInteger (wdm.h)

La rutina RtlUnicodeStringToInteger convierte una representación de cadena Unicode de un número en el valor entero equivalente.

Sintaxis

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

Parámetros

[in] String

Puntero a una estructura de UNICODE_STRING que contiene la representación numérica que se va a convertir en el valor entero equivalente.

[in, optional] Base

Valor numérico que indica la base (o radix) del número que representa la cadena Unicode. Este valor de parámetro es opcional y se puede establecer en cero.

Si Base es cero, RtlUnicodeStringToInteger comprueba el prefijo de la cadena Unicode para determinar la base del número:

  • Si el prefijo es "0x", RtlUnicodeStringToInteger interpreta el número de la cadena como un entero hexadecimal.

  • Si el prefijo es "0o", RtlUnicodeStringToInteger interpreta el número de la cadena como un entero octal.

  • Si el prefijo es "0b", RtlUnicodeStringToInteger interpreta el número de la cadena como un entero binario.

Si la cadena Unicode no contiene ninguno de estos prefijos, RtlUnicodeStringToInteger trata la cadena como un entero base-10.

[out] Value

Puntero a una variable ULONG a la que RtlUnicodeStringToInteger escribe el valor entero resultante de la conversión de la cadena Unicode.

Valor devuelto

Si la conversión se realiza correctamente, la rutina RtlUnicodeStringToInteger devuelve STATUS_SUCCESS y establece *Value en el valor entero representado por el número de la cadena Unicode. Si la cadena no está vacía, pero no comienza con una representación numérica válida, la rutina devuelve STATUS_SUCCESS y establece *Value en cero. Si la cadena está vacía, se produce un error en la rutina y devuelve STATUS_INVALID_PARAMETER.

Comentarios

Esta rutina omite cualquier espacio en blanco al principio de la cadena de entrada para buscar el inicio del número.

Si el primer carácter de espacio no en blanco de la cadena es un guión (-), el valor entero escrito en *Value es negativo; de lo contrario, si el primer carácter es "+" o no hay ningún carácter de signo, el valor entero escrito en *Value es positivo.

Si la cadena no contiene un número válido o si el primer dígito de la cadena va precedido por un carácter de espacio no en blanco distinto de '+' o '-', la rutina establece el valor de salida en cero y devuelve STATUS_SUCCESS.

Una subcadena que contiene uno o varios dígitos válidos finaliza con cualquier carácter que no sea un dígito válido. Por ejemplo, si Base = 2, los dígitos válidos son "0" y "1". Si Base = 8, los dígitos válidos son "0" a "7". Si Base = 10, los dígitos válidos son "0" a "9". Si Base = 16, los dígitos válidos son "0" a "9", "a" a "f" y "A" a "F".

En la tabla siguiente se incluyen ejemplos de valores de salida resultantes de varias combinaciones de cadenas de entrada y valores de parámetro base .

Cadena de entrada Base Valor de salida
"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

Una rutina relacionada, RtlIntegerToUnicodeString, convierte un valor entero en la representación de cadena Unicode equivalente.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)
Library NtosKrnl.lib (modo kernel); Ntdll.lib (modo de usuario)
Archivo DLL NtosKrnl.exe (modo kernel); Ntdll.dll (modo de usuario)
IRQL PASSIVE_LEVEL

Consulte también

RtlIntegerToUnicodeString

UNICODE_STRING