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 |