Funzione RtlUnicodeStringToInteger (wdm.h)
La routine RtlUnicodeStringToInteger converte una rappresentazione di stringa Unicode di un numero nel valore intero equivalente.
Sintassi
NTSYSAPI NTSTATUS RtlUnicodeStringToInteger(
[in] PCUNICODE_STRING String,
[in, optional] ULONG Base,
[out] PULONG Value
);
Parametri
[in] String
Puntatore a una struttura UNICODE_STRING che contiene la rappresentazione numerica da convertire nel valore intero equivalente.
[in, optional] Base
Valore numerico che indica la base (o il numero radix) del numero rappresentato dalla stringa Unicode. Questo valore di parametro è facoltativo e può essere impostato su zero.
Se Base è zero, RtlUnicodeStringToInteger controlla il prefisso della stringa Unicode per determinare la base del numero:
Se il prefisso è "0x", RtlUnicodeStringToInteger interpreta il numero nella stringa come intero esadecimale.
Se il prefisso è "0o", RtlUnicodeStringToInteger interpreta il numero nella stringa come intero ottale.
Se il prefisso è "0b", RtlUnicodeStringToInteger interpreta il numero nella stringa come intero binario.
Se la stringa Unicode non contiene alcuno di questi prefissi, RtlUnicodeStringToInteger considera la stringa come integer base-10.
[out] Value
Puntatore a una variabile ULONG in cui RtlUnicodeStringToInteger scrive il valore intero risultante dalla conversione della stringa Unicode.
Valore restituito
Se la conversione ha esito positivo, la routine RtlUnicodeStringToInteger restituisce STATUS_SUCCESS e imposta *Value sul valore intero rappresentato dal numero nella stringa Unicode. Se la stringa non è vuota, ma non inizia con una rappresentazione numerica valida, la routine restituisce STATUS_SUCCESS e imposta *Value su zero. Se la stringa è vuota, la routine ha esito negativo e restituisce STATUS_INVALID_PARAMETER.
Commenti
Questa routine ignora gli spazi vuoti all'inizio della stringa di input per trovare l'inizio del numero.
Se il primo carattere non vuoto nella stringa è un trattino (-), il valore intero scritto in *Value è negativo; in caso contrario, se il primo carattere è "+" o non è presente alcun carattere di segno, il valore intero scritto in *Value è positivo.
Se la stringa non contiene un numero valido o se la prima cifra della stringa è preceduta da un carattere di spazio non vuoto diverso da '+' o '-', la routine imposta il valore di output su zero e restituisce STATUS_SUCCESS.
Una sottostringa che contiene una o più cifre valide viene terminata da qualsiasi carattere che non sia una cifra valida. Ad esempio, se Base = 2, le cifre valide sono '0' e '1'. Se Base = 8, le cifre valide sono da '0' a '7'. Se Base = 10, le cifre valide sono da '0' a '9'. Se Base = 16, le cifre valide sono da '0' a '9', 'a' a 'f' e 'A' a 'F'.
La tabella seguente contiene esempi di valori di output risultanti da varie combinazioni di stringhe di input e valori dei parametri di base .
Stringa di input | Base | Valore di output |
---|---|---|
"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 routine correlata , RtlIntegerToUnicodeString, converte un valore intero nella rappresentazione di stringa Unicode equivalente.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h) |
Libreria | NtosKrnl.lib (modalità kernel); Ntdll.lib (modalità utente) |
DLL | NtosKrnl.exe (modalità kernel); Ntdll.dll (modalità utente) |
IRQL | PASSIVE_LEVEL |